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

如何通过代码提取lavaan模型中的CFI、TLI等拟合指标值?

提取lavaan中CFA拟合指标的方法

最推荐的方法:用fitMeasures()函数

lavaan专门提供了fitMeasures()函数来提取各类拟合指标,比从summary对象里手动查找路径更可靠,批量处理也更方便。

基础提取代码

# 先拟合CFA模型(替换成你的实际数据集)
model <- 'y =~ x1 + x2 + x3'
fit <- cfa(model, data = your_data)

# 提取你需要的拟合指标
target_indices <- fitMeasures(fit, c("pvalue", "cfi", "tli", "rmsea", "srmr"))

# 转成数据框,方便后续导出LaTeX
fit_result_df <- as.data.frame(t(target_indices))

如果需要RMSEA的置信区间和对应的p值,直接在指标列表里补充即可:

target_indices <- fitMeasures(fit, c("pvalue", "cfi", "tli", "rmsea", "rmsea.lower", "rmsea.upper", "rmsea.pvalue", "srmr"))

从summary对象提取的方法

如果坚持用你原有的summary对象,这些指标的提取路径如下(注意修正你原代码中fit_os_bi的笔误,应该是拟合后的fit对象):

# 生成包含拟合指标的summary
sum <- summary(fit, fit.measures=TRUE, standardized=TRUE)

# 逐个提取指标
p_val <- sum$test$standard$pvalue
cfi_val <- sum$fit.measures["cfi"]
tli_val <- sum$fit.measures["tli"]
rmsea_val <- sum$fit.measures["rmsea"]
srmr_val <- sum$fit.measures["srmr"]
# RMSEA置信区间和对应p值
rmsea_lower <- sum$fit.measures["rmsea.lower"]
rmsea_upper <- sum$fit.measures["rmsea.upper"]
rmsea_p <- sum$fit.measures["rmsea.pvalue"]

批量运行CFA并汇总结果

如果要批量处理多个模型,可以用lapply()实现:

library(lavaan)
library(dplyr)

# 把所有待拟合的模型存入列表
models <- list(
  单因子3项模型 = 'y =~ x1 + x2 + x3',
  单因子4项模型 = 'y =~ x1 + x2 + x3 + x4',
  双因子模型 = 'y1 =~ x1 + x2; y2 =~ x3 + x4'
)

# 批量拟合模型并提取指标
batch_results <- lapply(models, function(mod) {
  fit <- cfa(mod, data = your_data)
  fitMeasures(fit, c("pvalue", "cfi", "tli", "rmsea", "srmr"))
})

# 转换为规整的数据框
batch_result_df <- bind_rows(batch_results, .id = "模型名称")

得到数据框后,用kableExtra或xtable包就能直接导出符合要求的LaTeX表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:01:16