#r #geospatial #panel-data #plm #spml
#r #геопространственные #панель-данные #plm #spml
Вопрос:
Я создаю модели пространственных панелей из библиотеки splm, но я не могу создать модель с фиксированными или случайными эффектами, потому что получается, что это несбалансированная панель.
Данные
Воспроизводимый пример
library(dplyr)
library(Hmisc)
library(sf)
library(plm)
library(splm)
library(spdep)
data = read.csv("data.csv", colClasses=c(id="factor"))
map = st_read("nxparroquias.shp")
colnames(map)[1] = "id"
balanced = data %>%
group_by(id) %>%
#drop_na() %>%
filter(all(c(2013:2018) %in% year)) %>%
ungroup() %>%
filter(id %in% unique(map$id))
map = map %>%
filter(id %in% unique(balanced$id))
pt = spdep::poly2nb(map)
ptw = spdep::nb2listw(pt, zero.policy = TRUE)
describe(balanced$id)
#balanced$id
#n missing distinct
#5832 0 972
describe(map$id)
#map$id
#n missing distinct
#972 0 972
#checks if the data are balanced
plm::is.pbalanced(balanced$id,balanced$year)
#[1] TRUE
p_balanced = pdata.frame(balanced, index = c("id", "year")) #same issues
Объединение
md1 = splm::spml(data = balanced,
y ~ x1 x2 x3,
index = c("id", "year"),
zero.policy = TRUE,
model = "pooling",
listw = ptw)
summary(md1)
#ML panel with , spatial error correlation
#
#Call:
# spreml(formula = formula, data = data, index = index, w = listw2mat(listw),
# w2 = listw2mat(listw2), lag = lag, errors = errors, cl = cl,
# zero.policy = TRUE)
#
#Residuals:
# Min. 1st Qu. Median Mean 3rd Qu. Max.
#-14.860 -3.213 0.539 0.003 3.194 13.181
#
#Error variance parameters:
# Estimate Std. Error t-value Pr(>|t|)
#rho 0.087841 0.019622 4.4767 7.58e-06 ***
#
# Coefficients:
# Estimate Std. Error t-value Pr(>|t|)
#(Intercept) 5.1373431 0.0972298 52.8371 < 2.2e-16 ***
# x1 0.0423977 0.0098276 4.3141 1.602e-05 ***
# x2 0.1109780 0.0083800 13.2432 < 2.2e-16 ***
# x3 -0.0444174 0.0096522 -4.6018 4.189e-06 ***
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
FE
md2 = splm::spml(data = balanced,
y ~ x1 x2 x3,
index = c("id", "year"),
zero.policy = TRUE,
model = "within",
listw = ptw)
С воспроизводимым примером исправленных эффектов
Ошибка в lag.listw(listw, u, zero.policy = zero.policy) : длины объектов различаются
С моими исходными данными
Ошибка в spfeml (формула = формула, данные = данные, индекс = индекс, listw = listw, : метод оценки недоступен для несбалансированных панелей
RE
со случайными эффектами
Ошибка в .C64 («aplsb1», SIGNATURE = c (SS $ signature, SS $ signature, «double», : NAs в аргументе 7 и ‘NAOK = FALSE’ (dotCall64)
Комментарии:
1. возможно, вы захотите попробовать этот вопрос и в stackGIS
2. Не могли бы вы повторно загрузить файл «data». Я не могу его загрузить.