Plm or lme4 for random and fixed effects model on panel data

Can I specify the "Random" and "Corrected effects" on the panel data using ?

I repeat Example 14.4 of Wooldridge (2013, pp. 494-5) in r. Thanks to this site and this blog post i'm doing it in the package, but I'm curious if i can do the same in ?

Here is what I did in plm . Would appreciate any guidance on how I can do the same using lme4 . First, you need packages and data loading,

# install.packages(c("wooldridge", "plm", "stargazer"), dependencies = TRUE) library(wooldridge) data(wagepan) 

Secondly, I evaluate the three models evaluated in Example 14.4 (Wooldridge 2013) using plm ,

 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 results using 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 a simple way to do this in ? Should I stick with ? Why / why?

+5
source share
1 answer

Excluded due to differences in evaluation method, this seems to be mainly a matter of vocabulary and syntax

 # 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) 

Your first example is a simple linear model that ignores nr groups.
You cannot do this with lme4 because there is no “random effect” (in the sense of lme4 ).
This is what Gelman and Hill call the full pool.

 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) 

Your second example seems to be equivalent to a mixed mixed random capture model with nr as a random effect (but the slopes of all predictors are fixed).
This is what Gelman and Hill call the partial union method.

 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) 

Your third example seems to fit the case: nr is a fixed effect, and you compute a different nr interception for each group.
Again: you cannot do this with lme4 because there is no “random effect” (in the sense of lme4 ).
This is what Gelman and Hill call "no association."

 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) 

Compare the results:

 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) Data analysis using regression and multi-level / hierarchical models. Cambridge University Press (a very good book!)

Created 2018-03-08 reprex package (v0.2.0).

+4
source

Source: https://habr.com/ru/post/1275626/


All Articles