spdep“还不能将一般权重列表子集”listw

时间:2014-11-24 02:24:27

标签: r regression geospatial spatial spdep

我遇到spdep()的问题。从函数产生的非缺失距离矩阵开始

dist_m <- geoDistMatrix(data1, group = 'fips_dist')
dist_m[upper.tri(dist_m)] <- t(dist_m)[upper.tri(dist_m)]

然后我们变成线性逆的权重

max_dist <- max(dist_m)
w1 <- (max_dist + 1 - dist_m)/(max_dist + 1)

现在

lw <- mat2listw(w1, row.names = rownames(w1), style = 'M')

我检查确保没有丢失的重量:

any(is.na(lw$weights))

由于还没有,请继续:

errorsarlm(cvote ~ inc, data = data1, lw, method = 'eigen', quiet = F, zero.policy = TRUE)

导致以下错误:

Error in subset.listw(listw, subset, zero.policy = zero.policy) : 
  Not yet able to subset general weights lists

2 个答案:

答案 0 :(得分:1)

这是因为data1中至少有一个观察结果不完整,即缺少值。因此,errorsarlm想要对数据进行子集化,即限制完成案例。但它现在无法做到 - 这就是错误信息所说的内容。

最好是手动对数据进行子集化或纠正不完整的案例。

答案 1 :(得分:0)

这是因为默认情况下spdep函数仅为非通用权重创建了一个listw对象。在执行<script type="text/javascript"> function checkResponse(){ if (isChecked('option1') || isChecked('option2')){ next(); }else{ alert("Your error message") } } function isChecked(id){ return document.getElementById(id).checked; //returns true if any options are selected } </script> zero.polcy=TRUE函数之前,请设置mat2listw,以使它考虑值为零的非邻居。