plm 或 lme4 用于面板数据的随机和固定效应模型
plm or lme4 for Random and Fixed Effects model on Panel Data
我可以使用 lme4 在面板数据上指定随机和固定效应模型吗?
我正在重做 r 中 Wooldridge (2013, p. 494-5) 中的示例 14.4。多亏了这个网站和这个博客post,我才在plm包中做到了,但是我我想知道我是否可以在 lme4 包中做同样的事情?
这是我在 plm 包中所做的。如果有任何关于如何使用 lme4 执行相同操作的指示,我将不胜感激。首先,需要的包和数据加载,
# install.packages(c("wooldridge", "plm", "stargazer"), dependencies = TRUE)
library(wooldridge)
data(wagepan)
其次,我使用 plm 包估计了示例 14.4(Wooldridge 2013)中估计的三个模型,
library(plm)
Pooled.ols <- plm(lwage ~ educ + black + hisp + exper+I(exper^2)+ married + union +
factor(year), data = wagepan, index=c("nr","year") , model="pooling")
random.effects <- plm(lwage ~ educ + black + hisp + exper + I(exper^2) + married + union +
factor(year), data = wagepan, index = c("nr","year") , model = "random")
fixed.effects <- plm(lwage ~ I(exper^2) + married + union + factor(year),
data = wagepan, index = c("nr","year"), model="within")
第三,我使用 stargazer 输出结果来模拟 Wooldridge (2013) 中的 Table 14.2,
stargazer::stargazer(Pooled.ols,random.effects,fixed.effects, type="text",
column.labels=c("OLS (pooled)","Random Effects","Fixed Effects"),
dep.var.labels = c("log(wage)"), keep.stat=c("n"),
keep=c("edu","bla","his","exp","marr","union"), align = TRUE, digits = 4)
#> ======================================================
#> Dependent variable:
#> -----------------------------------------
#> log(wage)
#> OLS (pooled) Random Effects Fixed Effects
#> (1) (2) (3)
#> ------------------------------------------------------
#> educ 0.0913*** 0.0919***
#> (0.0052) (0.0107)
#>
#> black -0.1392*** -0.1394***
#> (0.0236) (0.0477)
#>
#> hisp 0.0160 0.0217
#> (0.0208) (0.0426)
#>
#> exper 0.0672*** 0.1058***
#> (0.0137) (0.0154)
#>
#> I(exper2) -0.0024*** -0.0047*** -0.0052***
#> (0.0008) (0.0007) (0.0007)
#>
#> married 0.1083*** 0.0640*** 0.0467**
#> (0.0157) (0.0168) (0.0183)
#>
#> union 0.1825*** 0.1061*** 0.0800***
#> (0.0172) (0.0179) (0.0193)
#>
#> ------------------------------------------------------
#> Observations 4,360 4,360 4,360
#> ======================================================
#> Note: *p<0.1; **p<0.05; ***p<0.01
除了估计方法的不同,这似乎确实主要是一个问题
词汇和语法
# install.packages(c("wooldridge", "plm", "stargazer", "lme4"), dependencies = TRUE)
library(wooldridge)
library(plm)
#> Le chargement a nécessité le package : Formula
library(lme4)
#> Le chargement a nécessité le package : Matrix
data(wagepan)
您的第一个示例是忽略组 nr
的简单线性模型。
你不能用 lme4 做到这一点,因为没有 "random effect"(在 lme4
意义上)。
这就是 Gelman & Hill 所说的完全池化方法。
Pooled.ols <- plm(lwage ~ educ + black + hisp + exper+I(exper^2)+ married +
union + factor(year), data = wagepan,
index=c("nr","year"), model="pooling")
Pooled.ols.lm <- lm(lwage ~ educ + black + hisp + exper+I(exper^2)+ married + union +
factor(year), data = wagepan)
你的第二个例子似乎等同于 nr
的随机截距混合模型
作为随机效应(但所有预测变量的斜率都是固定的)。
这就是 Gelman & Hill 所说的部分池化方法。
random.effects <- plm(lwage ~ educ + black + hisp + exper + I(exper^2) + married +
union + factor(year), data = wagepan,
index = c("nr","year") , model = "random")
random.effects.lme4 <- lmer(lwage ~ educ + black + hisp + exper + I(exper^2) + married +
union + factor(year) + (1|nr), data = wagepan)
你的第三个例子似乎对应一个案例 nr
是一个固定的效果,你
为每个组计算不同的 nr
截距。
再一次:你不能用 lme4
这样做,因为没有 "random effect" (在 lme4
意义上)。
这就是 Gelman & Hill 所说的 "no pooling" 方法。
fixed.effects <- plm(lwage ~ I(exper^2) + married + union + factor(year),
data = wagepan, index = c("nr","year"), model="within")
wagepan$nr <- factor(wagepan$nr)
fixed.effects.lm <- lm(lwage ~ I(exper^2) + married + union + factor(year) + nr,
data = wagepan)
比较结果:
stargazer::stargazer(Pooled.ols, Pooled.ols.lm,
random.effects, random.effects.lme4 ,
fixed.effects, fixed.effects.lm,
type="text",
column.labels=c("OLS (pooled)", "lm no pool.",
"Random Effects", "lme4 partial pool.",
"Fixed Effects", "lm compl. pool."),
dep.var.labels = c("log(wage)"),
keep.stat=c("n"),
keep=c("edu","bla","his","exp","marr","union"),
align = TRUE, digits = 4)
#>
#> =====================================================================================================
#> Dependent variable:
#> ----------------------------------------------------------------------------------------
#> log(wage)
#> panel OLS panel linear panel OLS
#> linear linear mixed-effects linear
#> OLS (pooled) lm no pool. Random Effects lme4 partial pool. Fixed Effects lm compl. pool.
#> (1) (2) (3) (4) (5) (6)
#> -----------------------------------------------------------------------------------------------------
#> educ 0.0913*** 0.0913*** 0.0919*** 0.0919***
#> (0.0052) (0.0052) (0.0107) (0.0108)
#>
#> black -0.1392*** -0.1392*** -0.1394*** -0.1394***
#> (0.0236) (0.0236) (0.0477) (0.0485)
#>
#> hisp 0.0160 0.0160 0.0217 0.0218
#> (0.0208) (0.0208) (0.0426) (0.0433)
#>
#> exper 0.0672*** 0.0672*** 0.1058*** 0.1060***
#> (0.0137) (0.0137) (0.0154) (0.0155)
#>
#> I(exper2) -0.0024*** -0.0024*** -0.0047*** -0.0047*** -0.0052*** -0.0052***
#> (0.0008) (0.0008) (0.0007) (0.0007) (0.0007) (0.0007)
#>
#> married 0.1083*** 0.1083*** 0.0640*** 0.0635*** 0.0467** 0.0467**
#> (0.0157) (0.0157) (0.0168) (0.0168) (0.0183) (0.0183)
#>
#> union 0.1825*** 0.1825*** 0.1061*** 0.1053*** 0.0800*** 0.0800***
#> (0.0172) (0.0172) (0.0179) (0.0179) (0.0193) (0.0193)
#>
#> -----------------------------------------------------------------------------------------------------
#> Observations 4,360 4,360 4,360 4,360 4,360 4,360
#> =====================================================================================================
#> Note: *p<0.1; **p<0.05; ***p<0.01
Gelman A, Hill J (2007) 使用回归和 multilevel/hierarchical 模型进行数据分析。剑桥大学出版社
(非常非常好的一本书!)
由 reprex package (v0.2.0) 创建于 2018-03-08。
我可以使用 lme4 在面板数据上指定随机和固定效应模型吗?
我正在重做 r 中 Wooldridge (2013, p. 494-5) 中的示例 14.4。多亏了这个网站和这个博客post,我才在plm包中做到了,但是我我想知道我是否可以在 lme4 包中做同样的事情?
这是我在 plm 包中所做的。如果有任何关于如何使用 lme4 执行相同操作的指示,我将不胜感激。首先,需要的包和数据加载,
# install.packages(c("wooldridge", "plm", "stargazer"), dependencies = TRUE)
library(wooldridge)
data(wagepan)
其次,我使用 plm 包估计了示例 14.4(Wooldridge 2013)中估计的三个模型,
library(plm)
Pooled.ols <- plm(lwage ~ educ + black + hisp + exper+I(exper^2)+ married + union +
factor(year), data = wagepan, index=c("nr","year") , model="pooling")
random.effects <- plm(lwage ~ educ + black + hisp + exper + I(exper^2) + married + union +
factor(year), data = wagepan, index = c("nr","year") , model = "random")
fixed.effects <- plm(lwage ~ I(exper^2) + married + union + factor(year),
data = wagepan, index = c("nr","year"), model="within")
第三,我使用 stargazer 输出结果来模拟 Wooldridge (2013) 中的 Table 14.2,
stargazer::stargazer(Pooled.ols,random.effects,fixed.effects, type="text",
column.labels=c("OLS (pooled)","Random Effects","Fixed Effects"),
dep.var.labels = c("log(wage)"), keep.stat=c("n"),
keep=c("edu","bla","his","exp","marr","union"), align = TRUE, digits = 4)
#> ======================================================
#> Dependent variable:
#> -----------------------------------------
#> log(wage)
#> OLS (pooled) Random Effects Fixed Effects
#> (1) (2) (3)
#> ------------------------------------------------------
#> educ 0.0913*** 0.0919***
#> (0.0052) (0.0107)
#>
#> black -0.1392*** -0.1394***
#> (0.0236) (0.0477)
#>
#> hisp 0.0160 0.0217
#> (0.0208) (0.0426)
#>
#> exper 0.0672*** 0.1058***
#> (0.0137) (0.0154)
#>
#> I(exper2) -0.0024*** -0.0047*** -0.0052***
#> (0.0008) (0.0007) (0.0007)
#>
#> married 0.1083*** 0.0640*** 0.0467**
#> (0.0157) (0.0168) (0.0183)
#>
#> union 0.1825*** 0.1061*** 0.0800***
#> (0.0172) (0.0179) (0.0193)
#>
#> ------------------------------------------------------
#> Observations 4,360 4,360 4,360
#> ======================================================
#> Note: *p<0.1; **p<0.05; ***p<0.01
除了估计方法的不同,这似乎确实主要是一个问题 词汇和语法
# install.packages(c("wooldridge", "plm", "stargazer", "lme4"), dependencies = TRUE)
library(wooldridge)
library(plm)
#> Le chargement a nécessité le package : Formula
library(lme4)
#> Le chargement a nécessité le package : Matrix
data(wagepan)
您的第一个示例是忽略组 nr
的简单线性模型。
你不能用 lme4 做到这一点,因为没有 "random effect"(在 lme4
意义上)。
这就是 Gelman & Hill 所说的完全池化方法。
Pooled.ols <- plm(lwage ~ educ + black + hisp + exper+I(exper^2)+ married +
union + factor(year), data = wagepan,
index=c("nr","year"), model="pooling")
Pooled.ols.lm <- lm(lwage ~ educ + black + hisp + exper+I(exper^2)+ married + union +
factor(year), data = wagepan)
你的第二个例子似乎等同于 nr
的随机截距混合模型
作为随机效应(但所有预测变量的斜率都是固定的)。
这就是 Gelman & Hill 所说的部分池化方法。
random.effects <- plm(lwage ~ educ + black + hisp + exper + I(exper^2) + married +
union + factor(year), data = wagepan,
index = c("nr","year") , model = "random")
random.effects.lme4 <- lmer(lwage ~ educ + black + hisp + exper + I(exper^2) + married +
union + factor(year) + (1|nr), data = wagepan)
你的第三个例子似乎对应一个案例 nr
是一个固定的效果,你
为每个组计算不同的 nr
截距。
再一次:你不能用 lme4
这样做,因为没有 "random effect" (在 lme4
意义上)。
这就是 Gelman & Hill 所说的 "no pooling" 方法。
fixed.effects <- plm(lwage ~ I(exper^2) + married + union + factor(year),
data = wagepan, index = c("nr","year"), model="within")
wagepan$nr <- factor(wagepan$nr)
fixed.effects.lm <- lm(lwage ~ I(exper^2) + married + union + factor(year) + nr,
data = wagepan)
比较结果:
stargazer::stargazer(Pooled.ols, Pooled.ols.lm,
random.effects, random.effects.lme4 ,
fixed.effects, fixed.effects.lm,
type="text",
column.labels=c("OLS (pooled)", "lm no pool.",
"Random Effects", "lme4 partial pool.",
"Fixed Effects", "lm compl. pool."),
dep.var.labels = c("log(wage)"),
keep.stat=c("n"),
keep=c("edu","bla","his","exp","marr","union"),
align = TRUE, digits = 4)
#>
#> =====================================================================================================
#> Dependent variable:
#> ----------------------------------------------------------------------------------------
#> log(wage)
#> panel OLS panel linear panel OLS
#> linear linear mixed-effects linear
#> OLS (pooled) lm no pool. Random Effects lme4 partial pool. Fixed Effects lm compl. pool.
#> (1) (2) (3) (4) (5) (6)
#> -----------------------------------------------------------------------------------------------------
#> educ 0.0913*** 0.0913*** 0.0919*** 0.0919***
#> (0.0052) (0.0052) (0.0107) (0.0108)
#>
#> black -0.1392*** -0.1392*** -0.1394*** -0.1394***
#> (0.0236) (0.0236) (0.0477) (0.0485)
#>
#> hisp 0.0160 0.0160 0.0217 0.0218
#> (0.0208) (0.0208) (0.0426) (0.0433)
#>
#> exper 0.0672*** 0.0672*** 0.1058*** 0.1060***
#> (0.0137) (0.0137) (0.0154) (0.0155)
#>
#> I(exper2) -0.0024*** -0.0024*** -0.0047*** -0.0047*** -0.0052*** -0.0052***
#> (0.0008) (0.0008) (0.0007) (0.0007) (0.0007) (0.0007)
#>
#> married 0.1083*** 0.1083*** 0.0640*** 0.0635*** 0.0467** 0.0467**
#> (0.0157) (0.0157) (0.0168) (0.0168) (0.0183) (0.0183)
#>
#> union 0.1825*** 0.1825*** 0.1061*** 0.1053*** 0.0800*** 0.0800***
#> (0.0172) (0.0172) (0.0179) (0.0179) (0.0193) (0.0193)
#>
#> -----------------------------------------------------------------------------------------------------
#> Observations 4,360 4,360 4,360 4,360 4,360 4,360
#> =====================================================================================================
#> Note: *p<0.1; **p<0.05; ***p<0.01
Gelman A, Hill J (2007) 使用回归和 multilevel/hierarchical 模型进行数据分析。剑桥大学出版社 (非常非常好的一本书!)
由 reprex package (v0.2.0) 创建于 2018-03-08。