我正在尝试使用包spml在R中拟合面板空间模型。我首先定义NxN权重矩阵,如下所示:
neib <- dnearneigh(coordinates(coord), 0, 50, longlat = TRUE)
dlist <- nbdists(neib, coordinates(coord))
idlist <- lapply(dlist, function(x) 1/x)
w50 <- nb2listw(neib,zero.policy=TRUE, glist=idlist, style="W")
因此,如果两个观测点之间的距离最大为50 km,则将它们定义为相邻点。附在每对邻居观测值上的权重对应于它们的距离的倒数,因此,较近的邻居会收到较高的权重。我还使用了zero.policy = TRUE选项,以便将没有邻居的观测值与权重为零的向量关联。
一旦执行此操作,我将尝试通过以下方式拟合面板空间模型
mod <- spml(y ~ x , data = data_p, listw = w50, na.action = na.fail, lag = F, spatial.error = "b", model = "within", effect = "twoways" ,zero.policy=TRUE)
但是我收到以下错误和警告消息
lag.listw(listw,u)中的错误:变量包含非限定值 另外:有50个或更多警告(请使用warnings()查看 前50个)
警告消息:1:在mean.default(X [[i]],...)中:参数不是 数字或逻辑:返回NA
...
50:在mean.default(X [[i]],...)中:参数不是数字或 逻辑:返回NA
我认为这与非邻国的观察有关。可以请任何人帮助我吗?除了zero.policy选项之外,还有什么方法可以处理非邻国的观察?
非常感谢您的帮助。
答案 0 :(得分:0)
您应该检查两件事: 1)确保权重矩阵是行归一化的。 2)如果数据集中以及W矩阵中有NA值,请正确处理。