问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://blog.csdn.net/2301_79584199/article/details/139195112

本文部分内容学习自知乎文章,主要介绍了如何使用R语言中的bruceR和mma包进行多重中介效应分析。文章详细解释了简单中介效应、平行中介效应和链式中介效应的概念,并通过具体代码示例展示了如何使用相关函数进行分析。

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的总间接效应为ab+cd,直接效应为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)  

结果:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号