我多次尝试使用 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)
是必要的,但是,如果它不存在,我就看不到虚拟变量的系数(和显着性)。
所以,我的问题是:
- 我使用的 plm 功能错误吗? (或者有什么问题)
- 如果不是的话,结果怎么会不一样呢?
如果有人能给我提示,我将不胜感激。
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/