2015-07-17 3 views
1

Я хотел бы извлечь матрицу дисперсии-ковариации из простой модели фиксированных эффектов plm. Например:Извлечь матрицу дисперсии-ковариации из модели фиксированных эффектов plm

library(plm) 
data("Grunfeld") 

M1 <- plm(inv ~ lag(inv) + value + capital, index = 'firm', 
      data = Grunfeld) 

Обычная vcov функция дает мне:

vcov(M1) 

       lag(inv)   value  capital 
lag(inv) 3.561238e-03 -7.461897e-05 -1.064497e-03 
value -7.461897e-05 9.005814e-05 -1.806683e-05 
capital -1.064497e-03 -1.806683e-05 4.957097e-04 

plm «s fixef функция только дает:

fixef(M1) 
      1   2   3   4   5   6   7 
-286.876375 -97.190009 -209.999074 -53.808241 -59.348086 -34.136422 -34.397967 
     8   9   10 
-65.116699 -54.384488 -6.836448 

Любая помощь извлекая ковариационную матрицу, которая включает в себя фиксированные эффекты будут высоко оценены.

+0

Во всяком случае, может быть, есть метод класса' plm', или что-то странно, потому что я получаю разные результаты с вашим кодом. Для меня 'vcov (M1)' дает тот же результат, что и 'M1 $ vcov', но результат у вас совсем другой. – SabDeM

ответ

1

Использование names иногда очень полезно:

names(M1) 
[1] "coefficients" "vcov"   "residuals" "df.residual" 
[5] "formula"  "model"  "args"   "call"   
M1$vcov 
       lag(inv)   value  capital 
lag(inv) 1.265321e-03 3.484274e-05 -3.395901e-04 
value  3.484274e-05 1.336768e-04 -7.463365e-05 
capital -3.395901e-04 -7.463365e-05 3.662395e-04 
+0

Правильно, разница, я думаю, имеет отношение к разным методы, доступные в 'plm' для нахождения ковариационной матрицы. Существуют, по крайней мере, согласования между Beck и Katz, Heteroskedasticity и Driscoll и Kraay. Моя проблема та t Я хотел бы найти их для параметров фиксированного эффекта, а также для трех основных ковариаций. –

0

Подобрав свой пример, выполните следующие действия, чтобы получить стандартные ошибки (если это то, что вы заинтересованы в, это не вся ковариационная матрица):

library(plm) 
data("Grunfeld") 

M1 <- plm(inv ~ lag(inv) + value + capital, index = 'firm', 
      data = Grunfeld) 

fix <- fixef(M1) 
fix_se <- attr(fix, "se") 
fix_se 
     1   2   3   4   5   6   7   8   9  10 
43.453642 25.948160 20.294977 11.245009 12.472005 9.934159 10.554240 11.083221 10.642589 9.164694 

Вы также можете использовать сводную функцию для получения дополнительной информации:

summary(fix) 
    Estimate Std. Error t-value Pr(>|t|)  
1 -286.8764 43.4536 -6.6019 4.059e-11 *** 
2 -97.1900 25.9482 -3.7455 0.0001800 *** 
3 -209.9991 20.2950 -10.3473 < 2.2e-16 *** 
4 -53.8082 11.2450 -4.7851 1.709e-06 *** 
5 -59.3481 12.4720 -4.7585 1.950e-06 *** 
6 -34.1364  9.9342 -3.4363 0.0005898 *** 
7 -34.3980 10.5542 -3.2592 0.0011174 ** 
8 -65.1167 11.0832 -5.8753 4.222e-09 *** 
9 -54.3845 10.6426 -5.1101 3.220e-07 *** 
10 -6.8364  9.1647 -0.7460 0.4556947  

Btw, документация расширяет атрибут "se":

Значение Объект класса "fixef". Это числовой вектор, содержащий фиксированные эффекты с атрибутом se, который содержит стандартные ошибки . [...]»

Примечание: Возможно, вам потребуется последняя версия программы развития для этого, потому что многое улучшилось там о fixef: https://r-forge.r-project.org/R/?group_id=406

Смежные вопросы