如何估计有岛屿的空间SAR模型?

How to estimate spatial SAR model with islands?

我正在尝试使用 lagsarlm 命令估计空间 SAR 模型,但出现以下错误:

Error in lagsarlm(f1, data = df, spatialList, tol.solve = 1e-30) : NAs in lagged dependent variable In addition: Warning message: In lag.listw(listw, y, zero.policy = zero.policy) : NAs in lagged values

显然,发生这种情况是因为我有孤岛(与任何其他观察无关的观察)。如果我 运行 下面的代码没有创建一个岛(通过删除 W[1,1:50] <- 0),代码工作得很好。

library(spdep)
library(spatialreg)
library(sna)

set.seed(123)

W <- rgraph(50, m=1, tprob=0.1, mode="graph", diag=FALSE)
W[1,1:50] <- 0

spatialList <- mat2listw(W)

y <- rnorm(50)
x <- rnorm(50)

df <- cbind.data.frame(y,x)

f1 <- y ~ x

m2s = lagsarlm(f1, data=df, spatialList, tol.solve=1.0e-30)

这只是一个玩具示例。鉴于我的真实矩阵有几个岛,关于如何进行估计有什么想法吗?

非常感谢

lagsarlm 函数有一个 zero.policy 参数,默认情况下为 FALSE,这意味着如果数据中有零并且您省略了该参数,该函数将终止并出错。所以,将其更改为 TRUE.

m2s = lagsarlm(f1, data=df, spatialList, tol.solve=1.0e-30, zero.policy=TRUE)
m2s

Call:
lagsarlm(formula = f1, data = df, listw = spatialList, zero.policy = TRUE, 
    tol.solve = 1e-30)
Type: lag 

Coefficients:
         rho  (Intercept)            x 
-0.007533119  0.209226752  0.058315953 

Log likelihood: -71.21548

来自帮助页面:

zero.policy
default NULL, use global option value; if TRUE assign zero to the lagged value of zones without neighbours, if FALSE (default) assign NA - causing lagsarlm() to terminate with an error