2010-03-01 113 views
5

當虛擬變量的數量導致超出R最大向量長度的模型矩陣時,是否有一種簡單的方法可以在R中執行固定效應迴歸?例如,R中的固定效應迴歸(具有大量虛擬變量)

> 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 

其中id是一個因子(並且是造成上述問題的變量)。

我知道,我可以去通過,並取消意味着所有的數據,而這將引發標準誤關(是的,你可以計算SE的「手動」瓦特/ DF調整,但我想,以儘量減少我引入新錯誤的概率)。我已經看過了plm包,但它似乎只適用於帶有時間分量的經典面板數據,而這不是我的數據結構。

回答

6

對於這類數據,Plm可以正常工作。時間組件不是必需的。

> 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

謝謝愛德華多!你是絕對正確的。 – 2010-03-01 16:46:06