基于burceR包和mma包的多重中介效应分析学习笔记

 (本文章部分学习自https://www.zhihu.com/tardis/zm/art/376007591?source_id=1005)

1 简单中介效应

如图,c是X对Y的作用,

c'是X对Y的直接作用,

a是X对M的作用,

b是M对Y的作用,

a*b是X对Y的间接作用。

若X通过M对Y起影响,则称M为一个中介。

判断M是否是一个中介的标准,就是判断回归系数a*b的显著性。

此外,若c显著,c'不显著,且a*b显著,则认为M是一个完全中介;

若c'显著,a*b显著,则认为M是一个部分中介。

2 多重中介效应

2.1 平行中介

多个中介变量并行的模型,X对Y的总间接效应为a*b+c*d,直接效应为c'。

2.2 链式中介

多个中介变量串行的模型,X对Y的总间接效应为abc+ae+dc,直接效应为c'。

3 代码

3.1 bruceR

       bruceR包整合了mediation包进行中介效应分析、interactions包进行简单斜率分析、lavaan包进行链式多重中介分析,其中PROCESS()函数具有计算调节效应、中介效应和有调节的中介效应的能力,支持连续或二分类的自变量X、中介变量M、因变量Y,无限多个平行的中介变量M、最多4个链式的中介变量M、最多2个调节变量W,无限多个、不同类型的控制变量/协变量,具有上手简单,功能丰富的特点。

#数据获取
library(bruceR)
?mediation::student
data=mediation::student %>%
  dplyr::select(SCH_ID, free, smorale, pared, income,
                gender, work, attachment, fight, late, score)
names(data)[2:3]=c("SCH_free", "SCH_morale")
names(data)[4:7]=c("parent_edu", "family_inc", "gender", "partjob")
data$gender01=1-data$gender  # 0 = female, 1 = male
data$gender=factor(data$gender01, levels=0:1, labels=c("Female", "Male"))
head(data)
#包含以下变量:
#SCH_ID=学校编号
#SCH_free=学校提供免费午餐力度的等级
#SCH_smorale=该学校学生道德素质
#parent_edu=父母教育水平
#family_income=家庭收入
#gender=性别
#partjob=兼职情况
#attachment=是否喜欢学校
#fight=是否打过架
#late=迟到频次
#score=数学成绩
SCH_ID SCH_free SCH_morale parent_edu family_inc gender partjob attachment fight late score gender01
1      1        3          5          0         10 Female       0          0     0    1    46        0
2      1        3          5          0          9   Male       0          0     1    5    48        1
3      1        3          5          1         13 Female       0          1     1    3    72        0
4      1        3          5          0         12   Male       1          1     0    1    57        1
5      1        3          5          0         11   Male       0          1     0    2    51        1
6      1        3          5          0          7   Male       1          1     0    2    52        1

简单中介: 

#简单中介
#研究parent_edu是否通过family_income对score产生影响
PROCESS(data=data,y='score',x='parent_edu',meds='family_inc',covs='gender',ci='boot',nsim=1000,seed=0)
#meds为中介变量
#cov为协变量
#ci是评估间接效应的CI的方法,默认为bootstrap自举法
#nsim是bootstrap模拟的次数

结果:

从结果中可以发现,直接效应和简介效应都显著,因此family_inc是parent_edu对score的一个部分部分中介。

平行中介:

#并行中介
PROCESS(data=data,y='score',x='parent_edu',meds=c('family_inc','late','fight'),covs=c('gender','partjob'),ci='boot',nsim=1000,seed=0)

结果: 

从结果可以发现,fight,family_inc,late都是parent_edu对score的中介因素,且为部分中介

链式中介:

PROCESS(data=data,y="score",x="parent_edu",meds=c("family_inc", "late"),covs=c("gender","partjob"),med.type="serial",ci="boot",nsim=1000,seed=0)
#多一个参数med.type

 结果:

从结果可以发现,family_inc和late都是parent_edu对score的中介,但late单独的中介效应不显著。

3.2 mma

 也可用mma包的mma()函数进行多重中介效应模型的拟合,该函数特点是能从指定的变量集中找出中介变量。

#mma
library(mma)
x=data[,c(1:3,5:10)]
pred=data[,4]
y=data[,11]
mmodel <- mma(x,y,pred=pred,mediator=1:ncol(x),alpha=0.1,alpha2=0.1,n=5,n2=5)
#自变量pred,因变量y,x是从中找出中介变量的数据集,mediator是可能的中介变量的个数向量即1:ncol(x),
#alpha为检测是否中介的p阈值,alpha2为检测中介变量是否和自变量有关的p阈值,n为计算间接效应时的取样次数,n2为bootstrap模拟次数
summary(mmodel)

结果:

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值