用python做带调节的中介模型检验详解

简介

在采用传统统计手段的经济学,心理学等学科中,通常是在阅读大量文献的基础上,提出自己的理论假设,并建立模型,收取一定量(通常是几百)的样本数据来验证自己的假设。其中就包含了调节,中介变量这类非常容易发论文的模型。而在学习中我们会发现老师让我们使用SPSS的PROCESS插件来处理这类模型。但是SPSS收费(虽然用的通常是破解版),PROCESS插件安装麻烦,于是我想到了python,今天就来教大家使用python的PyProcessMacro开源库来进行调节中介模型的统计检验。

事前准备

关于搭建python环境的内容,这里就不多说了,可以下载安装Anaconda的集成环境,当然更好的选择是使用云IDE,这里向大家推荐一下Datalore,Jetbrains出品的云IDE,包含了各种科学计算必须库,需要的库也可以很方便的搜索安装,这里是链接:
https://datalore.jetbrains.com/notebooks
只要注册账户就能使用基本的计算引擎,满足一般使用。
接下来安装必要的库:

pip install pyprocessmacro

anaconda prompt里输入以上pip安装指令,或者在datalore里:
在这里插入图片描述
搜索pyprocessmacro,然后点击Install,安装完毕弹出右下角提醒,点击restart kernel重启内核,就安装完毕了!

在安装完库之后:
我们还需要process的模型图,
百度文库链接点这
里面定义好的是各式各样的模型图和相应的计算模型,我们需要找到我们研究符合的模型,记住它的序号,这里以8号模型为例:
在这里插入图片描述
其中X是自变量,Mi是多个中介变量,Y是因变量,W是调节变量。

实例

(以下使用数据为真实采集样本数据,出于隐私安全不公开)
在准备好我们需要的库,模型之后,我们就可以开始实际的分析了,首先呢,我们需要把我们的变量和模型对应上,本案例中的模型是这样子的:
在这里插入图片描述
和上面我们找的8号模型对比基本一致,Uncertainty是自变量,State_N是中介变量,Condition是调节变量,MIL是因变量,只不过多了一个Trait_N作为控制变量。
首先我们把我们需要的变量读出来:

import pandas as pd
df = pd.read_excel('xxx.xlsx')
df_X = df[['Condition','Uncertainty','State_N','MIL','Trait_N']

在这里插入图片描述
这里给没有了解过基本语法的小白说几句,使用.info()方法可以轻松的看到整个数据框的基本信息,图中包含了694条非空数据,以及5个变量,使用.head()方法可以打印出前五条信息进行速览,使用.tail()方法可以看到倒数前五条信息,使用.describe()方法可以对数据进行描述统计,打印出频数,均数,标准差,最小值,四分位差,最大值信息。
接下来我们进行检验,并打印出模型的总结信息:

from pyprocessmacro import Process
p = Process(data=df_X, model=8, x="Uncertainty", y="MIL", w="Condition",m=["State_N"],controls=["Trait_N"],controls_in="all_to_y")
p.summary()

需要重点讲解的是第二条语句,
data即我们上面读出来的数据框,后面的x,y,w,m,controls都是以列名的形式从我们的数据框中读出。
model=8即8号模型,是我们根据我们自己的模型和百度文库里的链接比较选取出来的模型序号。
x即自变量,y即因变量,w即调节变量,m即中介变量,controls即控制变量,其中中介变量和控制变量都可是以列表的形式传输的,如果你想传多个,只要把[“State_N”]改为[“你的变量名1,你的变量名2”]依次往后类推即可,这和SPSS里面的变量选取是类似的。
controls_in代表控制变量的路径,有"x_to_m",“all_to_y”,"all"三个参数。
x_to_m表示在自变量和中介变量中设置控制,all_to_y表示在自变量到因变量之间和中介变量到因变量之间设置,all表示在所有运算中都会进行控制。
此外还有一些参数,比如logit=True,表示如果你的因变量是二分类输出(0,1),那么需要设置该参数会使用logistic回归。
modval={“condition”:[-1,0,1]},表示对调节变量设置自定义的观察点,默认的观察点是M-SD,M,M+SD,本案例中由于condition本身就只有三个值,所以结果是一样的。

接下来开始总结的解读:

Number of samples discarded due to convergence issues: 0

***************************** OUTCOME MODELS ****************************

Outcome = MIL 
OLS Regression Summary

     R²  Adj. R²    MSE       F  df1  df2  p-value
 0.2692   0.2628 1.0318 50.6744    5  688   0.0000

Coefficients

                        coeff     se        t      p    LLCI    ULCI
Cons                   4.6885 0.2316  20.2411 0.0000  4.2345  5.1425
Uncertainty           -0.6470 0.0544 -11.8873 0.0000 -0.7536 -0.5403
Condition              0.2938 0.2120   1.3861 0.1662 -0.1216  0.7092
Uncertainty*Condition -0.0912 0.0652  -1.3985 0.1624 -0.2189  0.0366
Trait_N                0.0051 0.0334   0.1511 0.8799 -0.0605  0.0706
State_N                0.6168 0.0547  11.2802 0.0000  0.5096  0.7239

-------------------------------------------------------------------------

Outcome = State_N 
OLS Regression Summary

     R²  Adj. R²    MSE      F  df1  df2  p-value
 0.0368   0.0312 0.5482 8.7844    3  690   0.0000

Coefficients

                        coeff     se       t      p    LLCI    ULCI
Cons                   2.7162 0.1236 21.9822 0.0000  2.4740  2.9584
Uncertainty            0.1719 0.0379  4.5337 0.0000  0.0976  0.2462
Condition              0.2968 0.1538  1.9295 0.0541 -0.0047  0.5982
Uncertainty*Condition -0.1042 0.0473 -2.2034 0.0279 -0.1969 -0.0115

-------------------------------------------------------------------------


********************** DIRECT AND INDIRECT EFFECTS **********************

Conditional direct effect(s) of Uncertainty on MIL at values of the moderator(s):

  Condition  Effect     SE        t      p    LLCI    ULCI
    -1.0000 -0.5558 0.0843  -6.5938 0.0000 -0.7210 -0.3906
     0.0000 -0.6470 0.0544 -11.8873 0.0000 -0.7536 -0.5403
     1.0000 -0.7381 0.0855  -8.6290 0.0000 -0.9058 -0.5705

Conditional indirect effect(s) of Uncertainty on MIL at values of the moderator(s):

 Mediator  Condition  Effect  Boot SE  BootLLCI  BootULCI
  State_N    -1.0000  0.1703   0.0439    0.0946    0.2677
  State_N     0.0000  0.1060   0.0280    0.0562    0.1668
  State_N     1.0000  0.0417   0.0403   -0.0346    0.1234

**************** INDEX OF MODERATED MEDIATION ******************

  Moderator Mediator   Index  Boot SE    LLCI    ULCI
  Condition  State_N -0.0643   0.0314 -0.1303 -0.0045

首先是两个回归模型,第一个模型表示因变量为MIL时的回归模型,看P值可以发现cons(即常量),Uncertainty(自变量),State_N(中介变量)是在该回归方程中是显著的,Condition(调节变量)和交互项均不显著。第二个模型表示因变量是中介变量State_N时的回归方程构建,其中Uncertainty(自变量)是显著的,condition(调节变量)不显著。
PS:这个不重要。
接下来看条件直接效应和条件间接效应。
条件直接效应(即conditional direct effect)在本案例中P值均小于.05,说明调节作用存在。
条件间接效应(即Conditional indirect effect)在本案例中,当condition位于低水平和中间水平时,BootLLCI和BootULCI区间不含0,中介效应存在,当condition位于高水平时,包含0,中介效应不存在。在三种水平下,中介效应是否存在不一致,说明调节中介效应存在。
最后的调节中介结果
即最后一行,判定指标中的LLCI和ULCI也没有包含0,说明该模型的调节中介效应成立。
此外该库还提供了方便的作图功能:
在这里插入图片描述
通过p.plot_conditional_direct_effects和p.plot_conditional_indirect_effects作图,图中显示的是单调节变量的图,如果有双调节变量,可以将第二个调节变量作为类别轴导入,即在后面的参数里加上hue=‘xxxx’。也可以将第二个调节变量作为列轴导入,生成多个子图,加上col=‘xxxx’。

参考资料:
https://github.com/QuentinAndre/pyprocessmacro
https://www.zhihu.com/question/317327367?sort=created

  • 10
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值