[英]plm: Fixed Effects Regression - Index / ID order
我正在使用plm
包運行固定效應回歸。 ID 代碼的順序為什么以及如何對回歸產生影響?
我使用這些代碼來運行回歸,它們僅在 ID 代碼Company
和Year
的順序之間有所不同。
編碼:
MV_Year <- plm (MVlog ~ LEV + Size + DY + RDlog
, data=Values, model="within", index= c("Year","Company"))
MV_Company <- plm (MVlog ~ LEV + Size + DY + RDlog,
data=Values, model="within", index= c("Company", "Year"))
相應的輸出: MV_Year:
Oneway (individual) effect Within Model
Call:
plm(formula = MVlog ~ LEV + Size + DY + RDlog, data = Values,
model = "within", index = c("Year", "Company"))
Unbalanced Panel: n = 17, T = 557-4280, N = 29890
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-5.250901 -0.457100 0.015763 0.476140 6.006483
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
LEV -1.95485031 0.04060539 -48.143 < 2e-16 ***
Size 0.75233709 0.00314849 238.952 < 2e-16 ***
DY -0.00033192 0.00013482 -2.462 0.01382 *
RDlog 0.13148626 0.00300509 43.755 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Total Sum of Squares: 102610
Residual Sum of Squares: 17568
R-Squared: 0.82879
Adj. R-Squared: 0.82868
F-statistic: 36148 on 4 and 29869 DF, p-value: < 2.22e-16
MV_公司
Oneway (individual) effect Within Model
Call:
plm(formula = MVlog ~ LEV + Size + DY + RDlog, data = Values,
model = "within", index = c("Company", "Year"))
Unbalanced Panel: n = 5911, T = 1-17, N = 29890
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-4.35967 -0.38711 0.00000 0.40528 5.48624
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
LEV -1.88958140 0.04392991 -43.0135 < 2e-16 ***
Size 0.74650676 0.00375926 198.5782 < 2e-16 ***
DY -0.00034308 0.00014585 -2.3524 0.01866 *
RDlog 0.13904360 0.00331886 41.8950 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Total Sum of Squares: 58168
Residual Sum of Squares: 12747
R-Squared: 0.78085
Adj. R-Squared: 0.72679
F-statistic: 21356.2 on 4 and 23975 DF, p-value: < 2.22e-16
為什么輸出在不同的估計和 R^2 之間有這些小的差異?
index=
選項的原因是plm()
內部使用pdata.frame()
,如果相應的名稱沒有由index=(<id>, <time>)
指定,它期望第一列是"id"
,第二列是"time"
index=(<id>, <time>)
從?pdata.frame
我們可以讀到:
index 參數指示面板的尺寸。 有可能:
- 包含個人姓名和時間索引的兩個字符串的向量,
- 一個字符串,它是單個索引變量的名稱。 在這種情況下,時間索引是自動創建的,並且
添加一個名為“時間”的新變量,假設連續和
按原始數據的順序升序時間段,...
下面的例子將幫助我們理解這一點。 首先我們加載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
第一列是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
現在,當我們混淆第一列和第二列時,
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
結果是不同的。 但是當我們通過index=(<id>, <time>)
告訴plm
要使用哪些列時,
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
我們得到舊的結果。 如果我們完全混淆了列,
summary(plm(inv ~ value + capital, data=Grunfeld[c(3:5, 1, 2)],
model="within"))$coe
# Error
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
請注意,您實際上只是在計算公司的固定效應。 如果您打算計算具有公司和年份固定效應的模型,讓我們將其作為 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
我們看到這些值與上面的不同,因為plm
到目前為止只包含了公司固定效應,請參閱:
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
為了做到這一點,我們還需要指定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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.