【问题标题】:Why do fixed effect and dummy variable models differ?为什么固定效应模型和虚拟变量模型不同?
【发布时间】:2022-01-06 15:46:33
【问题描述】:

虚拟年份(1995 年是省略的年份):

Call:
plm(formula = mrateunder5 ~ GDPPPP + factor(Year), data = FinalData, 
    model = "within", index = "Country")

Unbalanced Panel: n = 47, T = 1-3, N = 69

Residuals:
    Min.  1st Qu.   Median  3rd Qu.     Max. 
-11.4818  -1.9533   0.0000   1.9816  11.4818 

Coefficients:
                    Estimate  Std. Error t-value  Pr(>|t|)    
GDPPPP             0.0134389   0.0044836  2.9974   0.00773 ** 
factor(Year)2000 -15.4565645   6.2679791 -2.4660   0.02394 *  
factor(Year)2005 -39.5441044   6.6982650 -5.9036 1.374e-05 ***
factor(Year)2010 -59.1835897   9.9644448 -5.9395 1.276e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares:    6722.6
Residual Sum of Squares: 1237.5
R-Squared:      0.81592
Adj. R-Squared: 0.30457
F-statistic: 19.9453 on 4 and 18 DF, p-value: 2.0253e-06

当我将年份和国家作为虚拟变量时,我的 GDP 系数值相同。

作为固定效应的年份:

Call:
plm(formula = mrateunder5 ~ GDPPPP, data = FinalData, model = "within", 
    index = c("Year", "Country"))

Unbalanced Panel: n = 4, T = 4-28, N = 69

Residuals:
   Min. 1st Qu.  Median 3rd Qu.    Max. 
-59.296 -24.494  -6.722  19.180 107.636 

Coefficients:
         Estimate Std. Error t-value  Pr(>|t|)    
GDPPPP -0.0251533  0.0030549 -8.2338 1.249e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares:    183330
Residual Sum of Squares: 89024
R-Squared:      0.5144
Adj. R-Squared: 0.48405
F-statistic: 67.7951 on 1 and 64 DF, p-value: 1.2488e-1

如您所见,“GDPPPP”的系数估计值不同。第二个模型的结果是我更喜欢的结果(负系数,因为较高的 GDP 水平会导致较低的死亡率)。

为什么这些不同 - 它们应该匹配吗?

我认为这可能是因为我的数据不完整(某些国家/地区的数据丢失了一些年份 - 例如,对于阿富汗,我缺少前两个时间段(1995 年和 2000 年),但我有 2005 年的阿富汗数据和2010)。

我的模型之一是否丢弃了不完整的数据?哪一个?有没有办法让模型匹配?

【问题讨论】:

  • 也就是说,如果您可以共享数据样本(例如,使用dput())以供他人复制和粘贴以获得相同的结果,这将非常有帮助。
  • 模型是否“应该”匹配,如果一个模型是对另一个模型进行系数转换等的重新参数化,对我来说似乎是统计问题,而不是程序问题。我认为您会在 Cross Validated 获得更好的答案和更快的答案。
  • 你不应该更喜欢一个模型,因为它的结果符合你的先入为主。在这种情况下,与第一个模型相比,第二个模型糟糕:只需查看残差分布即可。

标签: r plm


【解决方案1】:

您使用的两个命令估计了两个不同的模型。为了说明,我使用Grunfeld 数据集;您可以将其firm 变量视为您的Country 变量,将其year 变量视为您的Year 变量。

您的第一个模型:

您有效地估计了一个双向固定效应模型,其中时间固定效应通过假人(+factor(year) 部分)显式建模(有时称为 LSDV - 最小二乘假人(方法);在这里,您将时间维度作为显式假人,而将单个维度隐含地使用)。

您也可以通过 effect 参数将其设置为 "twoways" 来获得该模型,省略显式假人(这是 Frisch-Waugh-Lovell 定理 [1])。 value 的系数在两种情况下都是 0.17997:

library(plm)
data("Grunfeld", package = "plm")

# corresponds to your 1st model:
plm(formula = inv ~ value + factor(year), data = Grunfeld, 
    model = "within", index = c("firm", "year"))
#> 
#> Model Formula: inv ~ value + factor(year)
#> 
#> Coefficients:
#>            value factor(year)1936 factor(year)1937 factor(year)1938 
#>          0.17997        -38.10560        -66.31173        -20.32730 
#> factor(year)1939 factor(year)1940 factor(year)1941 factor(year)1942 
#>        -59.30898        -36.24559         -1.50065         18.71706 
#> factor(year)1943 factor(year)1944 factor(year)1945 factor(year)1946 
#>         -6.73151         -9.46490        -26.44724         -0.73981 
#> factor(year)1947 factor(year)1948 factor(year)1949 factor(year)1950 
#>         34.82737         47.09646         28.68980         29.79853 
#> factor(year)1951 factor(year)1952 factor(year)1953 factor(year)1954 
#>         36.74272         52.86057         64.20592         69.57366

# same with effect = "twoways"
plm(formula = inv ~ value , data = Grunfeld, 
    model = "within", index = c("firm", "year"), effect = "twoways")
#> 
#> Model Formula: inv ~ value
#> 
#> Coefficients:
#>   value 
#> 0.17997

您的第二个模型:

您在参数index 中切换了索引变量,因此plm 将时间维度作为观察单位(单个索引),反之亦然,另请参阅第二个模型中的输出n = 4, T = 4-28, N = 69n = 47, T = 1-3, N = 69在你的第一个。

您有效地估计了一个单向时间效应模型。您可以拥有相同的模型,而不会混淆个人和时间维度,并且 - 再次 - 通过使用 effect 参数(设置为 "time")。你得到相同的价值系数:0.13983。

# your approach
plm(formula = inv ~ value, data = Grunfeld, 
    model = "within", index = c("year", "firm"))
#> 
#> Model Formula: inv ~ value
#> 
#> Coefficients:
#>   value 
#> 0.13983

# one-way time effect model
plm(formula = inv ~ value, data = Grunfeld, 
    model = "within", index = c("firm", "year"), effect = "time")
#> 
#> Model Formula: inv ~ value
#> 
#> Coefficients:
#>   value 
#> 0.13983

我建议您重新访问plm 包第一个小插图以获取更多说明。如果您以适当的方式使用indexeffect 参数,估计模型上的summary() 命令将为您提供一个关于估计模型的漂亮标题。

基于虚拟模型的固定效应可以通过commandfixef在其他模型中获得,这里是带有参数effect = "time"type = "dfirst"的双向模型中的时间效应:

fixef(plm(formula = inv ~ value , data = Grunfeld, model = "within", 
      index = c("firm", "year"), effect = "twoways"),
   effect = "time", type = "dfirst")
#>      1936      1937      1938      1939      1940      1941      1942      1943 
#> -38.10560 -66.31173 -20.32730 -59.30898 -36.24559  -1.50065  18.71706  -6.73151 
#>      1944      1945      1946      1947      1948      1949      1950      1951 
#>  -9.46490 -26.44724  -0.73981  34.82737  47.09646  28.68980  29.79853  36.74272 
#>      1952      1953      1954 
#>  52.86057  64.20592  69.57366

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2021-08-07
    • 1970-01-01
    • 2012-11-07
    • 2021-12-24
    • 2017-10-18
    相关资源
    最近更新 更多