The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

simple slopes analysis

library(modsem)

Simple Slopes Analysis

Simple slope effects can be plotted using the included plot_interaction() function. This function takes a fitted model object and the names of the two variables that are interacting. The function will plot the interaction effect of the two variables, where:

The function will also plot the 95% confidence interval for the interaction effect. Note that the vals_z argument (as well as the values of x) are scaled by the mean and standard deviation of the variables. Unless the rescale argument is set to FALSE.

Here is a simple example using the double-centering approach:

m1 <- "
# Outer Model
  X =~ x1
  X =~ x2 + x3
  Z =~ z1 + z2 + z3
  Y =~ y1 + y2 + y3

# Inner Model
  Y ~ X + Z + X:Z
"
est1 <- modsem(m1, data = oneInt)
plot_interaction(x = "X", z = "Z", y = "Y", vals_z = c(-1, 1), model = est1)

If you want to see the numerical values of the simple slopes, you can use the simple_slopes() function:

m1 <- "
# Outer Model
  X =~ x1
  X =~ x2 + x3
  Z =~ z1 + z2 + z3
  Y =~ y1 + y2 + y3

# Inner Model
  Y ~ X + Z + X:Z
"

est1 <- modsem(m1, data = oneInt)
simple_slopes(x = "X", z = "Z", y = "Y", vals_z = c(-1, 1), model = est1)

The simple_slopes() function returns a simple_slopes object. It only has two methods/generics: print.simple_slopes(), which prints the simple slopes in a easy-to-read format and as.data.frame.simple_slopes(). The print() method will not only print the predicted values, but also significance tests for the difference between the slope at the lowest value of z and the slope at the highest value of z, as well as significance tests for the slope of x at the different values of vals_z.

In the example above, we can see that there is a significant difference between the slope at at -1 * sd(Z) and +1 * sd(Z). Note that by default vals_z is rescaled by the mean and standard deviation of the variable, unless rescale = FALSE is set. This means that the values of vals_z are interpreted as standard deviations from the mean of Z.

If you want to extract the simple slopes as a data.frame, you can use the as.data.frame() function:

m1 <- "
# Outer Model
  X =~ x1
  X =~ x2 + x3
  Z =~ z1 + z2 + z3
  Y =~ y1 + y2 + y3

# Inner Model
  Y ~ X + Z + X:Z
"

est1 <- modsem(m1, data = oneInt)
slopes <- simple_slopes(x = "X", z = "Z", y = "Y", 
                        vals_z = c(0, 1), model = est1)
as.data.frame(slopes)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.