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.
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).
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.
For now, an example, from Mahr’s post (here,
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)
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.
Latest posts by Josh Rosenberg (see all)
- A Shiny interactive web application to quantify how robust inferences are to potential sources of bias (sensitivity analysis) - January 19, 2018
- Outcomes from a self-generated utility value intervention in science (in IJER) - December 30, 2017
- Review of ‘What’s Worth Teaching: Rethinking Curriculum in the Age of Technology’ - November 7, 2017