【问题标题】:How to get individual coefficients and residuals in panel data using fixed effects如何使用固定效应获得面板数据中的单个系数和残差
【发布时间】:2016-09-23 16:41:32
【问题描述】:

我有一个面板数据,包括个人多年来的收入,我对个人的收入趋势感兴趣,即多年来收入的个人系数,以及每个人每年的残差(收入的意外变化根据我的模型)。但是,我有很多观察结果缺少至少一年或多年的收入数据,因此通过线性回归,我失去了大部分观察结果。数据结构是这样的:

caseid<-c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4)
years<-c(1998,2000,2002,2004,2006,2008,1998,2000,2002,2004,2006,2008,
1998,2000,2002,2004,2006,2008,1998,2000,2002,2004,2006,2008)
income<-c(1100,NA,NA,NA,NA,1300,1500,1900,2000,NA,2200,NA, 
NA,NA,NA,NA,NA,NA, 2300,2500,2000,1800,NA, 1900)
df<-data.frame(caseid, years, income)

我决定使用随机效应模型,我认为该模型仍会使用最大似然法来预测缺失年份的收入。然而,由于豪斯曼检验给出了显着的结果,我决定使用固定效应模型。我使用 plm 包运行了下面的代码:

inc.fe<-plm(income~years, data=df, model="within", effect="individual")

但是,我只得到多年的系数,而不是个人的系数;我不能得到残差。 或许可以给出一个想法,Stata中的代码应该是

 xtest caseid
 xtest income year
 predict resid, resid

然后我尝试从同一个库中运行 pvcm 函数,这是一个用于可变系数的函数。

inc.wi<-pvcm(Income~Year, data=ldf, model="within", effect="individual")

但是,我收到以下错误消息: “FUN(X[[i]], ...) 中的错误:观察次数不足”。

如何通过解决此错误或使用其他函数来使用 pvcm 获得单个系数和残差?

我的原始长格式数据有 202976 次观察和 15 年。

我也非常感谢任何关于我选择分析的方法的 cmets 或建议。 非常感谢。

【问题讨论】:

  • 所以,澄清一下,您的回归公式是income~years,您希望得到除years 以外的系数,即individuals
  • @coffeinjunky 我想获得每个人多年来收入变化的系数。我想看看它是否遵循向上的路径,向下的路径以及每个人(caseid 1,caseid 2,caseid 3,caseid 4)的趋势斜率是多少。然后,在后面的步骤中,我想看看这种个人收入趋势与一些健康变量的关系。这就是为什么我对每个人的年收入系数感兴趣的原因。
  • 你能提供一些Stata输出来显示命令xtest caseid ; xtest income year会做什么吗?我不是 Stata 专家,我的 Stata 版本也不能识别这些命令,谷歌也不能。此外,我很难理解你想要做什么。在B 上回归A 将永远不会给您提供除B 上的系数以外的任何系数,尤其是不会为个人观察提供系数。

标签: r panel-data plm random-effects


【解决方案1】:

plm 包中的 fixef 函数是否为您提供了所需的功能? 继续你的例子:

fixef(inc.fe)

残差通过以下方式提取:

residuals(inc.fe)

【讨论】:

  • 非常感谢!我现在得到了残差。我不知道这些函数,但我最近的理解是,在这样的模型中(根据其逻辑)没有办法获得单个系数,对吗?
【解决方案2】:

您有一个具有随机斜率和截距的随机效应模型。这也称为随机系数回归模型。缺失是棘手的部分,(我猜)您必须在选择您希望的方式后编写自定义代码来解决。

但据我所知,您还没有清楚/正确地指定您的模型(至少在您的问题中)。让我们定义一些术语:

令 Y_it = ind i (i= 1,..., N) 在第 t 年 (t= 1,...,T) 的收入。当我读到您的问题时,您尚未指定您希望拥有以下两个模型中的哪一个:

M1:随机截距、全局斜率、随机斜率

Y_it ~ N(\mu_i + B T + \gamma_i I T, \sigma^2) 
\mu_i ~ N(\phi_0, \tau_0^2) 
\gamma_i ~ N(\phi_1, tau_1^2)

M2:随机截距,随机斜率

Y_it ~ N(\mu_i + \gamma_i I T, \sigma^2) 
\mu_i ~ N(\phi_0, \tau_0^2) 
\gamma_i ~ N(\phi_1, tau_1^2)

此外,您的示例数据是无意义的(见下文)。如您所见,您没有有足够的观察结果来估计所有参数。我不熟悉library(plm),但上面的模型(没有缺失)可以很容易地在lme4 中估计出来。没有真实的示例数据集,我就懒得提供代码了。

R> table(df$caseid, is.na(df$income))

    FALSE TRUE
  1     2    4
  2     4    2
  3     0    6
  4     5    1

鉴于您确实存在缺失,您应该能够通过典型方法(例如 EM)为任一层次模型生成估计值。但我确实认为您必须自己编写代码来进行估算。

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 2019-11-24
    • 2021-09-05
    • 1970-01-01
    • 2021-12-03
    • 2018-08-08
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多