[R-sig-Geo] Inverse distance weights and spatial error model

Nikhil Kaza nikhil.list at gmail.com
Mon Feb 22 13:59:43 CET 2010



Your question would be better answered on r-sig-Geo list.  
Nevertheless, here is the solution

>> neigh.dist <- nbdists(neigh.nb, coords, longlat=TRUE)
>> inverse <- lapply(neigh.dist, function(x) (1/(x^2)))

Now instead use,
>> neigh.listw <- nb2listw(neigh.dist, glist=inverse,  
>> style="W",zero.policy=TRUE)

You have to use a nb object  to create the list.

Nikhil


On Feb 21, 2010, at 11:26 PM, Adam Boessen wrote:

> Hi Everyone,
> I'm new to R, so thank you in advance for your patience.  I'm using  
> US census block groups in Buffalo New York to examine how  
> neighborhood characteristics affect crime.  I would like to use an  
> inverse distance weights (distance decay) of block group centroids  
> that is banded at 1 kilometer.  In other words, I would like to  
> create a one kilometer buffer around each of the centroids, then use  
> row standardized inverse distance weights.  Finally, I would like to  
> run a spatial error model using these weights.
>
> Here is my code:
>> library(foreign)
>> library(spdep)
>>
>> buffalo <- read.dta("buffalo_blkgrps.dta")
>> attach(buffalo)
>> names(buffalo)
> [1] "bgidfp00"     "gage2900"     "gavghhinc00"  "gblack00"      
> "gcrwd00"
> [6] "gethhet00"    "ghhincsdln00" "glatino00"    "gocc00"        
> "gowner00"
> [11] "gpop00"       "gpov00"       "assaul"       "robber"        
> "burglr"
> [16] "motveh"       "murder"       "larcen"       "x"            "y"
>>
>> #distance based neighbors - making a neighbor list - bounded to 1  
>> kilometer
>> coords <-(cbind(x,y))
>> neigh.nb <- dnearneigh(coords, 0, 1, longlat=TRUE)
>> summary(neigh.nb)
> Neighbour list object:
> Number of regions: 409
> Number of nonzero links: 5298
> Percentage nonzero weights: 3.167126
> Average number of links: 12.95355
> 1 region with no links:
> 12
> Link number distribution:
>
> 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22  
> 23 24 25 26
> 1  1  3  3  4  5 14 25 28 23 19 26 32 44 29 24 29 25 24 13 15 12  3   
> 4  1  1  1
> 1 least connected region:
> 3 with 1 link
> 1 most connected region:
> 382 with 26 links
>>
>> #making inverse distance weights
>> neigh.dist <- nbdists(neigh.nb, coords, longlat=TRUE)
>> inverse <- lapply(neigh.dist, function(x) (1/(x^2)))
>>
>> #creating row standardized spatial weights from list
>> neigh.listw <- nb2listw(inverse, style="W",zero.policy=TRUE)
> Error in nb2listw(inverse, style = "W", zero.policy = TRUE) :
>  Not a neighbours list
>> traceback()
> 2: stop("Not a neighbours list")
> 1: nb2listw(inverse, style = "W", zero.policy = TRUE)
>>
>>
>> assault <- errorsarlm(assaul_r ~ gage2900 + gblack00 + gcrwd00 +  
>> gethhet00 + ghhincsdln00 + glatino00 + gocc00+ gowner00 + gpov00,
> + data=buffalo,listw=neigh.listw, zero.policy=TRUE)
> Error in eval(expr, envir, enclos) : object 'assaul_r' not found
>
> The model will run when I do not include the code with the inverse  
> weights and only interpoint distances, but it's unclear to me why I  
> can't include the inverse distances when using nb2listw.  Any ideas  
> on why this is occurring and/or help to alleviate this issue would  
> be much appreciated.  The spatial error model from errorsarlm  
> (package=spdep) will also run fine when I don't include the inverse  
> weights.  Is there a better way to go about running this spatial  
> error model using row standardized inverse distance weights?   Would  
> spautolm from the spdep package be better suited for these data?   
> Any comments or suggestions are welcome.
> Thank you for your time!
>
> Adam
>
> Adam Boessen
> Doctoral Student
> Department of Criminology, Law and Society
> University of California, Irvine
> aboessen at uci.edu
>
> p.s. If it's helpful, here is my version of R:
>> version
>               _
> platform       i386-apple-darwin9.8.0
> arch           i386
> os             darwin9.8.0
> system         i386, darwin9.8.0
> status
> major          2
> minor          10.1
> year           2009
> month          12
> day            14
> svn rev        50720
> language       R
> version.string R version 2.10.1 (2009-12-14)
>
>
>
>
> 	[[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo



More information about the R-sig-Geo mailing list