Ошибка вычисления устойчивых стандартных ошибок в регрессионной модели Panel (plm, R)

Я использую библиотеку plm для выполнения регрессий с фиксированным эффектом и библиотеки sandwich, lmtest для вычисления надежных стандартных ошибок. У меня нет проблем с запуском регрессии, но в некоторых случаях, когда я иду вычислить стандартные ошибки, я получаю следующую ошибку:

library(plm)
library(sandwich)
library(lmtest)

fe_reg <- plm(y ~ x + I(x^2)+factor(date), data=reg_data, index=c("id","date"), model="within")
coeftest(fe_reg, vcov.=vcovHC(fe_reg, type="HC1"))

RRuntimeError: Error in solve.default(crossprod(demX))
  system is computationally singular: reciprocal condition number = 1.84726e-25

У меня нет проблем с вычислением коэффициентов или "нормальных" стандартных ошибок (т.е. гомоскедастических). Кроме того, у меня нет проблем с вычислением устойчивых стандартных ошибок, когда я опускаю квадратичный член:

fe_reg <- plm(y ~ x +factor(date), data=reg_data, index=c("id","date"), model="within")  

Кто-нибудь знает, что происходит? Если бы матрица дизайна была сингулярной, тогда не следовало бы вычислять коэффициенты, поэтому я не понимаю, откуда возникает проблема при вычислении стандартных ошибок.

Спасибо!


person shadowprice    schedule 24.03.2014    source источник


Ответы (1)


Если я правильно помню, plm не очень многословен. Думаю, можно и сингулярную матрицу, но плм не жалуется. lm обычно более подробный. Так что постарайтесь

 lm_mod1 <- lm(y ~ x + I(x^2)+factor(date), data=reg_data)
 summary(lm_mod1)

lm сообщит вам в итоговом выводе, если есть проблема с вычислением одного коэффициента (коэффициент равен NA в таблице, и в верхней части вывода также должно быть примечание). Изменить: в этом случае примечание вверху итогового вывода lm должно быть «Коэффициенты: (1 не определено из-за особенностей)».

Изменить. Есть еще одна возможность, почему coeftest не работает: если ваш model.matrix ограничивает очень большие значения, а также очень маленькие значения, solve может оказаться не в состоянии решить систему линейных уравнений путем вычисления в vcovHC функция. Таким образом, взгляните на model.matrix(y ~ x + I(x^2)+factor(date), data=reg_data), если это так. Если это так, попробуйте изменить масштаб некоторых переменных (например, умножить или разделить на 100 или 1000 [также иногда имеет смысл log()). Будьте внимательны, интерпретация коэффициентов меняется из-за смены шкал!

person Helix123    schedule 06.07.2015
comment
В примечании вверху итогового вывода должно быть указано «Коэффициенты:» (1 не определено из-за особенностей). - person Helix123; 06.07.2015
comment
Да, вероятно, что есть особенность, и хотя plm() и summary() работают нормально, vcovHC() скорее всего выйдет из строя. - person landroni; 05.03.2016
comment
добавление: vcovHC() сейчас plm (разрабатываемая версия) обрабатывает особенности так же, как plm() и summary(): drop and continue, поэтому первоначальный вопрос должен быть решен. - person Helix123; 23.11.2016
comment
Приложение 2: Официальный релиз CRAN (1.6-4) plm теперь включает это. - person Helix123; 30.11.2016