我正在使用该plm包运行固定效应回归。\nID 代码的顺序为何以及如何对回归产生影响?
我使用这些代码来运行回归,它们仅在 ID 代码Company和Year.
代码:
\n\nMV_Year <- plm (MVlog ~ LEV + Size + DY + RDlog\n , data=Values, model="within", index= c("Year","Company"))\n\n\nMV_Company <- plm (MVlog ~ LEV + Size + DY + RDlog,\n data=Values, model="within", index= c("Company", "Year"))\nRun Code Online (Sandbox Code Playgroud)\n\n相应的输出:\nMV_Year:
\n\nOneway (individual) effect Within Model\n\nCall:\nplm(formula = MVlog ~ LEV + Size + DY + RDlog, data = Values, \n model = "within", index = c("Year", "Company"))\n\nUnbalanced Panel: n = 17, T = 557-4280, N = 29890\n\nResiduals:\n Min. 1st Qu. Median 3rd Qu. Max. \n-5.250901 -0.457100 0.015763 0.476140 6.006483 \n\nCoefficients:\n Estimate Std. Error t-value Pr(>|t|) \nLEV -1.95485031 0.04060539 -48.143 < 2e-16 ***\nSize 0.75233709 0.00314849 238.952 < 2e-16 ***\nDY -0.00033192 0.00013482 -2.462 0.01382 * \nRDlog 0.13148626 0.00300509 43.755 < 2e-16 ***\n---\nSignif. codes: 0 \xe2\x80\x98***\xe2\x80\x99 0.001 \xe2\x80\x98**\xe2\x80\x99 0.01 \xe2\x80\x98*\xe2\x80\x99 0.05 \xe2\x80\x98.\xe2\x80\x99 0.1 \xe2\x80\x98 \xe2\x80\x99 1\n\nTotal Sum of Squares: 102610\nResidual Sum of Squares: 17568\nR-Squared: 0.82879\nAdj. R-Squared: 0.82868\nF-statistic: 36148 on 4 and 29869 DF, p-value: < 2.22e-16\nRun Code Online (Sandbox Code Playgroud)\n\nMV_公司
\n\nOneway (individual) effect Within Model\n\nCall:\nplm(formula = MVlog ~ LEV + Size + DY + RDlog, data = Values, \n model = "within", index = c("Company", "Year"))\n\nUnbalanced Panel: n = 5911, T = 1-17, N = 29890\n\nResiduals:\n Min. 1st Qu. Median 3rd Qu. Max. \n-4.35967 -0.38711 0.00000 0.40528 5.48624 \n\nCoefficients:\n Estimate Std. Error t-value Pr(>|t|) \nLEV -1.88958140 0.04392991 -43.0135 < 2e-16 ***\nSize 0.74650676 0.00375926 198.5782 < 2e-16 ***\nDY -0.00034308 0.00014585 -2.3524 0.01866 * \nRDlog 0.13904360 0.00331886 41.8950 < 2e-16 ***\n---\nSignif. codes: 0 \xe2\x80\x98***\xe2\x80\x99 0.001 \xe2\x80\x98**\xe2\x80\x99 0.01 \xe2\x80\x98*\xe2\x80\x99 0.05 \xe2\x80\x98.\xe2\x80\x99 0.1 \xe2\x80\x98 \xe2\x80\x99 1\n\nTotal Sum of Squares: 58168\nResidual Sum of Squares: 12747\nR-Squared: 0.78085\nAdj. R-Squared: 0.72679\nF-statistic: 21356.2 on 4 and 23975 DF, p-value: < 2.22e-16\nRun Code Online (Sandbox Code Playgroud)\n\n为什么不同的估计和 R^2 之间的输出存在如此小的差异?
\n该选项的原因index=是,如果未指定相应名称,则plm()内部使用pdata.frame()期望第一列为 the "id",第二列为 the"time"index=(<id>, <time>)
从中?pdata.frame我们可以读到:
索引参数指示面板的尺寸。有可能:
- 两个字符串组成的向量,其中包含个人姓名和时间索引,
- 一个字符串,它是各个索引变量的名称。在这种情况下,时间索引会自动创建,并
添加一个名为“时间”的新变量,假设
时间段按原始数据的顺序连续且升序,...
下面的例子将帮助我们理解这一点。首先我们加载Grunfeld数据,如下所示。
library(plm)
data(Grunfeld)
head(Grunfeld, 3)
# firm year inv value capital
# 1 1 1935 317.6 3078.5 2.8
# 2 1 1936 391.8 4661.7 52.6
# 3 1 1937 410.6 5387.1 156.9
Run Code Online (Sandbox Code Playgroud)
第一列是 ID,第二列是时间。我们来估计一个模型。
summary(plm(inv ~ value + capital, data=Grunfeld,
model="within"))$coe
# Estimate Std. Error t-value Pr(>|t|)
# value 0.1101238 0.01185669 9.287901 3.921108e-17
# capital 0.3100653 0.01735450 17.866564 2.220007e-42
Run Code Online (Sandbox Code Playgroud)
现在,当我们混淆第一列和第二列时,
summary(plm(inv ~ value + capital, data=Grunfeld[c(2, 1, 3:5)],
model="within"))$coe
# Estimate Std. Error t-value Pr(>|t|)
# value 0.1167978 0.006331302 18.447672 3.586220e-43
# capital 0.2197066 0.032296107 6.802881 1.503653e-10
Run Code Online (Sandbox Code Playgroud)
结果不同。但是当我们告诉plm要index=(<id>, <time>)使用哪些列时,
summary(plm(inv ~ value + capital, data=Grunfeld[c(2, 1, 3:5)],
index=c("firm", "year"),
model="within"))$coe
# Estimate Std. Error t-value Pr(>|t|)
# value 0.1101238 0.01185669 9.287901 3.921108e-17
# capital 0.3100653 0.01735450 17.866564 2.220007e-42
Run Code Online (Sandbox Code Playgroud)
我们得到了旧的结果。如果我们完全混淆了列,
summary(plm(inv ~ value + capital, data=Grunfeld[c(3:5, 1, 2)],
model="within"))$coe
# Error
Run Code Online (Sandbox Code Playgroud)
plm()确实很困惑:)但是就像以前一样,当我们帮助它时plm(),它会按预期运行并再次产生正确的结果。
summary(plm(inv ~ value + capital, data=Grunfeld[c(3:5, 1, 2)],
index=c("firm", "year"),
model="within"))$coe
# Estimate Std. Error t-value Pr(>|t|)
# value 0.1101238 0.01185669 9.287901 3.921108e-17
# capital 0.3100653 0.01735450 17.866564 2.220007e-42
Run Code Online (Sandbox Code Playgroud)
请注意,您实际上只是在计算公司固定效应。如果您打算计算具有公司和年份固定效应的模型,让我们将其作为 LSDV 模型,
summary(lm(inv ~ value + capital + factor(firm) + factor(year) - 1, Grunfeld))$coe[1:2, ]
# Estimate Std. Error t value Pr(>|t|)
# value 0.1177159 0.01375128 8.560354 6.652575e-15
# capital 0.3579163 0.02271901 15.754043 5.453066e-35
Run Code Online (Sandbox Code Playgroud)
我们看到这些值与上面不同,因为plm到目前为止 s 仅包含固定固定效应,请参见:
summary(lm(inv ~ value + capital + factor(firm) - 1, Grunfeld))$coe[1:2, ]
# Estimate Std. Error t value Pr(>|t|)
# value 0.1101238 0.01185669 9.287901 3.921108e-17
# capital 0.3100653 0.01735450 17.866564 2.220007e-42
Run Code Online (Sandbox Code Playgroud)
为了做到这一点,我们还需要指定effect="twoways"以获得公司和年份固定效应。
summary(plm(inv ~ value + capital, data=Grunfeld,
index=c("firm", "year"),
model="within", effect="twoways"))$coe
# Estimate Std. Error t-value Pr(>|t|)
# value 0.1177159 0.01375128 8.560354 6.652575e-15
# capital 0.3579163 0.02271901 15.754043 5.453066e-35
Run Code Online (Sandbox Code Playgroud)