The processR
package aims to be a user-friendly way to perform moderation, mediation, moderated mediation and moderated moderation in R. This package is inspired from famous PROCESS macro for SPSS and SAS created by Andrew Hayes.
processR
Andrew F. Hayes was not involved in the development of this R package or application and cannot attest to the quality of the computations implemented in the code you are using. Use at your own risk.
You can install the processR
package from github.
The processR
package covers moderation, mediation, moderated mediation and moderated moderation with R. Supporting models are as follows.
[1] 0.0 1.0 2.0 3.0 4.0 4.2 4.3 5.0 6.0 6.3 6.4 7.0 8.0 9.0 10.0
[16] 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0
[31] 26.0 27.0 28.0 29.0 30.0 31.0 35.0 36.0 40.0 41.0 45.0 49.0 50.0 58.0 58.2
[46] 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 74.0 75.0 76.0
Currently, 57 models are supported.
I will explain functions of processR package by a example.
You can draw concept diagram and statistical diagram easily. For example, you can draw the concept diagram for PROCESS macro model 8.
You can draw statistical diagram of this model.
This package uses lavaan
and mediation
packages for analysis. The lavaan
package is extremely customizable and can also model latent variables if your measurement model requires it. But it is difficult to figure out the model equation for analysis. You can make model equation easily. For example, if you want to perform moderated mediation with data disaster
with the following concept model.
There is one moderator skeptic
in this model. The moderating site is āaā and ācā. You can make model equation by the following command.
moderator=list(name="skeptic",site=list(c("a","c")))
model=tripleEquation(X="frame",M="justify",Y="donate",moderator=moderator)
cat(model)
justify~a1*frame+a2*skeptic+a3*frame:skeptic
donate~c1*frame+c2*skeptic+c3*frame:skeptic+b*justify
skeptic ~ skeptic.mean*1
skeptic ~~ skeptic.var*skeptic
CE.XonM :=a1+a3*skeptic.mean
indirect :=(a1+a3*skeptic.mean)*(b)
index.mod.med :=a3*b
direct :=c1+c3*skeptic.mean
total := direct + indirect
prop.mediated := indirect / total
CE.XonM.below :=a1+a3*(skeptic.mean-sqrt(skeptic.var))
indirect.below :=(a1+a3*(skeptic.mean-sqrt(skeptic.var)))*(b)
CE.XonM.above :=a1+a3*(skeptic.mean+sqrt(skeptic.var))
indirect.above :=(a1+a3*(skeptic.mean+sqrt(skeptic.var)))*(b)
direct.below:=c1+c3*(skeptic.mean-sqrt(skeptic.var))
direct.above:=c1+c3*(skeptic.mean+sqrt(skeptic.var))
total.below := direct.below + indirect.below
total.above := direct.above + indirect.above
prop.mediated.below := indirect.below / total.below
prop.mediated.above := indirect.above / total.above
You can see full vignette for model 8 at http://rpubs.com/cardiomoon/468602
I have developed a shiny app. You can test the app at https://cardiomoon.shinyapps.io/processR. I will appreciate any comment.
You can see how to perform this analysis at http://rpubs.com/cardiomoon/468600
In the shiny app, you can download the analysis results as a powerpoint file. You can download the sample file model8.pptx - view with office web viewer.