Plot and compare regression coefficients with confidence intervals of multiple regression models in one plot.
plot_models(..., transform, std.est = NULL, rm.terms = NULL,
title = NULL, m.labels = NULL,
legend.title = "Dependent Variables", legend.pval.title = "p-level",
axis.labels = NULL, axis.title = NULL, axis.lim = NULL,
wrap.title = 50, wrap.labels = 25, wrap.legend.title = 20,
grid.breaks = NULL, dot.size = 3, spacing = 0.4, colors = "Set1",
show.values = FALSE, show.legend = TRUE, show.intercept = FALSE,
show.p = TRUE, p.shape = FALSE, p.threshold = c(0.05, 0.01, 0.001),
ci.lvl = 0.95, vcov.fun = NULL, vcov.type = c("HC3", "const", "HC",
"HC0", "HC1", "HC2", "HC4", "HC4m", "HC5"), vcov.args = NULL,
vline.color = NULL, digits = 2, grid = FALSE, auto.label = TRUE,
prefix.labels = c("none", "varname", "label"))
One or more regression models, including glm's or mixed models.
May also be a list
with fitted models. See 'Examples'.
A character vector, naming a function that will be applied
on estimates and confidence intervals. By default, transform
will
automatically use "exp"
as transformation for applicable classes of
model
(e.g. logistic or poisson regression). Estimates of linear
models remain untransformed. Use NULL
if you want the raw,
non-transformed estimates.
For linear models, choose whether standardized coefficients should be used for plotting. Default is no standardization.
NULL
(default) no standardization, returns original estimates.
"std"
standardized beta values.
"std2"
standardized beta values, however, standardization is done by rescaling estimates by dividing them by two sd (see std_beta
).
Character vector with names that indicate which terms should
be removed from the plot. Counterpart to terms
. rm.terms =
"t_name"
would remove the term t_name. Default is NULL
, i.e.
all terms are used. For factors, levels that should be removed from the plot
need to be explicitely indicated in square brackets, and match the model's
coefficient names, e.g. rm.terms = "t_name [2,3]"
would remove the terms
"t_name2"
and "t_name3"
(assuming that the variable t_name
was categorical and has at least the factor levels 2
and 3
).
Another example for the iris dataset would be
rm.terms = "Species [versicolor,virginica]"
. Note that the
rm.terms
-argument does not apply to Marginal Effects plots.
Character vector, used as plot title. By default,
get_dv_labels
is called to retrieve the label of
the dependent variable, which will be used as title. Use title = ""
to remove title.
Character vector, used to indicate the different models in the plot's legend. If not specified, the labels of the dependent variables for each model are used.
Character vector, used as legend title for plots that have a legend.
Character vector, used as title of the plot legend that
indicates the p-values. Default is "p-level"
. Only applies if
p.shape = TRUE
.
Character vector with labels for the model terms, used as
axis labels. By default, get_term_labels
is
called to retrieve the labels of the coefficients, which will be used as
axis labels. Use axis.labels = ""
or auto.label = FALSE
to
use the variable names as labels instead. If axis.labels
is a named
vector, axis labels (by default, the names of the model's coefficients)
will be matched with the names of axis.label
. This ensures that
labels always match the related axis value, no matter in which way
axis labels are sorted.
Character vector of length one or two (depending on the
plot function and type), used as title(s) for the x and y axis. If not
specified, a default labelling is chosen. Note: Some plot types
may not support this argument sufficiently. In such cases, use the returned
ggplot-object and add axis titles manually with
labs
. Use axis.title = ""
to remove axis
titles.
Numeric vector of length 2, defining the range of the plot
axis. Depending on plot-type, may effect either x- or y-axis. For
Marginal Effects plots, axis.lim
may also be a list of two
vectors of length 2, defining axis limits for both the x and y axis.
Numeric, determines how many chars of the plot title are displayed in one line and when a line break is inserted.
Numeric, determines how many chars of the value, variable or axis labels are displayed in one line and when a line break is inserted.
numeric, determines how many chars of the legend's title are displayed in one line and when a line break is inserted.
Numeric value or vector; if grid.breaks
is a
single value, sets the distance between breaks for the axis at every
grid.breaks
'th position, where a major grid line is plotted. If
grid.breaks
is a vector, values will be used to define the
axis positions of the major grid lines.
Numeric, size of the dots that indicate the point estimates.
Numeric, spacing between the dots and error bars of the plotted fitted models. Default is 0.3.
May be a character vector of color values in hex-format, valid
color value names (see demo("colors")
) or a name of a pre-defined
color palette. Following options are valid for the colors
argument:
If not specified, a default color brewer palette will be used, which is suitable for the plot style.
If "gs"
, a greyscale will be used.
If "bw"
, and plot-type is a line-plot, the plot is black/white and uses different line types to distinguish groups (see this package-vignette).
If colors
is any valid color brewer palette name, the related palette will be used. Use display.brewer.all
to view all available palette names.
There are some pre-defined color palettes in this package, see sjPlot-themes
for details.
Else specify own color values or names as vector (e.g. colors = "#00ff00"
or colors = c("firebrick", "blue")
).
Logical, whether values should be plotted or not.
For Marginal Effects plots, shows or hides the legend.
Logical, if TRUE
, the intercept of the fitted
model is also plotted. Default is FALSE
. If transform =
"exp"
, please note that due to exponential transformation of estimates,
the intercept in some cases is non-finite and the plot can not be created.
Logical, adds asterisks that indicate the significance level of estimates to the value labels.
Logical, if TRUE
, significant levels are distinguished by
different point shapes and a related legend is plotted. Default
is FALSE
.
Numeric vector of length 3, indicating the treshold for
annotating p-values with asterisks. Only applies if
p.style = "asterisk"
.
Numeric, the level of the confidence intervals (error bars).
Use ci.lvl = NA
to remove error bars. For stanreg
-models,
ci.lvl
defines the (outer) probability for the credible interval
that is plotted (see ci
). By
default, stanreg
-models are printed with two intervals: the "inner"
interval, which defaults to the 50%-CI; and the "outer" interval, which
defaults to the 89%-CI. ci.lvl
affects only the outer interval in
such cases. See prob.inner
and prob.outer
under the
...
-argument for more details.
Character vector, indicating the name of the vcov*()
-function
from the sandwich-package, e.g. vcov.fun = "vcovCL"
, if robust
standard errors are required.
Character vector, specifying the estimation type for the
robust covariance matrix estimation (see vcovHC
for details).
List of named vectors, used as additional arguments that
are passed down to vcov.fun
.
Color of the vertical "zero effect" line. Default color is inherited from the current theme.
Numeric, amount of digits after decimal point when rounding estimates or values.
Logical, if TRUE
, multiple plots are plotted as grid
layout.
Logical, if TRUE
(the default), plot-labels are
based on value and variable labels, if the data is labelled. See
get_label
and
get_term_labels
for details. If FALSE
,
original variable names and value labels (factor levels) are used.
Indicates whether the value labels of categorical variables
should be prefixed, e.g. with the variable name or variable label. See
argument prefix
in get_term_labels
for
details.
A ggplot-object.
# NOT RUN {
data(efc)
# fit three models
fit1 <- lm(barthtot ~ c160age + c12hour + c161sex + c172code, data = efc)
fit2 <- lm(neg_c_7 ~ c160age + c12hour + c161sex + c172code, data = efc)
fit3 <- lm(tot_sc_e ~ c160age + c12hour + c161sex + c172code, data = efc)
# plot multiple models
plot_models(fit1, fit2, fit3, grid = TRUE)
# plot multiple models with legend labels and
# point shapes instead of value labels
plot_models(
fit1, fit2, fit3,
axis.labels = c(
"Carer's Age", "Hours of Care", "Carer's Sex", "Educational Status"
),
m.labels = c("Barthel Index", "Negative Impact", "Services used"),
show.values = FALSE, show.p = FALSE, p.shape = TRUE
)
# plot multiple models from nested lists argument
all.models <- list()
all.models[[1]] <- fit1
all.models[[2]] <- fit2
all.models[[3]] <- fit3
plot_models(all.models)
# plot multiple models with different predictors (stepwise inclusion),
# standardized estimates
fit1 <- lm(mpg ~ wt + cyl + disp + gear, data = mtcars)
fit2 <- update(fit1, . ~ . + hp)
fit3 <- update(fit2, . ~ . + am)
plot_models(fit1, fit2, fit3, std.est = "std2")
# }
Run the code above in your browser using DataLab