Skip to content

distribution of distance for lags (spdep package)

2 messages · Horacio, Roger Bivand

#
Dear R-geo people,

I just discovered the beauty of the spdep package to make spatial 
analysis of point data easier... However, as I am climbing the learning 
curve I have a question regarding the estimation of the the lag in the 
Moran and/or corelogram function.

As I understand, if the you generate a neighbor-list using the 
knearneigh 
<http://finzi.psych.upenn.edu/R/library/spdep/html/knearneigh.html> 
function you get a 'knn' class of the points I k distance apart. Then 
when you calculate the Moran's I (at least that's what I did) you get 
the Lag in terms of the number of links which in practical purposes is 
k. so, the first correlation value (od Moran's I) is the obtained by 
comaring all the sites that have a direct link between them, then, the 
second lag does it in terms of the ones that are 2 links apart and so on...

My question is perhaps very simple... How can I generate a list to plot 
the distribution of distances for each lag? I thought nbdists could do 
it, but are not sure how to go about it...


thank you



Horacio
#
On Tue, 3 Oct 2006, Horacio wrote:

            
You are on the right track. Here is an example:

data(columbus)
col.lags <- nblag(col.gal.nb, 4)
# to get a list of neighbour lists at increasing lags
ldists <- lapply(col.lags, function(x) nbdists(x, coords))
# to get a list of lists of distances
ldists1 <- lapply(ldists, unlist)
# to flatten the list to contain vectors of distances, as shown by:
str(ldists1)
# but note that each link is included, both i-j and j-i
sapply(ldists1, summary)
# for example will give a summary or more complicated:
dens <- lapply(ldists1, function(x) density(x, bw=0.1, from=0, to=3.1))
plot(c(0,3.1), c(0,max(sapply(dens, function(x) max(x$y)))), type="n", 
  xlab="distance", ylab="density")
lapply(1:4, function(i) lines(dens[[i]]$x, dens[[i]]$y, lty=i))

for a density plot.

Thanks for the question, I can see that summary.nb() needs a rewrite which 
would have made this a bit easier.

Roger