An R package for plotting partially pooled estimates for mixed-effects models

Written by: Josh Rosenberg

Primary Source:  Joshua M. Rosenberg – July 21, 2017

I came across this excellent post from Tristan Mahr on plotting partially pooled estimates for mixed-effects models and was inspired to create an R package for it based on the code in the post. I found mixed models made more sense to me when I thought of them in terms of partial pooling, and I had been looking for ways to plot partially pooled estimates both as a more accessible way into telling others about mixed effects models and as a way to assess the fit of and better understand mixed effects models when I came across Mahr’s post.

Background

As a bit of background (this is from the Description for the package):

Scholars have defined mixed effects models as a compromise between complete pooling estimates (i.e., those from a linear model ignoring a grouping factor), no pooling estimates (i.e., a linear model for which each level of the grouping factor is dummy-coded), and partially pooled estimates (i.e., those from mixed effects models, for which group-specific estimates are shrunken to (or gather strength from) the overall estimates (Gelman & Hill, 2007).

lme4plotpartial

The package, tentatively and not very interestingly named lme4plotpartial, is on GitHub here. It loads a function, plot_partial_pooling(), that plots the complete pooling, no pooling, and partially pooled estimates for a mixed effects model.

Example

For now, an example, from Mahr’s post (here, dplyr and lme4 are loaded for data procesing and a data file, respectively):

library(dplyr, warn.conflicts = FALSE)
library(lme4)
library(lme4plotpartial)

sleepstudy <- sleepstudy %>% 
  as_tibble() %>% 
  mutate(Subject = as.character(Subject))

plot_partial_pooling(sleepstudy, y_var = Reaction, x_var = Days, group = Subject)

Future improvements

In terms of potential improvements, an idea that would vastly expand functionality is to parse a lme4() formula to specify the variables.

As a bit of reflection: The best part about creating this package, to me, was that after making I messaged Tristan, who then took time to (immensely) improve on it (in changes that are now reflected in the version of it available on GitHub). It was a cool example of the benefits of sharing (in my case, even in-progress work), because others can then use it.

Check it out and let us know what you think.

The following two tabs change content below.
Joshua M. Rosenberg is a Ph.D. student in the Educational Psychology and Educational Technology program at Michigan State University. In his research, Joshua focuses on how social and cultural factors affect teaching and learning with technologies, in order to better understand and design learning environments that support learning for all students. Joshua currently serves as the associate chair for the Technological Pedagogical Content Knowledge (TPACK) Special Interest Group in the Society for Information Technology and Teacher Education. Joshua was previously a high school science teacher, and holds degrees in education (M.A.) and biology (B.S.).