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

如何通过Lavaan包获取CFA模型中潜变量的相关系数及描述统计量?

获取Lavaan中潜变量的均值、标准差及相关系数方法

可行性说明

完全可行,Lavaan包提供了直接提取这些潜变量统计量的工具,操作起来不复杂。

具体实现方法

1. 提取潜变量的均值与标准差

先通过lavPredict()获取潜变量的因子得分,再计算对应的均值和标准差:

# 提取所有潜变量的因子得分
latent_scores <- lavPredict(fit_model1, type = "lv")

# 计算均值和标准差并整理成数据框
latent_summary <- data.frame(
  均值 = colMeans(latent_scores),
  标准差 = sapply(latent_scores, sd)
)
print(latent_summary)

2. 提取潜变量间的相关系数

有两种简单方式:

  • 方式一:从模型拟合结果中提取协方差矩阵并转成相关矩阵
    这是模型估计层面的相关系数,更贴合CFA的模型结果:
# 提取潜变量的协方差矩阵
latent_cov_matrix <- inspect(fit_model1, "cov.lv")
# 转换为相关系数矩阵
latent_cor_matrix <- cov2cor(latent_cov_matrix)
print(latent_cor_matrix)
  • 方式二:基于因子得分计算样本相关系数
    这是从因子得分的样本数据层面计算的相关,和常规相关分析逻辑一致:
latent_cor_scores <- cor(latent_scores)
print(latent_cor_scores)

3. 整理成规范表格

如果需要输出美观的表格,可以用knitr包的kable()函数:

library(knitr)
# 输出均值标准差表格
kable(latent_summary, caption = "潜变量均值与标准差统计")
# 输出相关系数表格
kable(latent_cor_matrix, caption = "潜变量间相关系数矩阵")

关键注意点

  • 默认情况下,Lavaan会固定潜变量的均值为0(同时固定第一个观测项的因子载荷为1来识别模型)。如果需要估计潜变量的实际均值,得在模型公式里显式加上潜变量名 ~ 1,比如:
    model1 <- '
      violation =~ va1+va2+va3+va4
      less_safety =~ LS1+LS2+LS3+LS5
      self_efficacy =~ EE1+EE2+EE3+EE4
      self_efficacy ~ violation + less_safety
      # 显式估计潜变量均值
      violation ~ 1
      less_safety ~ 1
      self_efficacy ~ 1
    '
    
    不然提取的均值会都是0,不符合实际需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:25:59