Как оценить пространственную модель SAR с островками? - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь оценить пространственную модель SAR, используя команду lagsarlm, и получаю следующую ошибку:

Ошибка в lagsarlm (f1, data = df ,atialList, tol.solve = 1e-30): NA в лаговой зависимой переменной Дополнительно: Предупреждение: In lag.listw (listw, y, zero.policy = zero.policy): NA в лаговых значениях

По-видимому, это происходит потому, что у меня есть острова (наблюдения, которые не связаны с другими наблюдениями). Если я запускаю следующий код без создания острова (удаляя W [1,1: 50] <- 0), код работает просто отлично. </p>

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)

Это просто игрушечный пример. Учитывая, что в моей реальной матрице есть несколько островков, есть идеи о том, как продолжить оценку?

Большое спасибо

1 Ответ

1 голос
/ 25 февраля 2020

Функция 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 () с ошибкой

...