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

Kerstin Traut Kerstin.Traut at uni-jena.de
Thu Jul 12 17:48:35 CEST 2012


Zitat von Roger Bivand <Roger.Bivand at nhh.no>:

> On Thu, 12 Jul 2012, Kerstin Traut wrote:
>
>> Zitat von Roger Bivand <Roger.Bivand at nhh.no>:
>>
>>> On Thu, 12 Jul 2012, Roger Bivand wrote:
>>>
>>>> On Thu, 12 Jul 2012, Kerstin Traut wrote:
>>>>
>>>>> Zitat von Roger Bivand <Roger.Bivand at nhh.no>:
>>>>>
>>>>>> On Thu, 12 Jul 2012, Kerstin Traut wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> 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 list-format.
>>>>>>> Is there a way to ignore NA-values in geary.test? Or how can I  
>>>>>>> set NA values in a neigbors (nb) list?
>>>>>>
>>>>>> The simple answer is to subset the variable of interest and the  
>>>>>> nb object to omit NA observations (which is what moran.test  
>>>>>> does internally). Alternatively, you could contribute a patch  
>>>>>> to geary.test(), if you like.
>>>>>>
>>>>>> Hope this helps,
>>>>>>
>>>>>> Roger
>>>>>
>>>>> Thanks for your answer. Unfortunately, I think that subsetting  
>>>>> is in my case not the right solution, because I need to define  
>>>>> the amount of neighbors in cell2nb on the basis of a rectangular  
>>>>> extent (e.g. 50 x 50 neighbors). Subsetting this extent by  
>>>>> deleting NA-values would destroy the nb list format required by  
>>>>> geary.test.
>>>>> Is there any solution for subsetting an nb list without  
>>>>> destroying the nb format?
>>>>
>>>> Yes, there are subset methods for nb and listw objects. To ensure  
>>>> data integrity, use dnearneigh() instead of cell2nb(), and use a  
>>>> SpatialPointsDataFrame to hold your data. In that way, you make  
>>>> sure that the subset condition is applied to the same observations.
>>>
>>> The latter advice may not work if your coordinates are planar and  
>>> you really mean to set torus=TRUE in cell2nb(). You'll have to get  
>>> the data order right by deconstructing the region.id attribute of  
>>> the nb object created by cell2nb() to ensure data integrity.
>>>
>>> Roger
>>
>> I already tested dnearneigh(), but I like to avoid this function  
>> because for large datasets cell2nb() calculates neighbors more  
>> quickly.
>> Thanks to your suggestion I was able to subset the nb list by using  
>> nb.subset(). But I could not find a suitable function for  
>> subsetting a listw. Using the subset() function results in the  
>> following error message: "Not yet able to subset general weights  
>> lists". Do you have an explaination?
>
> Yes, because the changes may not be appropriate, depending on how  
> the general weights were defined. In your case, subset the nb object  
> and the list of idw weights, and rebuild the listw object with the  
> subsetted objects.
>
> Roger

That´s what I already tried, but the error message says "neighbors and  
glist do not conform"??

Kerstin

>>
>> Kerstin
>>
>>
>>>>
>>>> Roger
>>>>
>>>>>
>>>>> Kind regards,
>>>>> Kerstin
>>>>>
>>>>>
>>>>>>> Thank you very much,
>>>>>>> Kerstin
>>>>>>>
>>>>>>> ---
>>>>>>>
>>>>>>> file<-raster(test.tif")
>>>>>>> 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")
>>>>>>> summary(unlist(nb.idw$weights))
>>>>>>>
>>>>>>> # Moran's test (two-sided)
>>>>>>> moran.global <- moran.test(value, listw=nb.idw, zero.policy =  
>>>>>>> TRUE, na.action=na.pass, alternative="two.sided")
>>>>>>> moran.global
>>>>>>>
>>>>>>> # Geary's test (two-sided)
>>>>>>> geary.global <- geary.test(value, listw=nb.idw, zero.policy =  
>>>>>>> TRUE , alternative="two.sided")
>>>>>>> geary.global
>>>>>>>
>>>>>>> ----------------------------------------------------------------
>>>>>>> This message was sent through https://webmail.uni-jena.de
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> R-sig-Geo mailing list
>>>>>>> R-sig-Geo at r-project.org
>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>>>>
>>>>>> -- 
>>>>>> Roger Bivand
>>>>>> Department of Economics, NHH Norwegian School of Economics,
>>>>>> Helleveien 30, N-5045 Bergen, Norway.
>>>>>> voice: +47 55 95 93 55; fax +47 55 95 95 43
>>>>>> e-mail: Roger.Bivand at nhh.no
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ----------------------------------------------------------------
>>>>> This message was sent through https://webmail.uni-jena.de
>>>>
>>>>
>>>
>>> -- 
>>> Roger Bivand
>>> Department of Economics, NHH Norwegian School of Economics,
>>> Helleveien 30, N-5045 Bergen, Norway.
>>> voice: +47 55 95 93 55; fax +47 55 95 95 43
>>> e-mail: Roger.Bivand at nhh.no
>>>
>>
>>
>>
>> ----------------------------------------------------------------
>> This message was sent through https://webmail.uni-jena.de
>
> -- 
> Roger Bivand
> Department of Economics, NHH Norwegian School of Economics,
> Helleveien 30, N-5045 Bergen, Norway.
> voice: +47 55 95 93 55; fax +47 55 95 95 43
> e-mail: Roger.Bivand at nhh.no
>



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



More information about the R-sig-Geo mailing list