简介:r语言结构方程模型,相比amos构建模型更方便,但绘图没有amos自定义程度高。
R包:lavaan 结构方程建模 tidySEM 、lavaanPlot绘图
中介结构方程模型
model <- '
# 潜变量
ability =~ 一关注倾听均分 + 一理解回应均分 + 一反思再现均分
work =~ 四工作条件均分 + 四工作压力均分 + 四工作掌握均分+四工作家庭平衡均分+四工作评价均分+四一般幸福感均分+四职业生涯满意度均分+四总体评价
#路径
work ~ a1*三家庭关怀度均分
二自我效能均分 ~ a2*三家庭关怀度均分 + d21*work
ability ~ b2*二自我效能均分+b1*work+c1*三家庭关怀度均分#残差相关
四工作掌握均分 ~~ 四职业生涯满意度均分
四工作压力均分 ~~ 四职业生涯满意度均分
四工作条件均分~~四工作掌握均分
四工作掌握均分 ~~ 四总体评价
四工作压力均分~~四工作家庭平衡均分
四工作压力均分~~四工作掌握均分
四一般幸福感均分~~四职业生涯满意度均分
#间接效应
ie := a1*d21*b2 + (a1*b1) + (a2*b2)
ie1 := a1*d21*b2
ie2 := a1*b1
ie3 := a2*b2
total := c1 + (a1*d21*b2) + (a1*b1)+(a2*b2)
'
# 拟合SEM模型
fit <- sem(model, adam,estimator = "ML", se='bootstrap', bootstrap =2000) # 这里正态数据选用ML,极大似然;非正态数据选用wls
#模型修正指数
t <- as_tibble(modificationIndices(fit)) %>% select(1:4)
%>% filter(mi >= 5) %>% arrange(desc(mi)) %>% head(10)
# 查看结果
summary(fit, standardized = T)
#bootstrap置信区间
parameterestimates(fit,boot.ci.type = "norm")
#模型检验 x/df根据summary结果自行计算
fit_indices <- fitMeasures(fit0, c("CMIN","RMSEA", "GFI", "NFI", "IFI","TLI", "CFI","AGFI"))
# 绘图
semPaths(fit0,what="std",layout="circle2") #不好看
lavaanPlot(fit0,graph_options=list(rankdir="LR"),coef=T,stand=T,digits=3,
stars=c("regress","latent"),
labels=list(ability="医学叙事能力",work="工作相关生活质量",二自我效能均分="自我效能"))
lay <- get_layout(NA,NA, NA, "二自我效能均分", NA,NA,NA, "一关注倾听均分",
"三家庭关怀度均分",NA,NA, NA,NA, "ability" ,NA,"一理解回应均分",
NA,NA, NA, "work", NA,NA,NA, "一反思再现均分",
"四一般幸福感均分", "四职业生涯满意度均分", "四工作评价均分", "四工作家庭平衡均分", "四工作掌握均分","四工作压力均分","四工作条件均分","四总体评价",rows=4)
graph_sem(model = fit0,layout = lay, text_size = 3, fix_coord = TRUE)
get_edges(fit0)