R语言基于mediation包行中介效应分析

本文介绍了如何利用R语言中的mediation包进行中介效应分析,以研究治疗如何通过焦虑状态影响移民行为。首先建立了焦虑与治疗的方程,然后构建了结局变量与中介变量及自变量的关系方程。通过mediate函数进行分析,结果显示主要通过中介效应影响结局,直接效应不显著。进一步的敏感性分析验证了中介效应的可靠性。文章提供了详细的代码示例和结果解读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中介变量(mediator) 是一个重要的统计概念,如果自变量 X 通过某一变量 M 对因变量 Y 产生一定影响,则称 M 为 X 和 Y 的中介变量。我们既往已经介绍了SPSS行中介效应分析,今天继续介绍R语言基于mediation包行中介效应分析。
在这里插入图片描述
我们先导入数据和R包

library(mediation)
bc<-read.csv("E:/r/test/yimin.csv",sep=',',header=TRUE)

在这里插入图片描述
在这里插入图片描述
我们先来看看数据,这是一个关于移民的数据(公众号回复:移民数据,可以获得数据),数据很多,我们来看看我们关心的几个数据。
Emo:焦虑状态,通过量表来评分,treat:治疗,分为有治疗和未治疗,age:年龄,educ:教育程度,gender:性别,income:收入,cong_mesg:发送移民信息,二分类变量,也是结局变量
假设我们想知道,我们可以不可以通过治疗来改变患者的焦虑状态,从而改变患者移民这一举动。
先建立焦虑和治疗的方程,因为焦虑指标为连续的,这里使用lm连接

med.fit <- lm(emo ~ treat + age + educ + gender + income, data = bc)

然后建立结局变量,中介变量和自变量关系方程

out.fit <- glm(cong_mesg ~ emo + treat + age + educ + gender + income,
               data = bc, family = binomial("probit"))

行中介效应分析,treat填自变量,mediator填中介变量,robustSE为显示可信区间,sims为重复100次,也可以自己调整

med.out <- mediate(med.fit, out.fit, treat = "treat", mediator = "emo",
                   robustSE = TRUE, sims = 100)###treat填自变量,mediator填中介变量

解析结果

summary(med.out)

在这里插入图片描述
我们可以看到总效应等于中介效应+直接效应。直接效应P值大于0.05,表明直接效应影响不大,自变量主要是通过中介效应影响结局,也就是移民。
进一步绘图

plot(med.out)

在这里插入图片描述
由上图也可以看出,ADE的影响很小,主要是通过ACME来影响。
接下来我们进一步做敏感性分析

sens.out <- medsens(med.out, rho.by = 0.1, effect.type = "indirect", sims = 100)
summary(sens.out)

在这里插入图片描述
上图标出了rho,可信区间和R方,

par(mfrow = c(1,2))
plot(sens.out, sens.par = "rho", main = "Anxiety", ylim = c(-0.2, 0.2))

在这里插入图片描述
Y表示中介效应值,X表示敏感度关于rho。虚线表示rho=0的时候,就是没有混杂效应的时候。红线表示混杂效应导致中介效应消失时rho的值(有点拗口,自己体会一下),因此得出rho的绝对值越高,中介效应越可靠。
我们还可以做出R方的图,R方的解释与其他模型R方的解释是一样的。

plot(sens.out, sens.par = "R2", r.type = "total", sign.prod = "positive")

在这里插入图片描述
总的来说mediation包行中介效应分析挺简单的。
参考文献:

Imai, Kosuke, Luke Keele and Dustin Tingley (2010) A General Approach to Causal Mediation Analysis, Psychological Methods 15(4) pp. 309-334.

Imai, Kosuke, Luke Keele and Teppei Yamamoto (2010) Identification, Inference, and Sensitivity Analysis for Causal Mediation Effects, Statistical Sciences, 25(1) pp. 51-71.

Imai, Kosuke, Luke Keele, Dustin Tingley, and Teppei Yamamoto. (2009) “Causal Mediation Analysis Using R” in Advances in Social Science Research Using R, ed. H. D. Vinod New York: Springer.
Forthcoming.

在这里插入图片描述

### 关于R语言中介效应分析中模型系数为NA的报错解决方案 在处理R语言中介效应分析时,当遇到模型系数显示为`NA`并伴随报错的现象,这通常意味着存在某些潜在的数据或建模问题。此类情况可能由多种因素引起,括但不限于数据缺失、变量间共线性过高或是特定情况下模型未能成功收敛。 针对上述提到的问题,有几种常见策略可以帮助解决问题: 1. **检查输入数据的质量**:确保用于分析的数据集没有任何异常值或大量缺失值的存在。对于含有缺失值的情况,考虑采用合适的方法进填补或删除相应观测点[^1]。 2. **评估自变量之间的多重共线性程度**:高维数或多类别预测因子可能导致严重的多重共线性现象,进而影响估计稳定性。可以通过计算VIF(方差膨胀因子)来检测是否存在此问题;若发现严重共线性,则需调整特征组合以降低其影响。 3. **简化初始设定或增加迭代次数**:有时复杂的模型结构可能会使优化算法难以找到全局最优解,在这种情形下适当减少模型复杂度或将最大迭代次数设得更大有助于提高求解成功率。 4. **利用诊断工具排查具体原因**:类似于地理探测器中的做法——即不是一次性运整个流程而是拆分成更小的部分逐步调试—也可以应用于当前场景。比如先分别拟合简单回归再逐渐加入更多成分直至完整路径模型,以此方式定位引发错误的具体环节[^2]。 5. **探索不同软件及其配置选项**:不同的R实现相同功能的方式可能存在细微区别,尝试更换其他支持中介效应分析的库如mediation package,并仔细阅读文档了解是否有特殊参数可调优从而绕过现有障碍。 ```r library(mediation) # 假定已有dataframe df 含X M Y列作为独立变项 中介变项 和因应变项 fit.m <- lm(M ~ X, data=df) fit.y <- lm(Y ~ X + M, data=df) result <- mediate(fit.m, fit.y, treat="X", mediator="M", boot=TRUE, sims=1000) summary(result) ```
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值