пгмм из пакета плм 1.6-6 не работает? - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь использовать 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)
...