计算moran的问题我测试了空间自相关

时间:2015-06-28 14:41:56

标签: r

我在使用R计算Moran I测试空间自相关时遇到问题。

我做了以下事情:

#I download all the appropriate libraries 

    library(maptools) 
    library(spdep) 
    library(splancs) 
    library(spatstat)
    library(pwt)

#i import my shapefile and I calculate the coordinates
serbia<-readShapePoly("SRB_adm1")
coords<-coordinates(serbia)


#i created a weigthed matrix using the above definition of neigbour(dnb60 object)
dnb60.listw<-nb2listw(dnb60,style="W", zero.policy=F)

#i import my dataset which contains around 500 variables and is a firm level dataset containing 2373 firms.
library(foreign)
statafile<-read.dta("path", missing.type = T, warn.missing.labels = T) 

#i combine the shapefile(serbia) with the imported dataset(statafile) and created file with coordiantes (new) using common variable ID_1(region code). My final dataset is data_total.
new<- cbind(coordinates(serbia), serbia$ID_1)
newdata <- data.frame(new)
names(newdata)<-c("X", "Y", "ID_1")
cis_08_10 <- merge(statafile, serbia, by="ID_1", all.x=T)
data_total<-merge(cis_08_10, newdata, by="ID_1",all.x=T)

我对最终数据集prod_ser中特定变量data_total的计算Moran I测试感兴趣。

我做了以下事情:

#calculating Moran I test
moran.test(data_total$prod_ser, dnb60.listw, randomisation=F)
I get the following error: Error in moran.test(data_total$prod_ser, dnb60.listw, randomisation = F) : 
  objects of different length

现在,data_total$prod_ser的长度为2373,dnb60.listw的长度为3.我认为主要问题是W矩阵是使用包含25个区域的serbia shapefile创建的,而prod_ser变量是来自data_total的公司级变量,有2373家公司(我认为应该对应于点数据,公司是点数)。

为什么合并数据集没有帮助?如果没有这个错误,我还需要做些什么来计算Moran I?

1 个答案:

答案 0 :(得分:0)

嗯!你自己发现了问题。这正是你得到这样的错误的原因。 &#39; dnb60.listw&#39;基于数据集塞尔维亚,因为您使用的是数据总数&#39;在moran.test公式中你得到这样的错误。您应首先合并数据,然后估算&#39; dnb60.listw&#39;根据合并的数据然后计算出Moran I。你应该没事。

P.S。我不是R的专家,英语也不是我的第一语言,因此,如果有任何误解,我会事先道歉:)