You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中绘制CFA模型的标准化载荷(Std.all)而非估计载荷?

如何绘制CFA模型的标准化因子载荷(Std.all)

在用lavaan拟合验证性因子分析(CFA)模型后,我们能通过summary(cfa_mod, standardized = TRUE)看到包含Std.all列的标准化因子载荷,但lavaanPlot默认显示的是未标准化的Estimate列估计值,这里提供两种解决方法:

方法一:lavaanPlot手动传入标准化载荷

lavaanPlot没有直接调用Std.all的参数,但可以手动提取标准化载荷后通过custom_coefs参数传入:

  1. 用parameterEstimates()提取模型的标准化估计值
  2. 筛选出因子载荷(op为=~)的行
  3. 整理成custom_coefs需要的列表格式

完整代码示例:

# 加载所需包
library(dplyr)
library(lavaan)
library(lavaanPlot)

# 生成可重复的模拟数据
set.seed(123)
var1 <- rnorm(10, 5, 1)
var2 <- rnorm(10, 5, 1)
var3 <- rnorm(10, 5, 1)
df <- tibble(var1, var2, var3)

# 定义并拟合CFA模型
latent_var <- "latent_var =~ var1 + var2 + var3"
cfa_mod <- cfa(latent_var, df)

# 提取标准化因子载荷并整理格式
std_loadings <- parameterEstimates(cfa_mod, standardized = TRUE) %>%
  filter(op == "=~") %>%
  mutate(path = paste(lhs, "->", rhs)) %>%
  select(path, Std.all)

custom_coefs <- setNames(std_loadings$Std.all, std_loadings$path)

# 绘制带标准化载荷的模型图
lavaanPlot(model = cfa_mod, coefs = FALSE, custom_coefs = custom_coefs)

方法二:用semPlot直接绘制标准化载荷

semPlot是SEM绘图的专用包,支持直接指定显示Std.all值,操作更简便:

# 加载包
library(semPlot)

# 绘制标准化载荷的CFA模型
semPaths(cfa_mod, 
         whatLabels = "std",  # 明确指定显示标准化载荷(Std.all)
         style = "lisrel",    # 可选绘图风格,也可使用"ram"
         edge.label.cex = 1,  # 调整载荷标签大小
         layout = "tree")     # 设置布局为树形结构

内容的提问来源于stack exchange,提问作者dalexco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:03:08