如何通过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,比如:
不然提取的均值会都是0,不符合实际需求。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 '
内容的提问来源于stack exchange,提问作者Saidbf
相关产品推荐
相关产品推荐

