Я пытаюсь использовать pgmm
из plm
для оценки инструментальных переменных на панельных данных.Но когда я пытаюсь сделать это, я получаю ошибку.Мой код сложен, но нет необходимости показывать его здесь - если я пытаюсь сделать код из самой документации R (здесь: https://www.rdocumentation.org/packages/plm/versions/1.6-5/topics/pgmm), Я получаю ту же ошибку.
Код
library(plm)
data("EmplUK", package = "plm")
## Arellano and Bond (1991), table 4 col. b
z1 <- pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1)
+ log(capital) + lag(log(output), 0:1) | lag(log(emp), 2:99),
data = EmplUK, effect = "twoways", model = "twosteps")
Я получаю ошибку
Error: `n` must be a nonnegative integer scalar, not integer of length 2
Traceback:
1. pgmm(log(emp) ~ lag(log(emp), 1:2) + lag(log(wage), 0:1) + log(capital)
+ lag(log(output), 0:1) | lag(log(emp), 2:99), data = EmplUK, effect = "twoways", model = "twosteps")
2. eval(mf, parent.frame())
3. eval(mf, parent.frame())
4. plm(formula = log(emp) ~ lag(log(emp), 1:2) + lag(log(wage),
0:1) + log(capital) + lag(log(output), 0:1) | log(emp) |
log(capital) + log(output) + lag(log(output), 1) + log(wage) +
lag(log(wage), 1), data = EmplUK, drop.unused.levels = TRUE,
model = NA, na.action = "na.pass")
5. eval(mf, parent.frame())
6. eval(mf, parent.frame())
7. model.frame(formula = log(emp) ~ lag(log(emp), 1:2) + lag(log(wage),
0:1) + log(capital) + lag(log(output), 0:1) | log(emp) |
log(capital) + log(output) + lag(log(output), 1) + log(wage) +
lag(log(wage), 1), data = structure(list(firm = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
12L, 12L, 12L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 13L, 13L, 13L,
13L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 1
и т. Д., Для очень много строк. Может кто-нибудь помочь мне понять, что происходит с моей установкой?запись, которую я использую plm версии 1.6-6 (документация о 1.6-5).
Кроме того, если я пытаюсь сделать то же самое без лагов, я получаю другую ошибку:
library(plm)
data("EmplUK", package = "plm")
## Arellano and Bond (1991), table 4 col. b
z1 <- pgmm(log(emp) ~ log(wage) | log(capital),
data = EmplUK, effect = "twoways", model = "twosteps")
Ошибка:
Error in cbind(yX1[[i]], V1): number of rows of matrices must match (see
arg 2)
Traceback:
1. pgmm(log(emp) ~ log(wage) | log(capital), data = EmplUK, effect =
"twoways", model = "twosteps")
2. cbind(yX1[[i]], V1)