r - plm 与 lm - 结果不同?

标签 r plm

我多次尝试使用 lm 和 plm 进行回归。我得到了不同的结果。

首先,我使用 lm 如下:

fixed.Region1 <- lm(CapNormChange ~ Policychanges + factor(Region), 
    data=Panel)

此外,我按以下方式使用 plm:

fixed.Region2 <- plm(CapNormChange ~ Policychanges+ factor(Region), 
    data=Panel, index=c("Region", "Year"), model="within", effect="individual")

我认为 plm 有问题,因为我在结果中没有看到拦截(见下文)。 此外,我不完全确定是否 + factor (Region)是必要的,但是,如果它不存在,我就看不到虚拟变量的系数(和显着性)。

所以,我的问题是:

  1. 我使用的 plm 功能错误吗? (或者有什么问题)
  2. 如果不是的话,结果怎么会不一样呢?

如果有人能给我提示,我将不胜感激。

LM 结果:

Call:
lm(formula = CapNormChange ~ Policychanges + factor(Region), 
    data = Panel)

Residuals:
    Min      1Q  Median      3Q     Max 
-31.141  -4.856  -0.642   1.262 192.803 

Coefficients:
                                Estimate Std. Error t value Pr(>|t|)    
(Intercept)                      17.3488     4.9134   3.531 0.000558 ***
Policychanges                     0.6412     0.1215   5.277 4.77e-07 ***
factor(Region)Asia              -19.3377     6.7804  -2.852 0.004989 ** 
factor(Region)C America + Carib   0.1147     6.8049   0.017 0.986578    
factor(Region)Eurasia           -17.6476     6.8294  -2.584 0.010767 *  
factor(Region)Europe            -20.7759     8.8993  -2.335 0.020959 *  
factor(Region)Middle East       -17.3348     6.8285  -2.539 0.012200 *  
factor(Region)N America         -17.5932     6.8064  -2.585 0.010745 *  
factor(Region)Oceania           -14.0440     6.8417  -2.053 0.041925 *  
factor(Region)S America         -14.3580     6.7781  -2.118 0.035878 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 19.72 on 143 degrees of freedom
Multiple R-squared:  0.3455,    Adjusted R-squared:  0.3043 
F-statistic: 8.386 on 9 and 143 DF,  p-value: 5.444e-10`

PLM 结果:

 Call:
plm(formula = CapNormChange ~ Policychanges, data = Panel, effect = "individual", 
    model = "within", index = c("Region", "Year"))

Balanced Panel: n = 9, T = 17, N = 153

Residuals:
     Min.   1st Qu.    Median   3rd Qu.      Max. 
-31.14147  -4.85551  -0.64177   1.26236 192.80277 

Coefficients:
              Estimate Std. Error t-value  Pr(>|t|)    
Policychanges  0.64118    0.12150   5.277 4.769e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares:    66459
Residual Sum of Squares: 55627
R-Squared:      0.16299
Adj. R-Squared: 0.11031
F-statistic: 27.8465 on 1 and 143 DF, p-value: 4.7687e-07`

最佳答案

您需要省略 + factor(Region)在您的内部模型公式中使用 plm 来获得您想要的内容。

模型内没有拦截,但某些软件包(尤其是 Stata 和 Gretl)报告有拦截。您可以通过运行 within_intercept 使用 plm 来估计它在你估计的模型上。帮助页面有关于这种有点人为拦截的详细信息。

如果您想要单个效果及其重要性,请使用 summary(fixef(<your_plm_model>)) 。使用pFtest检查内部规范是否值得。

LM 模型和 PLM 模型之间的 R 平方存在差异。这是由于 lm 模型(如果像这样与虚拟变量一起使用,通常称为 LSDV 模型(最小二乘虚拟变量))给出有时称为总体 R 平方的值,而 plm 将为您提供贬低的 R 平方回归,有时称为 R 平方内。 Stata 的文档对此有一些详细信息:https://www.stata.com/manuals/xtxtreg.pdf

关于r - plm 与 lm - 结果不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49058092/

相关文章:

r - plm 函数和异方差鲁棒标准误差

r - R中 "|"的含义是什么

R plm lag - 什么相当于 Stata 中的 L1.x?

r - 自由度面板数据固定效应 (plm)

表示 R 中一组大小不一的数据帧

r - 匹配单词串并返回不匹配的单词

r - 在每个代码块之后自动测量执行时间或打印当前时间

java - java 和 R 与 Rserve 的连接

r - plm 中的滞后

python - 从Python中的Requests模块读取文件