使用spml

时间:2019-06-07 15:53:28

标签: r spatial

我正在尝试使用包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选项之外,还有什么方法可以处理非邻国的观察?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您应该检查两件事: 1)确保权重矩阵是行归一化的。 2)如果数据集中以及W矩阵中有NA值,请正确处理。