1

我有一个问题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
4

2 回答 2

1

这是因为至少有一个观察data1不完整,即有缺失值。因此,errorsarlm想要对数据进行子集化,即限制为完整的案例。但它现在不能这样做 - 这就是错误消息所说的。

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

于 2015-04-09T09:43:40.803 回答
0

这是因为 spdep 函数默认只为非通用权重创建了一个 listw 对象。zero.polcy=TRUE在您执行mat2listw或运行之前设置nb2listw,以便它考虑具有零值的非邻居。

于 2019-05-12T04:55:12.243 回答