two_way_interaction_plot.Rd
The function creates a two-way interaction plot. It will creates a plot with ± 1 SD from the mean of the independent variable. See supported model below.
I recommend using concurrently with lm_model
or lme_model
.
two_way_interaction_plot(
model,
data = NULL,
graph_label_name = NULL,
cateogrical_var = NULL,
y_lim = NULL,
plot_color = FALSE
)
object from lm
, nlme
, lme4
, or lmerTest
data frame. If the function is unable to extract data frame from the object, then you may need to pass it directly
vector of length 3 or function. Vector should be passed in the form of c(response_var, predict_var1, predict_var2)
. Function should be passed as a switch function that return the label based on the name passed (e.g., a switch function)
list. Specify the upper bound and lower bound directly instead of using ± 1 SD from the mean. Passed in the form of list(var_name1 = c(upper_bound1, lower_bound1),var_name2 = c(upper_bound2, lower_bound2))
the plot's upper and lower limit for the y-axis. Length of 2. Example: c(lower_limit, upper_limit)
default if FALSE
. Set to TRUE
if you want to plot in color
an object of class ggplot
It appears that ``predict` cannot handle categorical factors. All variables are converted to numeric before plotting.
# If you pass the model directly, it can't extract the data-frame from fit object
# Therefore, for now, you must pass the data frame to the function.
# You don't need pass the data if you use `lm_model` or `lme_model`.
# lme example
lme_fit <- lme4::lmer("popular ~ extrav*texp + (1 + extrav | class)",
data = popular
)
#> boundary (singular) fit: see help('isSingular')
two_way_interaction_plot(lme_fit,
graph_label_name = c("popular", "extraversion", "teacher experience"),
data = popular
)
lm_fit <- lm(Sepal.Length ~ Sepal.Width * Petal.Width,
data = iris
)
two_way_interaction_plot(lm_fit, data = iris)
# For more advanced users
label_name <- function(var_name) {
var_name_processed <- switch(var_name,
"extrav" = "Extroversion",
"texp" = "Teacher Experience",
"popular" = "popular"
)
if (is.null(var_name_processed)) {
var_name_processed <- var_name
}
return(var_name_processed)
}
two_way_interaction_plot(lme_fit, data = popular, graph_label_name = label_name)