View source: R/simple_slopes.R
sim_slopes | R Documentation |
sim_slopes
conducts a simple slopes analysis for the purposes of
understanding two- and three-way interaction effects in linear regression.
sim_slopes(
model,
pred,
modx,
mod2 = NULL,
modx.values = NULL,
mod2.values = NULL,
centered = "all",
at = NULL,
data = NULL,
cond.int = FALSE,
johnson_neyman = TRUE,
jnplot = FALSE,
jnalpha = 0.05,
robust = FALSE,
digits = getOption("jtools-digits", default = 2),
pvals = TRUE,
confint = FALSE,
ci.width = 0.95,
cluster = NULL,
modx.labels = NULL,
mod2.labels = NULL,
v.cov = NULL,
v.cov.args = NULL,
...
)
model |
A regression model. The function is tested with |
pred |
The name of the predictor variable involved
in the interaction. This can be a bare name or string. Note that it
is evaluated using |
modx |
The name of the moderator variable involved
in the interaction. This can be a bare name or string. The same
|
mod2 |
Optional. The name of the second moderator
variable involved in the interaction. This can be a bare name or string.
The same |
modx.values |
For which values of the moderator should lines be plotted? There are two basic options:
Default is If the moderator is a factor variable and |
mod2.values |
For which values of the second moderator should the plot
be
facetted by? That is, there will be a separate plot for each level of this
moderator. Defaults are the same as |
centered |
A vector of quoted variable names that are to be
mean-centered. If |
at |
If you want to manually set the values of other variables in the
model, do so by providing a named list where the names are the variables and
the list values are vectors of the values. Note that you cannot alter the
values of the |
data |
Optional, default is NULL. You may provide the data used to
fit the model. This can be a better way to get mean values for centering
and can be crucial for models with variable transformations in the formula
(e.g., |
cond.int |
Should conditional intercepts be printed in addition to the
slopes? Default is |
johnson_neyman |
Should the Johnson-Neyman interval be calculated?
Default is |
jnplot |
Should the Johnson-Neyman interval be plotted as well? Default
is |
jnalpha |
What should the alpha level be for the Johnson-Neyman interval? Default is .05, which corresponds to a 95% confidence interval. |
robust |
Should robust standard errors be used to find confidence
intervals for supported models? Default is FALSE, but you should specify
the type of sandwich standard errors if you'd like to use them (i.e.,
|
digits |
An integer specifying the number of digits past the decimal to
report in the output. Default is 2. You can change the default number of
digits for all jtools functions with
|
pvals |
Show p values? If |
confint |
Show confidence intervals instead of standard errors? Default
is |
ci.width |
A number between 0 and 1 that signifies the width of the
desired confidence interval. Default is |
cluster |
For clustered standard errors, provide the column name of the cluster variable in the input data frame (as a string). Alternately, provide a vector of clusters. |
modx.labels |
A character vector of labels for each level of the
moderator values, provided in the same order as the |
mod2.labels |
A character vector of labels for each level of the 2nd
moderator values, provided in the same order as the |
v.cov |
A function to calculate variances for the model. Examples
could be |
v.cov.args |
A list of arguments for the |
... |
Arguments passed to |
This allows the user to perform a simple slopes analysis for the purpose of probing interaction effects in a linear regression. Two- and three-way interactions are supported, though one should be warned that three-way interactions are not easy to interpret in this way.
For more about Johnson-Neyman intervals, see johnson_neyman
.
The function is tested with lm
, glm
, svyglm
, and merMod
inputs.
Others may work as well, but are not tested. In all but the linear model
case, be aware that not all the assumptions applied to simple slopes
analysis apply.
A list object with the following components:
slopes |
A table of coefficients for the focal predictor at each value of the moderator |
ints |
A table of coefficients for the intercept at each value of the moderator |
modx.values |
The values of the moderator used in the analysis |
mods |
A list containing each regression model created to estimate the conditional coefficients. |
jn |
If
|
Jacob Long jacob.long@sc.edu
Bauer, D. J., & Curran, P. J. (2005). Probing interactions in fixed and multilevel regression: Inferential and graphical techniques. Multivariate Behavioral Research, 40(3), 373-400. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1207/s15327906mbr4003_5")}
Cohen, J., Cohen, P., West, S. G., & Aiken, L. S. (2003). Applied multiple regression/correlation analyses for the behavioral sciences (3rd ed.). Mahwah, NJ: Lawrence Erlbaum Associates, Inc.
interact_plot
accepts similar syntax and will plot the
results with ggplot
.
testSlopes()
from rockchalk
performs a hypothesis test of
differences and provides Johnson-Neyman intervals.
simpleSlope()
from pequod
performs a similar analysis.
Other interaction tools:
johnson_neyman()
,
probe_interaction()
,
sim_margins()
# Using a fitted model as formula input
fiti <- lm(Income ~ Frost + Murder * Illiteracy,
data = as.data.frame(state.x77))
sim_slopes(model = fiti, pred = Murder, modx = Illiteracy)
# With svyglm
if (requireNamespace("survey")) {
library(survey)
data(api)
dstrat <- svydesign(id = ~1, strata = ~stype, weights = ~pw,
data = apistrat, fpc = ~fpc)
regmodel <- svyglm(api00 ~ ell * meals, design = dstrat)
sim_slopes(regmodel, pred = ell, modx = meals)
# 3-way with survey and factor input
regmodel <- svyglm(api00 ~ ell * meals * sch.wide, design = dstrat)
sim_slopes(regmodel, pred = ell, modx = meals, mod2 = sch.wide)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.