Поправка Виндмейера для теста Арельяно-Бонда в пакете R plm

Предположим, у меня есть простая модель панельных данных AR(1), которую я оцениваю с помощью команды pgmm в R — доступные данные:

library(plm)
library(Ecdat)
data(Airline)

reg.gmm = pgmm(output ~ lag(output, 1)| lag(output, 2:99), data= Airline, Robust=TRUE)

С Robust=TRUE я использую поправку Windmeijer (2005) к матрице дисперсии-ковариации. Теперь я хочу проверить автокорреляцию второго порядка, используя Arrelano-Bond:

mtest(reg.gmm, order = 2, vcov = reg.gmm$vcov)

Использую ли я ковариационно-дисперсионную матрицу с поправкой на Виндмейера, как и намеревался? Если нет, то как я могу это реализовать? Документация довольно скрытна по этой теме. Спасибо за любую помощь заранее!


r plm
person Constantin Schmidt    schedule 21.09.2020    source источник
comment
Для меня ваш код выдает следующую ошибку: Error in solve.default(crossprod(WX, t(crossprod(WX, A2)))) : system is computationally singular: reciprocal condition number = 3.5216e-19, которая, вероятно, связана с проблемой, связанной со слишком большим количеством инструментов в ваших демонстрационных данных.   -  person juljo    schedule 21.09.2020
comment
Поскольку вы правы в том, что документация весьма ограничена по этим типам проблем. Я нашел книгу авторов пакета plm очень полезным ресурсом с гораздо более подробными объяснениями и примерами. Это называется «Эконометрика панельных данных с R» Ива Круассана и Джованни Милло.   -  person juljo    schedule 21.09.2020
comment
У функции pgmm нет аргумента Robust. Существует аргумент robust (обратите внимание на то, что буква r не написана с заглавной буквы) метода summary для объектов pgmm.   -  person Helix123    schedule 14.03.2021


Ответы (1)


К сожалению, пример с данными Airline вызывает ошибку, которая, по-видимому, связана со слишком большим количеством инструментов в вашей формуле GMM. Если вы используете другие данные, которые не демонстрируют эту проблему, вы можете использовать надежные стандартные ошибки, используя параметр vcovHC в mtest. В вашем примере последний вызов может быть:

mtest(reg.gmm, order = 2, vcov = vcovHC)
person juljo    schedule 21.09.2020