2010-03-01 4 views
5

Gibt es eine einfache Möglichkeit, eine Fixed-Effects-Regression in R durchzuführen, wenn die Anzahl der Dummy-Variablen zu einer Modellmatrix führt, die die maximale Vektorlänge überschreitet ? Zum BeispielFixed-Effects-Regression in R (mit einer sehr großen Anzahl von Dummy-Variablen)

> m <- lm(log(bid) ~ after + I(after*score) + id, data = data) 
Error in model.matrix.default(mt, mf, contrasts) : 
cannot allocate vector of length 905986769 

wo ID ist ein Faktor (und ist die Variable, die das Problem oben verursacht).

Ich weiß, dass ich alle Daten durchgehen und de-bedeuten konnte, aber das wirft die Standardfehler aus (ja, Sie könnten die SEs "von Hand" mit einer DF-Anpassung berechnen, aber ich möchte minimieren die Wahrscheinlichkeit, dass ich neue Fehler einführe). Ich habe mir das plm-Paket angeschaut, aber es scheint nur für klassische Paneldaten mit einer Zeitkomponente gedacht zu sein, die nicht die Struktur meiner Daten ist.

Antwort

6

Plm funktioniert gut für diese Art von Daten. Die Zeitkomponente ist nicht erforderlich.

> library(plm) 
> data("Produc", package="plm") 
> zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, index=c("state")) 
> zz2 <- lm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp+factor(state), data=Produc) 
> summary(zz)$coefficients[,1:3] 
       Estimate Std. Error t-value 
log(pcap) -0.026149654 0.0290015755 -0.9016632 
log(pc) 0.292006925 0.0251196728 11.6246309 
log(emp) 0.768159473 0.0300917394 25.5272539 
unemp  -0.005297741 0.0009887257 -5.3581508 
> summary(zz2)$coefficients[1:5,1:3] 
       Estimate Std. Error t value 
(Intercept) 2.201617056 0.1760038727 12.5089126 
log(pcap) -0.026149654 0.0290015755 -0.9016632 
log(pc)  0.292006925 0.0251196728 11.6246309 
log(emp)  0.768159473 0.0300917394 25.5272539 
unemp  -0.005297741 0.0009887257 -5.3581508 
+0

Danke Eduardo! Du hast absolut recht. –

Verwandte Themen