如何使用固定效应获取面板数据中的各个系数和残差
How to get individual coefficients and residuals in panel data using fixed effects
我有一个面板数据,包括个人多年来的收入,我对个人的收入趋势很感兴趣,即个人多年来收入的系数,以及每个人每年的残差(收入的意外变化根据我的模型)。但是,我有很多观察结果至少在一年或几年内都缺少收入数据,因此通过线性回归,我失去了大部分观察结果。数据结构是这样的:
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)
我决定使用 运行dom 效应模型,我认为它仍然可以通过使用最大似然法来预测缺失年份的收入。然而,由于豪斯曼检验给出了显着的结果,我决定使用固定效应模型。我 运行 下面的代码,使用 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")
但是,我收到以下错误消息:
"Error in FUN(X[[i]], ...) : insufficient number of observations".
如何通过解决此错误或使用其他函数来使用 pvcm 获取单独的系数和残差?
我的原始长格式数据有 202976 个观测值和 15 年。
您有一个具有随机斜率和截距的随机效应模型。这也称为随机系数回归模型。缺失是棘手的部分,(我猜)你必须在选择你希望的方式后编写自定义代码来解决。
但据我所知,您还没有 clearly/properly 指定您的模型(至少在您的问题中)。让我们定义一些术语:
令 Y_it = 第 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)为任一层次模型生成估计值。但我确实认为您必须自己编写代码来进行估算。
包 plm
中的 fixef
函数是否提供了您正在寻找的东西?
继续你的例子:
fixef(inc.fe)
残差提取方法:
residuals(inc.fe)
我有一个面板数据,包括个人多年来的收入,我对个人的收入趋势很感兴趣,即个人多年来收入的系数,以及每个人每年的残差(收入的意外变化根据我的模型)。但是,我有很多观察结果至少在一年或几年内都缺少收入数据,因此通过线性回归,我失去了大部分观察结果。数据结构是这样的:
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)
我决定使用 运行dom 效应模型,我认为它仍然可以通过使用最大似然法来预测缺失年份的收入。然而,由于豪斯曼检验给出了显着的结果,我决定使用固定效应模型。我 运行 下面的代码,使用 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")
但是,我收到以下错误消息:
"Error in FUN(X[[i]], ...) : insufficient number of observations".
如何通过解决此错误或使用其他函数来使用 pvcm 获取单独的系数和残差?
我的原始长格式数据有 202976 个观测值和 15 年。
您有一个具有随机斜率和截距的随机效应模型。这也称为随机系数回归模型。缺失是棘手的部分,(我猜)你必须在选择你希望的方式后编写自定义代码来解决。
但据我所知,您还没有 clearly/properly 指定您的模型(至少在您的问题中)。让我们定义一些术语:
令 Y_it = 第 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)为任一层次模型生成估计值。但我确实认为您必须自己编写代码来进行估算。
包 plm
中的 fixef
函数是否提供了您正在寻找的东西?
继续你的例子:
fixef(inc.fe)
残差提取方法:
residuals(inc.fe)