Я делаю проект, который включает модель с фиксированными эффектами и оценку GMM системы. Я хочу использовать пакет plm для этого. Однако при выполнении регрессии я получаю сообщение об ошибке:
"Ошибка в plm.fit (формула, данные, модель, эффект, random.method, random.models,:
0 (не NA) случаев "
Я проследил проблему до функции задержки, которая используется в пакете plm: когда я пытаюсь использовать ее в столбце в моем data.frame, он возвращает только значения NA для всех лагов, неравных 0 (т.е. текущее значение) ,
Я также попробовал функцию на фрейме данных, который включен в пакет plm, и там он работает как положено. Поэтому я предположил, что это может быть связано с тем, что мой фрейм данных был сохранен как tbl_df из предыдущих манипуляций с данными, но сохранение его как фрейма данных также не решило проблему.
Следующий код показывает часть моих данных, которые я преобразовал в pdata.frame, а затем запустил модель с фиксированными эффектами. Это привело к сообщению об ошибке, указанному выше. Затем я проверил функцию задержки отдельно и обнаружил, что она не работает должным образом в моем наборе данных.
library(plm)
example <- structure(list(
X = c(
1L, 37L, 89L, 145L, 215L, 295L, 391L, 503L,
504L, 616L, 617L
), countrycode = structure(c(
2L, 2L, 2L, 2L,
2L, 2L, 2L, 1L, 2L, 1L, 2L
), .Label = c("ALB", "ARG"), class = "factor"),
year = c(
1970L, 1975L, 1980L, 1985L, 1990L, 1995L, 2000L,
2005L, 2005L, 2010L, 2010L
), rgdppc = c(
3611.53200479887,
3800.75962232602, 3978.31086065157, 4387.38321845057, 5553.84269266385,
10810.9468450015, 12719.6544787325, 5920.55446541169, 12511.9821473033,
9544.73991912729, 15841.658208159
), growth = c(
0.134499926825177,
0.0510688869844671, 0.0456563749718093, 0.0978756492215904,
0.235757093672094, 0.666069152314748, 0.162589176374155,
0.205953161751015, -0.0164616369654098, 0.477560104733307,
0.235956308809754
), pop_growth = c(
0.0726537583373137, 0.0837385279741412,
0.0753099311604224, 0.0780944388423599, 0.0742106054169795,
0.066915782210657, 0.0572695650290527, -0.0138011742778001,
0.0548156893291569, -0.0460748632561909, 0.051732718162242
), Gini = c(
0.468112837531106, 0.441088756489684, 0.417000047344437,
0.392382688333824, 0.367346706677727, 0.34287710283137, 0.352476770021164,
0.221846080582856, 0.333761509816487, 0.180112255727025,
0.319847139735362
), bcGini = c(
0.561735405037327, 0.529306507787621,
0.500400056813324, 0.470859226000588, 0.440816048013272,
0.411452523397644, 0.422972124025397, 0.266215296699427,
0.400513811779785, 0.21613470687243, 0.383816567682435
),
bcwGini = c(
0.645650701245952, 0.60225255667686, 0.563484696480372,
0.525119712533559, 0.487339228077908, 0.451398810473532,
0.461104421570223, 0.322099208203327, 0.434846178826301,
0.263971449718222, 0.414250358008174
), capgrowth = c(
0.117957011507009,
0.178649110088593, 0.173653210113507, 0.0785021513269335,
-0.00224558647600759, 0.0267416371475058, 0.10224003699156,
0.508306023156432, -0.000946393858047401, 0.42009422610586,
0.155065623868424
), mschool = c(
6.33, 6.69, 7.06, 7.46, 7.86,
8.26, 8.66, 9.4, 9.06, 9.68, 9.43
)
), row.names = c(NA, -11L), class = "data.frame")
pexample <- pdata.frame(example, index = c("countrycode", "year"))
mod1 <- plm(growth ~ plm::lag(log(rgdppc), 1) + pop_growth + capgrowth +
plm::lag(log(mschool), 1), data = pexample,
effect = "twoways", model = "within",
index = c("countrycode", "year"), na.action = "na.omit")
plm::lag(pexample$growth, 0:2)
Следующий код показывает, что должна делать функция запаздывания во включенном кадре данных.
data("EmplUK", package = "plm")
E <- pdata.frame(EmplUK, index = c("firm", "year"))
head(plm::lag(E$emp, 0:2))
Это вывод из моего SessionInfo:
R version 3.6.0 (2019-04-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17134)
Matrix products: default
locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C
[5] LC_TIME=German_Germany.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] dplyr_0.8.0.1 readr_1.3.1 plm_1.7-0 Formula_1.2-3
loaded via a namespace (and not attached):
[1] Rcpp_1.0.1 rstudioapi_0.10 magrittr_1.5 hms_0.4.2 MASS_7.3-51.4
[6] tidyselect_0.2.5 lattice_0.20-38 R6_2.4.0 rlang_0.3.4 styler_1.1.0
[11] tools_3.6.0 grid_3.6.0 nlme_3.1-139 maxLik_1.3-4 miscTools_0.6-22
[16] lmtest_0.9-37 assertthat_0.2.1 tibble_2.1.1 crayon_1.3.4 bdsmatrix_1.3-3
[21] purrr_0.3.2 glue_1.3.1 sandwich_2.5-1 compiler_3.6.0 pillar_1.3.1
[26] backports_1.1.4 pkgconfig_2.0.2 zoo_1.8-5
Я использую RStudio версии 1.2.1335
Кто-нибудь имеет опыт решения этой проблемы?
Любая помощь будет принята с благодарностью.