Examples with emmeans
Russ Lenth
8/3/2019
Source:../vignettes/emmeans-examples.Rmd
emmeans-examples.Rmd
The emmeans package provides a variety of post hoc analyses such as obtaining estimated marginal means (EMMs) and comparisons thereof, displaying these results in a graph, and a number of related tasks.
This vignette illustrates basic uses of emmeans with lm_robust
objects. For more details, refer to the emmeans package itself and its vignettes.
A factorial experiment
The warpbreaks
dataset provided in base R has the results of a two-factor experiment. We start by fitting a model
Typical use of emmeans()
is to obtain predictions, or marginal means thereof, via a formula of the form ~ primary.variables | by.variables
:
These results may be plotted as side-by-side intervals or as an interaction-style plot:
This particular example has a response transformation. That transformation is detected and we may back-transform to the original scale:
confint(emm, type = "response")
We may do comparisons and other contrasts:
pairs(emm) # pairwise comparisons
contrast(emm, "trt.vs.ctrl", ref = "L", type = "response", adjust = "mvt")
Note that with a log transformations, it is possible to back-transform comparisons, and they become ratios. With other transformations, back-transforming is not possible.
Rank-deficient models
Let’s create a variation on this example where one cell is omitted:
Note that the empty cell is detected and flagged as non-estimable.
Some additional explanation here. EMMs are based on a reference grid, defined as the grid created by all possible combinations of factor levels, together with the mean of each numerical predictor. The reference grid here (rgi
) is also an "emmGrid"
object just like the previous emm
. The grid itself is available as a data frame via the grid
member, and you can verify that the above results match those of the predict
function for the model:
predict(warpi.rlm, newdata = rgi@grid, se.fit = TRUE)
There is one exception for the empty cell. I will leave it as a user exercise to demonstrate that if we were to use different contrasts when fitting warpi.rlm
, the predictions will be the same except for the empty cell.
Multivariate models
If there is a multivariate response, it is treated as another factor that is crossed with the other factors in the model. To illustrate, consider the dataset MOats
, provided in emmeans:
By default, the pseudo-factor is named rep.meas
, but we can change it if we like:
emmeans(MOats.rlm, pairwise ~ nitro, mult.name = "nitro")
This illustrates an additional feature of emmeans
that we can put a contrast method in the left side of a formula.
Afterword
There are numerous capabilities of emmeans not illustrated here. See that package’s help files and vignettes. Using vignette("basics", "emmeans")
is a good starting point.