首页 文章

R中的固定效应回归(具有非常多的虚拟变量)

提问于
浏览
5

当虚拟变量的数量导致模型矩阵超过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软件包,但它似乎只针对具有时间组件的经典面板数据而设计,这不是我的数据结构 .

1 回答

  • 7

    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
    

相关问题