[R] How to handle NA-values in raster-based Geary´s C test?

Kerstin Traut Kerstin.Traut at uni-jena.de
Thu Jul 12 15:44:02 CEST 2012


I have a question on testing spatial autocorrelation on raster data  
including NA-values. In particular, I like to calculate Moran´s I and  
Geary´s C indices by using inverse distance weighting matrices.
Calculating Moran´s I with moran.test works fine, because the function  
contains the option "na.action=na.pass". Unfortunately, the function  
geary.test does not contain this option. The problem is that  
geary.test needs an nb argument for which I cannot perform for example  
nb<-ifelse(value, nb, NA), because it would change the nb-format to a  
Is there a way to ignore NA-values in geary.test? Or how can I set NA  
values in a neigbors (nb) list?

Thank you very much,


mask<-extent(file, 1, 50, 1, 50)
subset<-crop(file,mask,test.tif", overwrite=TRUE)
value <- as.matrix(subset)

# Creation of a list of integer vectors giving the region id numbers  
for the neighbors within the grid extent
nb <- cell2nb(50, 50, type="queen", torus=TRUE)

# Calculation of the distances along the links in the neighbous list
dist <- nbdists(nb, coordinates(subset), longlat=TRUE)

# Converting the distances to inverse distance values
inv.dist <- lapply(dist, function (x) 1/(x*100))

# Supplementing the neighbors list with spatial weights for a coding scheme
nb.idw <- nb2listw(nb, glist=inv.dist, style="W")

# Moran's test (two-sided)
moran.global <- moran.test(value, listw=nb.idw, zero.policy = TRUE,  
na.action=na.pass, alternative="two.sided")

# Geary's test (two-sided)
geary.global <- geary.test(value, listw=nb.idw, zero.policy = TRUE ,  

This message was sent through https://webmail.uni-jena.de

More information about the R-help mailing list