R语言:spdep包(空间数据分析与R语言实践)
在空间取样中位置越接近的点相应的变量也可能越相近,这种现象称为空间自相关。空间自相关能够改变人们对某些事物原因的判断。举例来说,一个地点物种数高,临近的点物种数也相应得会高些,但这并不一定是由于两个地点的环境条件都十分优越,而纯粹是由于两个地点之间在空间上更为接近。点与点之间空间关系的依赖性使得各点之间数据并不是独立的。
为此,需要从空间关系检验空间自相关是否存在。空间自相关的检验,用Moran’s I 表示。 Moran’s I 与Pearson相关系数的算法类似,不过其计算时相关程度考虑的是点与点本身。在R的ape程序包中,有关于Moran’s I的详细的说明。为了检验Moran’s I的显著性,空间统计学家运动Randomization的方法,获得Moran’s I的零分布,继而求的各距离段中的Moran’s I是否显著偏离于零分布。
为了尽量去除空间自相关的影响,统计学家开发出了空间自回归模型,SAR(Spatial Auto Regressive Model),该模型在R的spdep中能够较为方便的实现。当然,也还有众多的程序包,如宏生态学数据分析的SAM程序包等。
一下是在spdep程序包中如何计算和检验Moran’s I的详细过程,以及调用SAR模型,进行相应的统计推断等。希望对感兴趣的同行有所帮助。
################## library(spdep) ## 为了检验ntaxa是否具有空间自相关 setwd(“C:/one/”) test0 <- read.csv(“test.csv”, header = TRUE, ntaxa <- test0$ntaxa ## 将test数据集转换成Spatial格式 test <- test0[,c(1,2)] sptest <- SpatialPoints(test, proj4string = CRS(“+proj=longlat ## 计算每个点最近的几个neighbour(这里k = 1,表示只计算一个的) nbk1 <- knn2nb(knearneigh(sptest, k = 5, ## 将nbk1转换成 spatial weight linkage object 对象 snbk1 <- make.sym.nb(nbk1) ### n.comp.nb() finds the number of disjoint connected subgraphs ### in the graph depicted by nb.obj – a spatial neighbours list object. ### 查看每个点不相接的相邻点数量 n.comp.nb(snbk1)$nc ### 查看各点链接情况 plot(nb2listw(snbk1), cbind(test$longitude, ### Moran’s Test检验该数据集是否存在显著的空间自相关 ### Moran’s I test under randomisation moran.test(ntaxa, nb2listw(snbk1)) ### Moran’s I Correlograms ### par(mfrow = c(1, 3)) ntaxa.Moron.I <- sp.correlogram(snbk1, ntaxa, order=6, plot(ntaxa.Moron.I) ### SAR model ### Saddlepoint approximation for global Moran’s I (Barndorff-Nielsen formula) lm.morantest.sad(lm(ntaxa~1),nb2listw(snbk1)) ## sacsarlm COL.sacW.eig <- sacsarlm(ntaxa ~ Pre + Elev + factor(Time) + factor(Geology), data =test0, summary(COL.sacW.eig, correlation=TRUE) |
转载自:https://blog.csdn.net/zhangyangfeiyu/article/details/52936180