Ich verwende plm(), um Modelle der Form mit festen Effekten zu schätzen
y ~ x + time + time:fixed_trait
wo fixed_traitist eine Variable, die zwischen Individuen variiert, aber innerhalb von Individuen konstant ist.
Der Punkt , der in Wechselwirkung timemit fixed_traitist die Wirkung der erlauben fixed_traitvariieren ü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.plmmacht das Problem klarer. Um R ^ 2 zu berechnen, plmversuchen Sie Folgendes:
beta <- coef(fe2)
X <- model.matrix(fe2)
crossprod(t(X), beta)
Dies funktioniert nicht, da betanur Schätzungen für year1und year0:constund Xeine Spalte für enthalten sind year1:const. Mit anderen Worten, Xenthält Spalten für beide year0:constund 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.plmmit solchen Modellen zu arbeiten?
===
Allison, Paul D. 2009. Regressionsmodelle mit festen Effekten. Los Angeles, CA: Salbei. Siehe insbesondere Seiten 19-21.
plmVersion 1.6-4 ist dies kein Problem mehr, da abgestimmte Koeffizienten einfach weggelassen werden.