查看原文
其他

干货丨常用模型的Mplus例句

萜妹 萜心话 2022-09-14

萜妹之前遇见了一个神仙网站,觉得非常有用,所以就想推荐给小可爱们呀~


那我们开始吧。


网页介绍

这个网站是萜妹在看文章的时候在参考文献部分偶然发现的,说明网站还是很靠谱的,小可爱们如果需要在文章中引用可采用以下格式:

Stride C.B., Gardner S., Catley. N. & Thomas, F.(2015) 'Mplus code for mediation, moderation, and moderated mediation models', http://www.offbeat.group.shef.ac.uk/FIO/mplusmedmod.htm

这些语句主要是针对PROCESS中的模型,当然研究者做了一定的修改,使得语句更加完善。

由于是针对PROCESS模型,所以PROCESS不能处理多层数据,这里的语句也不可,想要处理多层的可以看Kris Preacher的网站。(原网站中有此链接)

最后,网站里的PROCESS各个模型的对应语句都有,萜妹这里就只对常用模型语句进行了搬运,如果没有小可爱们需要的,小可爱们可以去原网站查。(选择阅读原文可跳转至原网站)


模型与语句

下文语句中红字部分为可替换部分,另外数据文件来源及变量命名部分已省略。

Model 3:三阶调节

(向上滑动查看)

USEVARIABLES = X W Y XW XZ WZ XWZ;

DEFINE: 
   XW = X*W; 
   XZ = X*Z; 
   WZ = W*Z; 
   XWZ = X*W*Z;

ANALYSIS: 
   TYPE = GENERAL; 
   ESTIMATOR = ML; 
   BOOTSTRAP = 10000;

MODEL: 
   [Y] (b0); 
   Y ON X (b1); 
   Y ON W (b2); 
   Y ON Z (b3); 
   Y ON XW (b4); 
   Y ON XZ (b5); 
   Y ON WZ (b6); 
   Y ON XWZ (b7);

MODEL CONSTRAINT: 
  NEW(LOW_W MED_W HIGH_W LOW_Z MED_Z HIGH_Z LOW_LOZ MEW_LOZ HIW_LOZ LOW_MEZ MEW_MEZ HIW_MEZ LOW_HIZ MEW_HIZ HIW_HIZ);

   LOW_W = #LOWW;   ! 可将#LOWW替换为所选W的低值,下同

   MED_W =#MEDW;   
   HIGH_W = #HIGHW;  

   LOW_Z =#LOWZ; 
   MED_Z = #MEDZ;  
   HIGH_Z = #HIGHZ;  


   LOW_LOZ = b1 + b4*LOW_W + b5*LOW_Z + b7*LOW_W*LOW_Z; 
   MEW_LOZ = b1 + b4*MED_W + b5*LOW_Z + b7*MED_W*LOW_Z; 
   HIW_LOZ = b1 + b4*HIGH_W + b5*LOW_Z + b7*HIGH_W*LOW_Z;

   LOW_MEZ = b1 + b4*LOW_W + b5*MED_Z + b7*LOW_W*MED_Z; 
   MEW_MEZ = b1 + b4*MED_W + b5*MED_Z + b7*MED_W*MED_Z; 
   HIW_MEZ = b1 + b4*HIGH_W + b5*MED_Z + b7*HIGH_W*MED_Z;

   LOW_HIZ = b1 + b4*LOW_W + b5*HIGH_Z + b7*LOW_W*HIGH_Z; 
   MEW_HIZ = b1 + b4*MED_W + b5*HIGH_Z + b7*MED_W*HIGH_Z; 
   HIW_HIZ = b1 + b4*HIGH_W + b5*HIGH_Z + b7*HIGH_W*HIGH_Z;


   PLOT(PLOW_LOZ PMEW_LOZ PHIW_LOZ PLOW_MEZ PMEW_MEZ PHIW_MEZ  PLOW_HIZ PMEW_HIZ PHIW_HIZ);

   LOOP(XVAL,1,5,0.1);

   PLOW_LOZ = (b0 + b2*LOW_W + b3*LOW_Z + b6*LOW_W*LOW_Z) + LOW_LOZ*XVAL; 
   PMEW_LOZ = (b0 + b2*MED_W + b3*LOW_Z + b6*MED_W*LOW_Z) + MEW_LOZ*XVAL; 
   PHIW_LOZ = (b0 + b2*HIGH_W + b3*LOW_Z + b6*HIGH_W*LOW_Z) + HIW_LOZ*XVAL;

   PLOW_MEZ = (b0 + b2*LOW_W + b3*MED_Z + b6*LOW_W*MED_Z) + LOW_MEZ*XVAL; 
   PMEW_MEZ = (b0 + b2*MED_W + b3*MED_Z + b6*MED_W*MED_Z) + MEW_MEZ*XVAL; 
   PHIW_MEZ = (b0 + b2*HIGH_W + b3*MED_Z + b6*HIGH_W*MED_Z) + HIW_MEZ*XVAL;

   PLOW_HIZ = (b0 + b2*LOW_W + b3*HIGH_Z + b6*LOW_W*HIGH_Z) + LOW_HIZ*XVAL; 
   PMEW_HIZ = (b0 + b2*MED_W + b3*HIGH_Z + b6*MED_W*HIGH_Z) + MEW_HIZ*XVAL; 
   PHIW_HIZ = (b0 + b2*HIGH_W + b3*HIGH_Z + b6*HIGH_W*HIGH_Z) + HIW_HIZ*XVAL;

PLOT: 
   TYPE = plot2;

OUTPUT: 
   STAND CINT(bcbootstrap);

Model 6:链式中介

USEVARIABLES =  X M1 M2 Y;

ANALYSIS: 

   TYPE = GENERAL; 
   ESTIMATOR = ML; 
   BOOTSTRAP = 10000;

MODEL: 

   Y ON M1 (b1); 
   Y ON M2 (b2);

   Y ON X (cdash);   

   M1 ON X (a1); 
   M2 ON X (a2); 
   M2 ON M1 (d1);

MODEL CONSTRAINT: 
   NEW(a1b1 a2b2 a1d1b2 TOTALIND TOTAL); 
   a1b1 = a1*b1;  
   a2b2 = a2*b2;  
   a1d1b2 = a1*d1*b2; 
   TOTALIND = a1*b1 + a2*b2 + a1*d1*b2;  
   TOTAL = a1*b1 + a2*b2 + a1*d1*b2 + cdash; 

OUTPUT: 
   STAND CINT(bcbootstrap);
 

Model 7:有调节的中介(第一阶段)

USEVARIABLES = X M W Y XW;

DEFINE: 
   XW = X*W; 
ANALYSIS: 

   TYPE = GENERAL; 
   ESTIMATOR = ML; 
   BOOTSTRAP = 10000;

MODEL: 
   [Y] (b0); 

   Y ON M (b1);

   Y ON X (cdash);

   [M] (a0); 
   M ON X (a1); 
   M ON W (a2); 
   M ON XW (a3);

MODEL CONSTRAINT: 
  NEW(LOW_W MED_W HIGH_W IND_LOWW IND_MEDW IND_HIW  IMM   TOT_LOWW TOT_MEDW TOT_HIW);

   LOW_W = #LOWW;   ! 可将#LOWW替换为所选W的低值,下同

   MED_W =#MEDW;   
   HIGH_W = #HIGHW;  


    IND_LOWW = a1*b1 + a3*b1*LOW_W;
    IND_MEDW = a1*b1 + a3*b1*MED_W;
    IND_HIW = a1*b1 + a3*b1*HIGH_W;

    IMM = a3*b1;

    TOT_LOWW = IND_LOWW + cdash; 
    TOT_MEDW = IND_MEDW + cdash; 
    TOT_HIW = IND_HIW + cdash;


    PLOT(LOMOD MEDMOD HIMOD);

    LOOP(XVAL,1,5,0.1);

    LOMOD = IND_LOWW*XVAL;
    MEDMOD = IND_MEDW*XVAL;
    HIMOD = IND_HIW*XVAL;

PLOT: 
   TYPE = plot2;

OUTPUT: 
   STAND CINT(bcbootstrap);

Model 14:有调节的中介(第二阶段)

USEVARIABLES = X M V Y MV;

DEFINE: 
   MV = M*V; 
ANALYSIS: 

   TYPE = GENERAL; 
   ESTIMATOR = ML; 
   BOOTSTRAP = 10000;

MODEL: 
   [Y] (b0); 

   Y ON M (b1);

   Y ON V (b2); 
   Y ON MV (b3);

   Y ON X (cdash);

   [M] (a0); 
   M ON X (a1); 
MODEL CONSTRAINT: 

   NEW(LOW_V MED_V HIGH_V  IND_LOWV IND_MEDV IND_HIV IMM  TOT_LOWV TOT_MEDV TOT_HIV);

   LOW_ V = #LOWV;   ! 可将#LOWW替换为所选V的低值,下同

   MED_V =#MEDV;   
   HIGH_V = #HIGHV;  


    IND_LOWV = a1*b1 + a1*b3*LOW_V;

    IND_MEDV = a1*b1 + a1*b3*MED_V;
    IND_HIV = a1*b1 + a1*b3*HIGH_V

    IMM = a1*b3;

    TOT_LOWV = IND_LOWV + cdash; 

    TOT_MEDV = IND_MEDV + cdash; 
    TOT_HIV = IND_HIV + cdash;


    PLOT(LOMOD MEDMOD HIMOD);

    LOOP(XVAL,1,5,0.1);

    LOMOD = IND_LOWV*XVAL;
    MEDMOD = IND_MEDV*XVAL;
    HIMOD = IND_HIV*XVAL;

PLOT: 

   TYPE = plot2;

OUTPUT: 
   STAND CINT(bcbootstrap);

Model 11:有三阶调节的中介(第一阶段)

USEVARIABLES = X M W Z Y XW XZ WZ XWZ;

DEFINE: 
   XW = X*W; 

   XZ = X*Z; 
   WZ = W*Z; 
   XWZ = X*W*Z;

ANALYSIS: 

   TYPE = GENERAL; 
   ESTIMATOR = ML; 
   BOOTSTRAP = 10000;

MODEL: 
   [Y] (b0); 

   Y ON M (b1);

   Y ON X (cdash);

   [M] (a0); 

   M ON X (a1); 
   M ON W (a2); 
   M ON Z (a3); 
   M ON XW (a4); 
   M ON XZ (a5); 
   M ON WZ (a6); 
   M ON XWZ (a7);

MODEL CONSTRAINT: 
 NEW(LOW_W MED_W HIGH_W LOW_Z MED_Z HIGH_Z   ILOW_LOZ IMEW_LOZ IHIW_LOZ ILOW_MEZ IMEW_MEZ IHIW_MEZ ILOW_HIZ IMEW_HIZ IHIW_HIZ TLOW_LOZ TMEW_LOZ THIW_LOZ TLOW_MEZ TMEW_MEZ THIW_MEZ  TLOW_HIZ TMEW_HIZ THIW_HIZ);

   LOW_W = #LOWW;   

   MED_W =#MEDW;   
   HIGH_W = #HIGHW;  

   LOW_Z = #LOWZ;  
    MED_Z = #MEDZ;   
    HIGH_Z = #HIGHZ; 

    ILOW_LOZ = a1*b1 + a4*b1*LOW_W + a5*b1*LOW_Z + a7*b1*LOW_W*LOW_Z; 
    IMEW_LOZ = a1*b1 + a4*b1*MED_W + a5*b1*LOW_Z + a7*b1*MED_W*LOW_Z; 
    IHIW_LOZ = a1*b1 + a4*b1*HIGH_W + a5*b1*LOW_Z + a7*b1*HIGH_W*LOW_Z;

    ILOW_MEZ = a1*b1 + a4*b1*LOW_W + a5*b1*MED_Z + a7*b1*LOW_W*MED_Z; 
    IMEW_MEZ = a1*b1 + a4*b1*MED_W + a5*b1*MED_Z + a7*b1*MED_W*MED_Z; 
    IHIW_MEZ = a1*b1 + a4*b1*HIGH_W + a5*b1*MED_Z + a7*b1*HIGH_W*MED_Z;

    ILOW_HIZ = a1*b1 + a4*b1*LOW_W + a5*b1*HIGH_Z + a7*b1*LOW_W*HIGH_Z; 
    IMEW_HIZ = a1*b1 + a4*b1*MED_W + a5*b1*HIGH_Z + a7*b1*MED_W*HIGH_Z; 
    IHIW_HIZ = a1*b1 + a4*b1*HIGH_W + a5*b1*HIGH_Z + a7*b1*HIGH_W*HIGH_Z;

TLOW_LOZ = ILOW_LOZ + cdash; 
    TMEW_LOZ = IMEW_LOZ + cdash; 
    THIW_LOZ = IHIW_LOZ + cdash;

    TLOW_MEZ = ILOW_MEZ + cdash; 
    TMEW_MEZ = IMEW_MEZ + cdash; 
    THIW_MEZ = IHIW_MEZ + cdash;

    TLOW_HIZ = ILOW_HIZ + cdash; 
    TMEW_HIZ = IMEW_HIZ + cdash; 
    THIW_HIZ = IHIW_HIZ + cdash;


   PLOT(PLOW_LOZ PMEW_LOZ PHIW_LOZ PLOW_MEZ PMEW_MEZ PHIW_MEZ PLOW_HIZ PMEW_HIZ PHIW_HIZ);

    LOOP(XVAL,1,5,0.1);

    PLOW_LOZ = ILOW_LOZ*XVAL;
    PMEW_LOZ = IMEW_LOZ*XVAL;
    PHIW_LOZ = IHIW_LOZ*XVAL;

    PLOW_MEZ = ILOW_MEZ*XVAL;
    PMEW_MEZ = IMEW_MEZ*XVAL;
    PHIW_MEZ = IHIW_MEZ*XVAL;

    PLOW_HIZ = ILOW_HIZ*XVAL;
    PMEW_HIZ = IMEW_HIZ*XVAL;
    PHIW_HIZ = IHIW_HIZ*XVAL;

PLOT: 

   TYPE = plot2;

OUTPUT: 
   STAND CINT(bcbootstrap);

Model 18:有三阶调节的中介(第二阶段)

USEVARIABLES = X M V Q Y MV MQ VQ MVQ;

DEFINE: 
   MQ = M*Q; 

   MV = M*V; 
   VQ = V*Q; 
   MVQ = M*V*Q;

ANALYSIS: 

   TYPE = GENERAL; 
   ESTIMATOR = ML; 
   BOOTSTRAP = 10000;

MODEL: 

   [Y] (b0); 

   Y ON M (b1); 
   Y ON V (b2); 
   Y ON Q (b3); 
   Y ON MV (b4); 
   Y ON MQ (b5); 
   Y ON VQ (b6); 
   Y ON MVQ (b7);

   Y ON X (cdash);

   [M] (a0); 

   M ON X (a1); 
MODEL CONSTRAINT: 

 NEW(LOW_V MED_V HIGH_V LOW_Q MED_Q HIGH_Q ILOV_LOQ IMEV_LOQ IHIV_LOQ ILOV_MEQ IMEV_MEQ IHIV_MEQ ILOV_HIQ IMEV_HIQ IHIV_HIQ TLOV_LOQ TMEV_LOQ THIV_LOQ TLOV_MEQ TMEV_MEQ THIV_MEQ TLOV_HIQ TMEV_HIQ THIV_HIQ)

   LOW_V = #LOWV;   

   MED_V =#MEDV
   HIGH_V = #HIGHV;  

   LOW_Q = #LOWQ;  
    MED_Q = #MEDQ;   
    HIGH_Q = #HIGHQ; 

    ILOV_LOQ = a1*b1 + a1*b4*LOW_V + a1*b5*LOW_Q + a1*b7*LOW_V*LOW_Q; 

    IMEV_LOQ = a1*b1 + a1*b4*MED_V + a1*b5*LOW_Q + a1*b7*MED_V*LOW_Q; 
    IHIV_LOQ = a1*b1 + a1*b4*HIGH_V + a1*b5*LOW_Q + a1*b7*HIGH_V*LOW_Q;

    ILOV_MEQ = a1*b1 + a1*b4*LOW_V + a1*b5*MED_Q + a1*b7*LOW_V*MED_Q; 
    IMEV_MEQ = a1*b1 + a1*b4*MED_V + a1*b5*MED_Q + a1*b7*MED_V*MED_Q; 
    IHIV_MEQ = a1*b1 + a1*b4*HIGH_V + a1*b5*MED_Q + a1*b7*HIGH_V*MED_Q;

    ILOV_HIQ = a1*b1 + a1*b4*LOW_V + a1*b5*HIGH_Q + a1*b7*LOW_V*HIGH_Q; 
    IMEV_HIQ = a1*b1 + a1*b4*MED_V + a1*b5*HIGH_Q + a1*b7*MED_V*HIGH_Q; 
    IHIV_HIQ = a1*b1 + a1*b4*HIGH_V + a1*b5*HIGH_Q + a1*b7*HIGH_V*HIGH_Q;

    TLOV_LOQ = ILOV_LOQ + cdash; 
    TMEV_LOQ = IMEV_LOQ + cdash; 
    THIV_LOQ = IHIV_LOQ + cdash;

    TLOV_MEQ = ILOV_MEQ + cdash; 
    TMEV_MEQ = IMEV_MEQ + cdash; 
    THIV_MEQ = IHIV_MEQ + cdash;

    TLOV_HIQ = ILOV_HIQ + cdash; 
    TMEV_HIQ = IMEV_HIQ + cdash; 
    THIV_HIQ = IHIV_HIQ + cdash;


  PLOT(PLOV_LOQ PMEV_LOQ PHIV_LOQ PLOV_MEQ PMEV_MEQ PHIV_MEQ PLOV_HIQ PMEV_HIQ PHIV_HIQ);

    LOOP(XVAL,1,5,0.1);

    PLOV_LOQ = ILOV_LOQ*XVAL;
    PMEV_LOQ = IMEV_LOQ*XVAL;
    PHIV_LOQ = IHIV_LOQ*XVAL;

    PLOV_MEQ = ILOV_MEQ*XVAL;
    PMEV_MEQ = IMEV_MEQ*XVAL;
    PHIV_MEQ = IHIV_MEQ*XVAL;

    PLOV_HIQ = ILOV_HIQ*XVAL;
    PMEV_HIQ = IMEV_HIQ*XVAL;
    PHIV_HIQ = IHIV_HIQ*XVAL;

PLOT: 

   TYPE = plot2;

OUTPUT: 
   STAND CINT(bcbootstrap);

Model 58:同时调节前后的中介

USEVARIABLES = X M W Y XW MW;

DEFINE: 
   MW = M*W; 
   XW = X*W;

ANALYSIS: 

   TYPE = GENERAL; 
   ESTIMATOR = ML; 
   BOOTSTRAP = 10000;

MODEL: 
   [Y] (b0); 

   Y ON M (b1); 
   Y ON W (b2); 
   Y ON MW (b3);

   Y ON X (cdash);

   [M] (a0); 

   M ON X (a1); 
   M ON W (a2); 
   M ON XW (a3); 

MODEL CONSTRAINT: 

    NEW(LOW_W MED_W HIGH_W IND_LOWW IND_MEDW IND_HIW IMM_LOW IMM_MEDW IMM_HIW TOT_LOWW TOT_MEDW TOT_HIW);

   LOW_W = #LOWW;   

   MED_W =#MEDW
   HIGH_W = #HIGHW;  

   IND_LOWW = a1*b1 + a3*b1*LOW_W + a1*b3*LOW_W + a3*b3*LOW_W*LOW_W;
   IND_MEDW = a1*b1 + a3*b1*MED_W + a1*b3*MED_W + a3*b3*MED_W*MED_W;
   IND_HIW = a1*b1 + a3*b1*HIGH_W + a1*b3*HIGH_W + a3*b3*HIGH_W*HIGH_W;

    IMM_LOW = a3*b1 + a1*b3 + a3*b3*LOW_W;
    IMM_MEDW = a3*b1 + a1*b3 + a3*b3*MED_W;
    IMM_HIW = a3*b1 + a1*b3 + a3*b3*HIGH_W;

    TOT_LOWW = IND_LOWW + cdash; 
    TOT_MEDW = IND_MEDW + cdash; 
    TOT_HIW = IND_HIW + cdash;


    PLOT(LOMOD MEDMOD HIMOD);

    LOOP(XVAL,1,5,0.1);

    LOMOD = IND_LOWW*XVAL;
    MEDMOD = IND_MEDW*XVAL;
    HIMOD = IND_HIW*XVAL;

PLOT: 

   TYPE = plot2;

OUTPUT: 
   STAND CINT(bcbootstrap);


啦啦啦,语句就搬运到这里啦。之前有小可爱问萜妹模型的语句如何写,所以萜妹想着有了这么期推送。


不过这期现在最大的bug是,如果小可爱们本身没有mplus的语句基础,可能看着会觉得上述有些语句比较复杂,所以萜妹把需要替换的部分都标明出来啦。如果小可爱们想弄清楚这些原理的话,可以回顾萜妹之前关于mplus的语句说明,以及笔记系列关于中介、调节的原理介绍。


最后就是,其实现在我们研究经常使用跨层数据,这篇里也提到了跨层数据需要去另外的网站。所以萜妹如果顺利的话,下周就介绍跨层的语句说明啦。如果搞不定,那下周写什么再看,毕竟最近承受开题压力,萜妹也没什么灵感啦。


那小可爱们,我们下周见啦~



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存