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

在CFA(Lavaan)中提取观测指标的残差方差

提取CFA观测指标的残差方差

在lavaan中,有两种便捷的方法可以提取观测指标的残差方差,以下结合你的现有代码给出具体实现:

你的现有代码回顾

library(lavaan)
library(dplyr)

data(HolzingerSwineford1939) 

# 构建并拟合测量模型
Mes.Mod = ' 
  visual =~ x1 + x2 + x3
  textual =~ x4 + x5 + x6'

mod_cfa = cfa(Mes.Mod, data = HolzingerSwineford1939)

# 提取因子得分至主数据集
idx = lavInspect(mod_cfa, "case.idx")
fscores = lavPredict(mod_cfa)
for(fs in colnames(fscores)) {
  HolzingerSwineford1939[idx, fs] <- fscores[,fs]
}

方法1:提取残差方差矩阵(仅数值)

使用lavInspect()函数的"residual.var"参数,直接获取观测变量的残差方差矩阵,对角线上的数值即为对应观测指标的残差方差:

# 提取残差方差矩阵
resid_var_matrix <- lavInspect(mod_cfa, "residual.var")

# 转换为易读的数据框格式
resid_var_df <- data.frame(
  观测变量 = rownames(resid_var_matrix),
  残差方差 = diag(resid_var_matrix)
)

print(resid_var_df)

方法2:提取带统计检验的残差方差

使用parameterEstimates()函数获取所有模型参数的估计结果,筛选出变量自身协方差(即残差方差)的条目,同时附带标准误、p值等统计信息:

# 获取全部模型参数估计
all_params <- parameterEstimates(mod_cfa)

# 筛选残差方差项(op为~~且lhs等于rhs)
resid_var_stats <- all_params[all_params$op == "~~" & all_params$lhs == all_params$rhs, ]

# 整理为清晰的输出格式
resid_var_stats <- resid_var_stats[, c("lhs", "est", "se", "z", "pvalue")]
colnames(resid_var_stats) <- c("观测变量", "残差方差估计值", "标准误", "z值", "p值")

print(resid_var_stats)

说明

  • 方法1适合快速获取残差方差的数值结果;
  • 方法2适合需要对残差方差进行统计推断的场景,能查看估计值的显著性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:57:26