赞
踩
往期:
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包功能强大,模型可以灵活构建,很适通路分析。
欢迎关注我的微信公众号
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。