[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