【问题标题】:Fixed effects regression in R (with a very large number of dummy variables)R中的固定效应回归(具有大量虚拟变量)
【发布时间】:2010-03-01 12:32:02
【问题描述】:

当虚拟变量的数量导致模型矩阵超过 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 是一个因素(并且是导致上述问题的变量)。

我知道我可以检查所有数据并对所有数据进行去均值处理,但这会排除标准误差(是的,您可以通过 df 调整“手动”计算 SE,但我想最小化我引入新错误的可能性)。我看过 plm 包,但它似乎只为带有时间组件的经典面板数据设计,这不是我的数据结构。

【问题讨论】:

    标签: r plm


    【解决方案1】:

    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
    

    【讨论】:

    • 根据我自己的经验,我认为 Simon Gaure 的 lfe 包现在更好了。
    【解决方案2】:

    fixst() 包应该可以帮助你。例如,您可以有效地贬低因素:

    library(fixest)
    feols(log(bid) ~ after + I(after*score) | id, data = data)
    

    对于大型数据集,这比 plm() 快得多。据我所知,不再支持 lfe 包?在此处查看警告:https://cran.r-project.org/web/packages/lfe/index.html

    【讨论】:

      猜你喜欢
      • 2018-01-20
      • 2012-11-07
      • 2018-06-19
      • 2015-01-03
      • 1970-01-01
      • 2017-09-14
      • 2018-03-29
      • 2020-11-25
      • 2015-01-17
      相关资源
      最近更新 更多