首页 > 解决方案 > 如何估计带岛屿的空间 SAR 模型?

问题描述

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

lagsarlm(f1, data = df, spatialList, tol.solve = 1e-30) 中的错误:滞后因变量中的 NA 另外:警告消息:在 lag.listw(listw, y, zero.policy = zero.policy) 中:滞后值中的 NA

显然,这是因为我有岛屿(与任何其他观察无关的观察)。如果我在不创建岛的情况下运行以下代码(通过删除 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)

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

非常感谢

标签: rspatialspdep

解决方案


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
默认为 NULL,使用全局选项值;如果 TRUE 将零分配给没有邻居的区域的滞后值,如果 FALSE(默认)分配 NA - 导致 lagsarlm() 以错误终止


推荐阅读