R 语言基于 lavaan 包实现结构方程模型 (SEM) 从环境配置到建模绘图全流程实战
文章目录

- 前言
- R+RStudio 开发环境部署步骤
- SEM 所需依赖包一键安装配置代码
- 验证性因子分析 CFA 实战代码
- 完整结构方程 SEM 建模实战(测量模型 + 结构模型)
- 模型结果解析与拟合指标判断标准
- semPlot 绘制标准化路径图代码
- 结果导出 CSV 代码
- 常见报错解决方案
- 参考资料 & 官方学习链接
正文内容
一、前言
结构方程模型 SEM 广泛应用于社科、心理学、经管、临床医学的问卷数据分析,可同时完成潜变量验证(CFA)与变量间路径效应检验。R 语言中lavaan是目前学术界使用最广泛的 SEM 工具包,语法简洁、适配 CFA、SEM、中介调节、多群组分析等场景。本文从零搭建运行环境,附带全套可直接复制运行代码,新手跟着操作即可一次跑通 SEM 模型。
二、开发环境安装配置
2.1 安装 R 主程序
官方下载地址:https://cran.r-project.org/
- Windows:Download R for Windows→base 安装;
- Mac:Download R for macOS 下载对应系统版本安装。
2.2 安装 RStudio 编辑器(推荐)
RStudio 是 R 可视化 IDE,方便代码编写、看图、查看结果:下载地址:https://posit.co/download/rstudio-desktop/
安装顺序:先装 R,再装 RStudio,默认路径下一步即可,无需额外环境变量配置。
三、依赖包一键配置代码
打开 RStudio,新建 R 脚本,复制下方代码运行,首次运行自动安装依赖,后续使用仅加载包即可。
运行
R
# 清空工作环境
rm(list = ls())
# 批量安装SEM所需工具包(仅首次运行)
install.packages(c("lavaan","semPlot","tidyverse"))
# 载入包(每次分析前执行)
library(lavaan) # SEM建模核心包
library(semPlot) # SEM路径图绘制
library(tidyverse) # 数据预处理
出现
DONE字段代表包安装成功。
四、案例数据源说明
采用 lavaan 内置经典数据集HolzingerSwineford1939,经典智力测验数据,无需导入本地 Excel,直接调用数据:
运行
R
# 读取内置数据
data(HolzingerSwineford1939)
dat <- HolzingerSwineford1939
# 预览前5行数据
head(dat)
数据集包含 3 个潜变量:视觉能力 visual (x1-x3)、语言能力 textual (x4-x6)、反应速度 speed (x7-x9),结果变量数学能力 math。
五、实操 1:验证性因子分析 CFA(测量模型)
CFA 用于检验量表维度结构、因子载荷,只定义潜变量与观测指标,无潜变量间路径。
运行
R
# CFA模型语法:=~ 代表潜变量由多个观测题项组成
cfa_model <- '
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
'
# 拟合CFA模型
fit_cfa <- cfa(cfa_model,data = dat,std.lv = TRUE)
# 输出结果:标准化系数+拟合指标+R方
summary(fit_cfa,standardized = TRUE,fit.measures = TRUE,rsquare = TRUE)
六、实操 2:全结构方程模型 SEM(测量 + 结构模型)
~代表回归路径,实现自变量潜变量预测因变量潜变量,完整 SEM 代码:
运行
R
# 定义完整SEM模型
sem_model <- '
# 测量模型:潜变量-观测指标
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
math =~ x10 + x11 + x12
# 结构模型:自变量影响因变量
math ~ visual + textual + speed
'
# 模型拟合 std.lv=TRUE 潜变量标准化
fit_sem <- sem(sem_model,data = dat,std.lv = TRUE)
# 输出详细结果
summary(fit_sem,standardized = TRUE,fit.measures = TRUE,rsquare = TRUE)
七、模型拟合指标评判标准
表格
| 拟合指标 | 合格阈值 | 优秀阈值 |
|---|---|---|
| CFI/TLI | >0.90 | >0.95 |
| RMSEA | <0.08 | <0.05 |
| SRMR | <0.08 | <0.05 |
八、semPlot 绘制标准化 SEM 路径图
运行
R
# 绘制标准化路径图
semPaths(fit_sem,
what = "std", # 展示标准化路径系数
layout = "tree", # 树形布局
edge.label.cex = 0.8, # 标签字体大小
nodeLabels = c("视觉能力","语言能力","反应速度","数学成绩"),
residuals = FALSE) # 隐藏残差项
运行后 RStudio 绘图面板自动生成 SEM 路径图,可直接导出 PNG 用于论文。
九、参数结果导出本地 CSV
运行
R
# 提取全部参数(载荷、路径系数、标准误)
result_df <- parameterEstimates(fit_sem,standardized = TRUE)
# 保存到当前工作目录
write.csv(result_df,"SEM分析结果.csv",row.names = F,fileEncoding = "UTF-8")
十、常见报错与解决方案
- 报错:package xxx is not available
网络源异常,切换国内 CRAN 镜像后重装:
运行
R
chooseCRANmirror(graphics=F,ind=1)
install.packages("lavaan")
- 报错:there is no package called 'semPlot'
单独安装缺失包:install.packages("semPlot")-
semPaths 无法出图
精简绘图代码:
-
运行
R
semPaths(fit_sem,what="std",layout="tree",residuals=F)
十一、参考资料 & 官方链接
- lavaan 官方主页:https://lavaan.ugent.be/
- lavaan 官方英文教程:https://lavaan.ugent.be/tutorial.html
- CRAN-lavaan 官方手册:https://cran.r-project.org/web/packages/lavaan/lavaan.pdf
- semPlot 包文档:https://cran.r-project.org/web/packages/semPlot/index.html
十二、文末小结
- SEM 分析流程:环境安装→包配置→模型书写→模型拟合→拟合度检验→画图→结果导出;
- lavaan 核心语法:
=~定义测量模型,~定义结构回归路径; - 替换 dat 为自己的 Excel 问卷数据,即可实现自定义量表 SEM 分析。