我有一个小组数据,包括多年来个人的收入,我对个人的收入趋势感兴趣,即多年收入的个人系数,以及每个人每年的残差(根据收入的意外变化)我的模特)。但是,我有很多关于缺少收入数据至少一年或多年的观察结果,因此通过线性回归我失去了大部分的观察结果。数据结构如下:
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年。
我也非常感谢对我选择分析的方法提出任何意见或建议。 非常感谢你。
答案 0 :(得分:2)
包fixef
中的plm
功能是否可以满足您的要求?
继续你的例子:
fixef(inc.fe)
通过以下方式提取残差:
residuals(inc.fe)
答案 1 :(得分:0)
你有一个随机斜率和截距的随机效应模型。这也称为随机系数回归模型。缺失是棘手的部分,(我猜)你必须编写自定义代码来解决你选择的方式。
但据我所知,你没有清楚/正确地指明你的模型(至少在你的问题中)。我们来定义一些术语:
设Y_it =年t中的ind i(i = 1,...,N)的收入(t = 1,...,T)。当我读到你的问题时,你没有说明你希望拥有以下两个模型中的哪一个:
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)
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)生成任一层次模型的估计值。但我认为你必须自己编写代码来进行估算。