Can I specify a Random and a Fixed Effects model on Panel Data using lme4?
I am redoing Example 14.4 from Wooldridge (2013, p. 494-5) in r. Thanks to this site and this blog post I've manged to do it in the plm package, but I'm curious if I can do the same in the lme4 package?
Here's what I've done in the plm package. Would be grateful for any pointers as to how I can do the same using lme4. First, packages needed and loading of data,
# install.packages(c("wooldridge", "plm", "stargazer"), dependencies = TRUE)
library(wooldridge)
data(wagepan)
Second, I estimate the three models estimated in Example 14.4 (Wooldridge 2013) using the plm package,
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")
Third, I output the resultants using stargazer to emulate Table 14.2 in Wooldridge (2013),
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
is there an equally simple way to do this in lme4? Should I stick to plm? Why/Why not?
lme4
is about the maximum likely framework, so it won't be the "same": plm's vignette ch. 7 has some comparison to pkgnlme
which is similar tolme4
and you should be able to take it from there. – Polysyndeton