中介分析(三):R语言实现多重中介分析

往期:

中介分析(一)

中介分析(二):多重中介分析

R语言lavaan包可以实现结构方程模型(SEM),而中介分析是SEM的核心环节。简单中介模型以及多重中介模型都可以用lavaan包实现。

安装载入lavaan包

install.packages("lavaan")
library(lavaan)

首先介绍一下lavaan包构建模型的几个基础语法:

y ~ x1 + x2 + x3   # ~左边为y,右边为3个自变量
y1 ~1 #只包含截距项的方程
:= #Define a new parameter.

简单中介实现

set.seed(1)
X<-rnorm(100)  #随机生成X,Y,M
M<-0.5*X+rnorm(100)
Y<-0.7*M+rnorm(100)
Data<-data.frame(X=X,Y=Y,M=M)
## 模型定义
model <- ' # direct effect
             Y ~ c*X
           # mediator
             M ~ a*X
             Y ~ b*M
           # indirect effect (a*b)
             ab := a*b
           # total effect
             total := c + (a*b)
         '
fit <- sem(model, data = Data)
summary(fit)

在这里插入图片描述
我们可以得到直接效应(c),间接效应(ab),总效应(total),X-M(a)以及M-Y(b)的效应。

链式多重中介实现

在这里插入图片描述
以上图为例,lavaan代码如下:

model <- ' M1 ~ a1*X
           M2 ~ a2*X + d21*M1
           Y ~ b2*M2+b1*M1+c1*X
            
           ie := a1*d21*b2
           total := c1 + (a1*d21*b2) + (a1*b1)+(a2*b2)
          '
fit <- sem(model, data = Data)
summary(fit)

并行多重中介实现

在这里插入图片描述

以上图为例,lavaan代码如下:


model <- ' 
           #outcome model
           Y ~ b1*M1+b2*M2+b3*M3+c1*X
           M1 ~ a1*X
           M2 ~ a2*X 
           M3 ~ a3*X 
            
           ie1 := a1*b1
           ie2 := a2*b2
           ie3 := a3*b3
           sumie := a1*b1+a2*b2+a3*b3

           total := c1 + a1*b1+a2*b2+a3*b3
          '
fit <- sem(model, data = Data)
summary(fit)

在fit时加入se=‘bootstrap’即可使用自助抽样法进行是否显著的估计,默认1000次,可通过bootstrap参数修改次数

用下面的语句就可以显示置信区间:

boot.fit<-parameterEstimates(fit, boot.ci.type='bca.simple')

总的来说,lavaan包功能强大,模型可以灵活构建,很适通路分析。

欢迎关注我的微信公众号
在这里插入图片描述

  • 5
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
R语言中进行分类变量中介分析,可以使用"mediation"包。具体步骤如下: 1. 安装和加载"mediation"包。 ``` install.packages("mediation") library(mediation) ``` 2. 进行自变量和中介变量之间的logistic回归,得到中介变量的系数和p值。 ``` fit.m1 <- glm(medvar ~ iv, data = data, family = binomial()) summary(fit.m1) ``` 其中,medvar为中介变量,iv为自变量,data为数据集。 3. 进行因变量和中介变量之间的logistic回归,得到因变量在中介变量控制下的系数和p值。 ``` fit.m2 <- glm(outcome ~ medvar + iv, data = data, family = binomial()) summary(fit.m2) ``` 其中,outcome为因变量,medvar和iv为中介变量和自变量,data为数据集。 4. 进行因变量和自变量之间的logistic回归,得到自变量的系数和p值。 ``` fit.y <- glm(outcome ~ iv, data = data, family = binomial()) summary(fit.y) ``` 其中,iv为自变量,outcome为因变量,data为数据集。 5. 计算中介效应和置信区间。 ``` med.out <- mediate(fit.m1, fit.m2, treat = "iv", mediator = "medvar", robustSE = TRUE) summary(med.out) ``` 其中,fit.m1和fit.m2分别为中介效应模型和完全模型,treat为自变量,mediator为中介变量。上述命令会输出中介效应和置信区间的估计值,以及各个路径的回归系数和显著性检验结果。 需要注意的是,"mediation"包还提供了其他的中介分析方法,如多重中介分析和非线性中介分析等。具体使用方法可以参考其官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值