# plot_comparisons: Plot Conditional or Marginal Comparisons In marginaleffects: Predictions, Comparisons, Slopes, Marginal Means, and Hypothesis Tests

 plot_comparisons R Documentation

## Plot Conditional or Marginal Comparisons

### Description

Plot comparisons on the y-axis against values of one or more predictors (x-axis, colors/shapes, and facets).

The `by` argument is used to plot marginal comparisons, that is, comparisons made on the original data, but averaged by subgroups. This is analogous to using the `by` argument in the `comparisons()` function.

The `condition` argument is used to plot conditional comparisons, that is, comparisons made on a user-specified grid. This is analogous to using the `newdata` argument and `datagrid()` function in a `comparisons()` call. All variables whose values are not specified explicitly are treated as usual by `datagrid()`, that is, they are held at their mean or mode (or rounded mean for integers). This includes grouping variables in mixed-effects models, so analysts who fit such models may want to specify the groups of interest using the `condition` argument, or supply model-specific arguments to compute population-level estimates. See details below.

See the "Plots" vignette and website for tutorials and information on how to customize plots:

• https://marginaleffects.com/vignettes/plot.html

• https://marginaleffects.com

### Usage

``````plot_comparisons(
model,
variables = NULL,
condition = NULL,
by = NULL,
newdata = NULL,
type = NULL,
vcov = NULL,
conf_level = 0.95,
wts = FALSE,
comparison = "difference",
transform = NULL,
rug = FALSE,
gray = FALSE,
draw = TRUE,
...
)
``````

### Arguments

 `model` Model object `variables` Name of the variable whose contrast we want to plot on the y-axis. `condition` Conditional slopes Character vector (max length 4): Names of the predictors to display. Named list (max length 4): List names correspond to predictors. List elements can be: Numeric vector Function which returns a numeric vector or a set of unique categorical values Shortcut strings for common reference values: "minmax", "quartile", "threenum" 1: x-axis. 2: color/shape. 3: facet (wrap if no fourth variable, otherwise cols of grid). 4: facet (rows of grid). Numeric variables in positions 2 and 3 are summarized by Tukey's five numbers `?stats::fivenum`. `by` Aggregate unit-level estimates (aka, marginalize, average over). Valid inputs: `FALSE`: return the original unit-level estimates. `TRUE`: aggregate estimates for each term. Character vector of column names in `newdata` or in the data frame produced by calling the function without the `by` argument. Data frame with a `by` column of group labels, and merging columns shared by `newdata` or the data frame produced by calling the same function without the `by` argument. See examples below. For more complex aggregations, you can use the `FUN` argument of the `hypotheses()` function. See that function's documentation and the Hypothesis Test vignettes on the `marginaleffects` website. `newdata` When `newdata` is `NULL`, the grid is determined by the `condition` argument. When `newdata` is not `NULL`, the argument behaves in the same way as in the `comparisons()` function. `type` string indicates the type (scale) of the predictions used to compute contrasts or slopes. This can differ based on the model type, but will typically be a string such as: "response", "link", "probs", or "zero". When an unsupported string is entered, the model-specific list of acceptable values is returned in an error message. When `type` is `NULL`, the first entry in the error message is used by default. `vcov` Type of uncertainty estimates to report (e.g., for robust standard errors). Acceptable values: FALSE: Do not compute standard errors. This can speed up computation considerably. TRUE: Unit-level standard errors using the default `vcov(model)` variance-covariance matrix. String which indicates the kind of uncertainty estimates to return. Heteroskedasticity-consistent: `"HC"`, `"HC0"`, `"HC1"`, `"HC2"`, `"HC3"`, `"HC4"`, `"HC4m"`, `"HC5"`. See `?sandwich::vcovHC` Heteroskedasticity and autocorrelation consistent: `"HAC"` Mixed-Models degrees of freedom: "satterthwaite", "kenward-roger" Other: `"NeweyWest"`, `"KernHAC"`, `"OPG"`. See the `sandwich` package documentation. One-sided formula which indicates the name of cluster variables (e.g., `~unit_id`). This formula is passed to the `cluster` argument of the `sandwich::vcovCL` function. Square covariance matrix Function which returns a covariance matrix (e.g., `stats::vcov(model)`) `conf_level` numeric value between 0 and 1. Confidence level to use to build a confidence interval. `wts` logical, string or numeric: weights to use when computing average predictions, contrasts or slopes. These weights only affect the averaging in `⁠avg_*()⁠` or with the `by` argument, and not unit-level estimates. See `?weighted.mean` string: column name of the weights variable in `newdata`. When supplying a column name to `wts`, it is recommended to supply the original data (including the weights variable) explicitly to `newdata`. numeric: vector of length equal to the number of rows in the original data or in `newdata` (if supplied). FALSE: Equal weights. TRUE: Extract weights from the fitted object with `insight::find_weights()` and use them when taking weighted averages of estimates. Warning: `newdata=datagrid()` returns a single average weight, which is equivalent to using `wts=FALSE` `comparison` How should pairs of predictions be compared? Difference, ratio, odds ratio, or user-defined functions. string: shortcuts to common contrast functions. Supported shortcuts strings: difference, differenceavg, differenceavgwts, dydx, eyex, eydx, dyex, dydxavg, eyexavg, eydxavg, dyexavg, dydxavgwts, eyexavgwts, eydxavgwts, dyexavgwts, ratio, ratioavg, ratioavgwts, lnratio, lnratioavg, lnratioavgwts, lnor, lnoravg, lnoravgwts, lift, liftavg, liftavgwts, expdydx, expdydxavg, expdydxavgwts See the Comparisons section below for definitions of each transformation. function: accept two equal-length numeric vectors of adjusted predictions (`hi` and `lo`) and returns a vector of contrasts of the same length, or a unique numeric value. See the Transformations section below for examples of valid functions. `transform` string or function. Transformation applied to unit-level estimates and confidence intervals just before the function returns results. Functions must accept a vector and return a vector of the same length. Support string shortcuts: "exp", "ln" `rug` TRUE displays tick marks on the axes to mark the distribution of raw data. `gray` FALSE grayscale or color plot `draw` `TRUE` returns a `ggplot2` plot. `FALSE` returns a `data.frame` of the underlying data. `...` Additional arguments are passed to the `predict()` method supplied by the modeling package.These arguments are particularly useful for mixed-effects or bayesian models (see the online vignettes on the `marginaleffects` website). Available arguments can vary from model to model, depending on the range of supported arguments by each modeling package. See the "Model-Specific Arguments" section of the `?slopes` documentation for a non-exhaustive list of available arguments.

### Value

A `ggplot2` object

### Model-Specific Arguments

Some model types allow model-specific arguments to modify the nature of marginal effects, predictions, marginal means, and contrasts. Please report other package-specific `predict()` arguments on Github so we can add them to the table below.

https://github.com/vincentarelbundock/marginaleffects/issues

 Package Class Argument Documentation `brms` `brmsfit` `ndraws` brms::posterior_predict `re_formula` brms::posterior_predict `lme4` `merMod` `re.form` lme4::predict.merMod `allow.new.levels` lme4::predict.merMod `glmmTMB` `glmmTMB` `re.form` glmmTMB::predict.glmmTMB `allow.new.levels` glmmTMB::predict.glmmTMB `zitype` glmmTMB::predict.glmmTMB `mgcv` `bam` `exclude` mgcv::predict.bam `gam` `exclude` mgcv::predict.gam `robustlmm` `rlmerMod` `re.form` robustlmm::predict.rlmerMod `allow.new.levels` robustlmm::predict.rlmerMod `MCMCglmm` `MCMCglmm` `ndraws` `sampleSelection` `selection` `part` sampleSelection::predict.selection

### Examples

``````mod <- lm(mpg ~ hp * drat * factor(am), data = mtcars)

plot_comparisons(mod, variables = "hp", condition = "drat")

plot_comparisons(mod, variables = "hp", condition = c("drat", "am"))

plot_comparisons(mod, variables = "hp", condition = list("am", "drat" = 3:5))

plot_comparisons(mod, variables = "am", condition = list("hp", "drat" = range))

plot_comparisons(mod, variables = "am", condition = list("hp", "drat" = "threenum"))
``````

marginaleffects documentation built on Sept. 12, 2024, 7:26 a.m.