差异R2R2OLS 与单个假人到面板固定效应模型之间?

机器算法验证 最小二乘 面板数据 固定效应模型 r平方
2022-04-01 11:53:08

根据我的理解,面板固定效应模型相当于带有个体假人的OLS。但是,当我在 R 中运行这两个模型时,R2两个模型的结果完全不同:OLS 为 0.8,带有单个假人,0.06 为固定效应模型。

是不是在固定效应模型中,固定效应(个体假人)被排除在计算之外R2?

2个回答

本质上,是的。R2为固定效应回归给出的值通常称为“内R2"。如果你使用 stata,输出将给出整体、内部和之间R2. 如果您plm在 R 中使用包,它只给出内部R2. 整体和内部的基本区别R2是内部找到贬值结果变量的总平方和固定效应回归贬低每个固定实体的y

对于固定效应模型,

R2=小号小号R小号小号dee一个ned 是的=(是的-是的^)2([是的一世-是的¯一世]-[是的一世-是的¯一世]¯)2

EmplUK使用来自的数据在 R 中演示plm

    > library(plm)
    > data("EmplUK")
    > fixed <- plm(emp ~ wage + capital, data = EmplUK, index= 
         c("firm"), model = "within")
    > fixed.dum <- lm(emp ~ wage + capital + factor(firm) - 1, 
          data = EmplUK)
    > summary(fixed.dum)$r.squared[1] 
  summary(fixed)$r.squared[1] 
    [1] 0.9870826
          rsq 
    0.1635585 
    > 
    
    > #"Within" R2
    > SSR <- sum(fixed$residuals^2)
> demeaned_y <- EmplUK$emp - 
       tapply(EmplUK$emp, EmplUK$firm,mean)[EmplUK$firm]
> TSS_demeaned_y <- sum((demeaned_y-mean(demeaned_y))^2)
> within_R2 <- 1-(SSR/TSS_demeaned_y)
> c(summary(fixed)$r.squared[1], "rsq" = within_R2)
          rsq       rsq 
    0.1635585 0.1635585 

我一直在寻找 R 中固定效应模型输出的三种类型的 R 平方。

感谢@paqmo 的帮助,我能够使用标准lm中的模型拟合手动计算和重现lfe完整proj R 平方。也就是说,我很确定完整的R-sq 是直截了当的,这意味着所有预测值和原始值对的 R-sq。同时,它们的proj R-squared也和所谓的inside R-squared(定义来自STATA)相同就是plm包中默认报告的R- squared

简要阅读 STATA手册第 10 页后,我认为lfe中的完整R-sqSTATA中的整体R-sq是相同的想法。我看到有人说整体 R-sq 是 R-sq和R-sq之间的加权平均值,但我没有看到任何支持这一说法的证据。我只看到整体完整的 R-sq 都是直接从预测的 y 和原始 y 对计算出来的。

以下是我自己对完整proj R-sq 的计算。

    fe_lm_mod <- lm(formula = "y ~ x1 + x2 + entity - 1", 
       data = dataframe)
    ## Calculate prediction
    y_predict <- predict(fe_lm_mod, newdata = dataframe)
    y_original <- dataframe$y
    
    # Get the valid values indices
    notmiss <- which((!is.na(y_predict)) & (!is.na(y_original))) 

    # Residiual sum of squares
    SSres <- sum((y_original[notmiss] - y_predict[notmiss])**2)

    # Calculate full R2
    SStot_full <- sum((y_original[notmiss] - 
                    mean(y_original[notmiss]))**2)
    
    ### get the demean. The within finds the total sum of 
    ### squares on the demeaned outcome variable. 
    ### References
    # https://stats.stackexchange.com/questions/262246/difference-of-r2-between-ols-with-individual-dummies-to-panel-fixed-effect-mo
    demeaned_y <- y_original[notmiss] - 
      tapply(y_original[notmiss], dataframe$entity[notmiss], 
     mean)[dataframe$entity][notmiss]
    # Calculate within R2
    SStot_within <- sum((demeaned_y-mean(demeaned_y))^2)

    print(paste("calculated full R2", 1 - SSres/SStot_full))
    print(paste("calculated within R2", 1 - SSres/SStot_within))

对于R-sq之间,我认为 model="between" 的plm包可能会R-sq 之间产生,但我不太确定。可以尝试根据 STATA 手册来计算它,就像我为fullR-sq所做的那样。

到目前为止,我对 R-sq 输出做了一个总结(待续):

  1. lm R-sq:不适合固定效果模型,无法重现
  2. lfe "full" R-sq:所有对预测 y 和原始 y 的 R-sq,也可以称为 "overall" R-sq
  3. lfe "proj" R-sq: "within" R-sq: 每个实体组内因变量的变化有多少被模型捕获
  4. plm model="within" R-sq:同3。
  5. plm model="between" R-sq: "between" R-sq: 每个实体组之间因变量的变化有多少被模型捕获
  6. plm model="pooling" R-sq:不适合固定效应模型。这是标准的 OLS R-sq。它不是固定效应模型 R-sq。