View source: R/plot_effect_vs_w.R
plot_effect_vs_w | R Documentation |
It plots an effect, direct or indirect, against a moderator, with confidence band if available.
plot_effect_vs_w(
object,
w = NULL,
w_label = NULL,
effect_label = NULL,
add_zero_line = TRUE,
always_draw_zero_line = FALSE,
line_linewidth = 1,
line_color = "blue",
shade_the_band = TRUE,
draw_the_intervals = TRUE,
band_fill_color = "lightgrey",
band_alpha = 0.5,
intervals_color = "black",
intervals_linetype = "longdash",
intervals_linewidth = 1,
zero_line_color = "grey",
zero_line_linewidth = 1,
zero_line_linetype = "solid",
line_args = list(),
band_args = list(),
intervals_args = list(),
zero_line_args = list(),
level = 0.95
)
fill_wlevels(to_fill, cond_out = NULL, k = 21)
object |
The output of
|
w |
The name of the moderator.
Must be present in |
w_label |
The label of the
horizontal axis. If |
effect_label |
The label of the
vertical axis. If |
add_zero_line |
Whether a
horizontal line at zero will be drawn.
Default is |
always_draw_zero_line |
If |
line_linewidth |
The width of
the line of the effect for each
level of the moderator, to be used
by |
line_color |
The color of the line
of the effect for each level of the
moderator, to be used
by |
shade_the_band |
If |
draw_the_intervals |
If |
band_fill_color |
The color of
of the confidence band, to be used
by |
band_alpha |
A number from
0 to 1 for the level
of transparency
of the confidence band, to be used
by |
intervals_color |
The color of
the lines of the confidence intervals,
to be used
by |
intervals_linetype |
The line
type of
the lines of the confidence intervals,
to be used
by |
intervals_linewidth |
The line
width of
the lines of the confidence intervals,
to be used
by |
zero_line_color |
The color of
the line at zero,
to be used
by |
zero_line_linewidth |
The line
width of
the line at zero,
to be used
by |
zero_line_linetype |
The line
type of
the line at zero,
to be used
by |
line_args |
A named list of
additional arguments to be passed
to |
band_args |
A named list of
additional arguments to be passed
to |
intervals_args |
A named list of
additional arguments to be passed
to |
zero_line_args |
A named list of
additional arguments to be passed
to |
level |
The level of confidence
for the confidence intervals computed
from the original standard errors. Used only for
paths without mediators and both
|
to_fill |
The output of
|
cond_out |
If |
k |
The desired number of levels of the moderator. |
It receives an output
of cond_indirect_effects()
and
plot the effect against the
moderator. The effect can be an
indirect effect or a direct effect.
It uses the levels of the moderator
stored in the output of
cond_indirect_effects()
. Therefore,
the desired levels of the moderator
to be plotted needs to be specified
when calling cond_indirect_effects()
,
as illustrated in the example.
Currently, this function only supports a path with exactly one moderator, and the moderator is a numeric variable.
If the following conditions are met, the stored standard errors, if available, will be used to form the confidence intervals:
Confidence intervals have not been formed (e.g., by bootstrapping or Monte Carlo).
The path has no mediators.
The model has only one group.
The path is moderated by one or more moderator.
Both the x
-variable and the
y
-variable are not standardized.
If the model is fitted by OLS
regression (e.g., using stats::lm()
),
then the variance-covariance matrix
of the coefficient estimates will be
used, and confidence
intervals are computed from the t
statistic.
If the model is fitted by structural
equation modeling using lavaan
, then
the variance-covariance computed by
lavaan
will be used,
and confidence intervals are computed
from the z statistic.
If the model is fitted by structural equation modeling and has moderators, the standard errors, p-values, and confidence interval computed from the variance-covariance matrices for conditional effects can only be trusted if all covariances involving the product terms are free. If any of them are fixed, for example, fixed to zero, it is possible that the model is not invariant to linear transformation of the variables.
The function fill_wlevels()
is
a helper to automatically
fill in additional levels
of the moderators, to plot a graph
with smooth confidence band. It
accepts the output of cond_indirect_effects()
or pseudo_johnson_neyman()
, finds
the range of the values of the
moderator, and returns an output
of cond_indirect_effects()
with
the desired number of levels within
this range. It is intended to be a
helper. If it does not work, users
can still get the desired number of
levels by setting the values manually
when calling cond_indirect_effects()
.
plot_effect_vs_w()
returns a
ggplot2
graph. Plotted if
not assigned to a name. It can be
further modified like a usual
ggplot2
graph.
fill_wlevels()
returns an updated
output of cond_indirect_effects()
with the desired number of levels of
the moderator.
cond_indirect_effects()
dat <- data_med_mod_a
lm_m <- lm(m ~ x*w + c1 + c2, dat)
lm_y <- lm(y ~ m + x + c1 + c2, dat)
fit_lm <- lm2list(lm_m, lm_y)
# Set R to a large value in real research.
boot_out_lm <- do_boot(fit_lm,
R = 50,
seed = 54532,
parallel = FALSE,
progress = FALSE)
# Compute the conditional indirect effects
# from 2 SD below mean to 2 SD above mean of the moderator,
# by setting sd_from_mean of cond_indirect_effects().
# Set length.out to a larger number for a smooth graph.
out_lm <- cond_indirect_effects(wlevels = "w",
x = "x",
y = "y",
m = "m",
fit = fit_lm,
sd_from_mean = seq(-2, 2, length.out = 10),
boot_ci = TRUE,
boot_out = boot_out_lm)
p <- plot_effect_vs_w(out_lm)
p
# The output is a ggplot2 graph and so can be further customized
library(ggplot2)
# Add the line for the mean of w, the moderator
p2 <- p + geom_vline(xintercept = mean(dat$w),
color = "red")
p2
# Use fill_wlevels to add moderator levels:
dat <- data_med_mod_a
lm_m <- lm(m ~ x*w + c1 + c2, dat)
lm_y <- lm(y ~ m + x + c1 + c2, dat)
fit_lm <- lm2list(lm_m, lm_y)
wlevels <- mod_levels(w = "w",
sd_from_mean = c(-3, 0, 3),
fit = fit_lm)
wlevels
cond_out <- cond_indirect_effects(wlevels = wlevels,
x = "x",
y = "m",
fit = fit_lm)
cond_out
# Only 3 points
p1 <- plot_effect_vs_w(cond_out)
p1
# Increase the number of levels to 15
cond_out_filled <- fill_wlevels(cond_out,
k = 15)
cond_out_filled
p2 <- plot_effect_vs_w(cond_out_filled)
p2
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.