Ich verwende plm()
, um Modelle der Form mit festen Effekten zu schätzen
y ~ x + time + time:fixed_trait
wo fixed_trait
ist eine Variable, die zwischen Individuen variiert, aber innerhalb von Individuen konstant ist.
Der Punkt , der in Wechselwirkung time
mit fixed_trait
ist die Wirkung der erlauben fixed_trait
variieren über die Zeit hinweg. (Ich arbeite hier aus Paul Allisons kürzlich erschienenem Heft über festgelegte Effekte. Zitieren angehängt.)
plm()
Probleme beim Schätzen von Koeffizienten und Standardfehlern für solche Modelle. Aber summary.plm()
nicht R ^ 2 für diese Modelle berechnen. Dies ist das Problem, das ich beheben möchte.
Hier ist ein minimales Beispiel:
library(plm)
tmp <- data.frame(ID=rep(1:3, 2), year=rep(0:1, each=3),
y=rnorm(6), const=rep(1:3, 2))
fe1 <- plm(y ~ year, index=c('ID', 'year'), data=tmp)
fe2 <- plm(y ~ year + year:const, index=c('ID', 'year'), data=tmp)
summary(fe1) # works fine
summary(fe2) # Error in crossprod(t(X), beta) : non-conformable arguments
Das Nachforschen plm:::summary.plm
macht das Problem klarer. Um R ^ 2 zu berechnen, plm
versuchen Sie Folgendes:
beta <- coef(fe2)
X <- model.matrix(fe2)
crossprod(t(X), beta)
Dies funktioniert nicht, da beta
nur Schätzungen für year1
und year0:const
und X
eine Spalte für enthalten sind year1:const
. Mit anderen Worten, X
enthält Spalten für beide year0:const
und year1:const
, und es ist unmöglich, beide dieser Koeffizienten zu schätzen.
Eine Problemumgehung besteht darin, den Interaktionsbegriff "von Hand" zu erstellen, bevor Sie ihn in die Formel eingeben:
tmp$yearXconst <- tmp$year*tmp$const
fe3 <- plm(y ~ year + yearXconst, index=c('ID', 'year'), data=tmp)
summary(fe3) # works fine
Das ist aber umständlich. Gibt es noch etwas, was ich tun kann, um summary.plm
mit solchen Modellen zu arbeiten?
===
Allison, Paul D. 2009. Regressionsmodelle mit festen Effekten. Los Angeles, CA: Salbei. Siehe insbesondere Seiten 19-21.
plm
Version 1.6-4 ist dies kein Problem mehr, da abgestimmte Koeffizienten einfach weggelassen werden.Antworten:
Versuchen Sie es mit
stattdessen. Es funktioniert sogar, wenn Sie redundant zeitlich festgelegte Effekte in die
*
Interaktion einbeziehen (da die Zeit zeitlich festgesetzt wird):quelle
*
dies anstelle von verwendet:
werden muss?