如何估计有岛屿的空间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
我正在尝试使用 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