
Introduction: Plotting Adjusted Predictions and Marginal Effects
Daniel Lüdecke
2023-09-27
Source:vignettes/introduction_plotmethod.Rmd
introduction_plotmethod.Rmd
plot()-method
This vignettes demonstrates the plot()
-method of the
ggeffects-package. It is recommended to read the general introduction first, if you haven’t
done this yet.
If you don’t want to write your own ggplot-code,
ggeffects has a plot()
-method with some
convenient defaults, which allows quickly creating ggplot-objects.
plot()
has some arguments to tweak the plot-appearance. For
instance, show_ci
allows you to show or hide confidence
bands (or error bars, for discrete variables), facets
allows you to create facets even for just one grouping variable, or
colors
allows you to quickly choose from some
color-palettes, including black & white colored plots. Use
show_data
to add the raw data points to the plot.
ggeffects supports labelled data and
the plot()
-method automatically sets titles, axis - and
legend-labels depending on the value and variable labels of the
data.
library(ggeffects)
library(sjmisc)
data(efc)
efc$c172code <- to_label(efc$c172code)
fit <- lm(barthtot ~ c12hour + neg_c_7 + c161sex + c172code, data = efc)
No Facets, in Black & White
# don't use facets, b/w figure, w/o confidence bands
plot(dat, colors = "bw", show_ci = FALSE)
Automatic Facetting
# for three variables, automatic facetting
dat <- ggpredict(fit, terms = c("c12hour", "c172code", "c161sex"))
plot(dat)
Automatic Selection of Error Bars or Confidence Bands
# categorical variables have errorbars
dat <- ggpredict(fit, terms = c("c172code", "c161sex"))
plot(dat)
Connect Discrete Data Points with Lines
# point-geoms for discrete x-axis can be connected with lines
plot(dat, connect_lines = TRUE)
Create Panel Plots for more than three Terms
For three grouping variable (i.e. if terms
is of length
four), one plot per panel
(the values of the fourth
variable in terms
) is created, and a single, integrated
plot is produced by default. Use one_plot = FALSE
to return
one plot per panel.
# for four variables, automatic facetting and integrated panel
dat <- ggpredict(fit, terms = c("c12hour", "c172code", "c161sex", "neg_c_7"))
# use 'one.plot = FALSE' for returning multiple single plots
plot(dat, one_plot = TRUE)
Change appearance of confidence bands
In some plots, the the confidence bands are not represented by a
shaded area (ribbons), but rather by error bars (with line), dashed or
dotted lines. Use ci_style = "errorbar"
,
ci_style = "dash"
or ci_style = "dot"
to
change the style of confidence bands.
Log-transform y-axis for binomial models
For binomial models, the y-axis indicates the predicted probabilities of an event. In this case, error bars are not symmetrical.
library("lme4")
m <- glm(
cbind(incidence, size - incidence) ~ period,
family = binomial,
data = lme4::cbpp
)
dat <- ggpredict(m, "period")
# normal plot, asymmetrical error bars
plot(dat)
Here you can use log_y
to log-transform the y-axis. The
plot()
-method will automatically choose axis breaks and
limits that fit well to the value range and log-scale.
# plot with log-transformed y-axis
plot(dat, log_y = TRUE)
Control y-axis appearance
Furthermore, arguments in ...
are passed down to
ggplot::scale_y_continuous()
(resp.
ggplot::scale_y_log10()
, if log_y = TRUE
), so
you can control the appearance of the y-axis.
# plot with log-transformed y-axis, modify breaks
plot(
dat, log_y = TRUE,
breaks = c(0.05, 0.1, 0.15, 0.2, 0.25, 0.3),
limits = c(0.01, 0.3)
)
Survival models
ggpredict()
also supports coxph
-models from
the survival-package and is able to either plot
risk-scores (the default), probabilities of survival
(type = "survival"
) or cumulative hazards
(type = "cumulative_hazard"
).
Since probabilities of survival and cumulative hazards are changing
across time, the time-variable is automatically used as x-axis in such
cases, so the terms
-argument only needs up to two
variables.
library(survival)
data("lung2")
m <- coxph(Surv(time, status) ~ sex + age + ph.ecog, data = lung2)
# predicted risk-scores
pr <- ggpredict(m, c("sex", "ph.ecog"))
plot(pr)
Custom color palettes
The ggeffects-package has a few pre-defined
color-palettes that can be used with the colors
-argument.
Use show_pals()
to see all available palettes.
Here are two examples showing how to use pre-defined colors:
dat <- ggpredict(fit, terms = c("c172code", "c12hour [quart]"))
plot(dat, colors = "hero", dodge = 0.4) # increase space between error bars