Very Simple Structure(VSS)图解读、数据提取及因子分析技术问询
因子分析中VSS(Very Simple Structure)相关问题解答
我在因子分析流程中,先绘制了碎石图(scree plot),再通过psych包生成VSS图来确定保留的因子数量,使用的代码如下:
pacman::p_load(psych) vss(pc$correlations, n = 8, rotate = 'geominQ', diagonal = TRUE, fm = 'mle', n.obs = 342, plot = TRUE, title = ' ')
该代码返回了8行16列的数据框、VSS图及配套汇总指标,针对这些操作和结果,以下是对应问题的解答:
1. VSS图上的四条线分别代表什么?
- VSS complexity 1:基于复杂度为1的简单结构准则计算的拟合指标,假设每个变量仅在一个因子上有高载荷
- VSS complexity 2:基于复杂度为2的准则,允许变量在最多两个因子上有高载荷
- MAP (Mean Absolute Probability):平均绝对概率指标,衡量因子载荷矩阵的简单结构程度,数值越高代表结构越简单
- BIC (Bayesian Information Criterion):贝叶斯信息准则,用于模型选择,数值越低代表模型拟合越优
2. 如何提取绘图所用的数据框,以用ggplot绘制适用于发表的图?
vss()函数的返回结果中包含了绘图所需的所有数据,你可以将函数结果赋值给一个对象,然后从中提取相关列:
# 运行VSS并保存结果(关闭默认绘图) vss_result <- vss(pc$correlations, n = 8, rotate = 'geominQ', diagonal = TRUE, fm = 'mle', n.obs = 342, plot = FALSE, title = ' ') # 整理成ggplot适配的长格式数据 library(tidyverse) plot_data <- vss_result$vss_df %>% select(n.factors, VSS1, VSS2, MAP, BIC) %>% pivot_longer(cols = -n.factors, names_to = "metric", values_to = "value") # 用ggplot绘制发表级图表 ggplot(plot_data, aes(x = n.factors, y = value, color = metric)) + geom_line(linewidth = 1) + geom_point(size = 2) + labs(x = "因子数量", y = "指标值", color = "评价指标") + theme_bw()
3. VSS图的实际作用是什么?
VSS图的核心作用是辅助确定因子分析中最优的因子数量,它通过多个不同的简单结构拟合指标,直观展示不同因子数量下模型的简单结构程度和拟合优度,帮助研究者在「拟合优度」和「结构简洁性」之间找到平衡——毕竟因子分析的目标不仅是拟合数据,更要得到可解释的、简洁的因子结构。
4. 如何解读结果以确定因子数量?该结果与碎石图结果如何协调?二者是否有主次之分?
VSS结果解读:
- 优先看VSS1和VSS2:当这两个指标达到峰值且趋于稳定时,对应的因子数量就是候选值
- 参考MAP:MAP值越高越好,峰值对应的因子数量可作为参考
- 参考BIC:BIC值越低越好,找到BIC下降到平稳的转折点对应的因子数量
与碎石图的协调:
碎石图是基于特征值大小判断,通常选择特征值大于1的因子,或找到特征值下降的「拐点」。二者没有绝对的主次之分,需要结合来看:
- 如果VSS推荐的因子数量和碎石图一致,说明结果稳定
- 如果不一致,优先结合理论意义:比如某个因子数量在专业领域更有解释性,就优先选择;同时可以结合其他指标(如Cronbach's α、因子载荷的显著性)进一步验证
5. 如何选择估计量?部分因子数量/估计量组合出现警告或不收敛,希望了解VSS的底层数学逻辑。
估计量选择:
fm = 'mle'(最大似然估计):适合正态分布的数据,能提供拟合优度检验,但对偏离正态的数据敏感fm = 'pa'(主轴因子法):非参数方法,对数据分布要求低,适合探索性分析fm = 'minres'(最小残差法):介于MLE和主轴法之间,计算稳定,适合大多数情况- 如果出现不收敛或警告,优先换用
minres或pa,这两种方法稳定性更强
VSS底层数学逻辑:
VSS的核心是简单结构准则,它通过计算每个变量在因子上的载荷分布,衡量「变量仅在少数因子上有高载荷」的程度:
- 对每个候选因子数量,先进行因子提取和旋转(你用的是
geominQ斜交旋转) - 计算复杂度指数:衡量每个变量载荷的分散程度,复杂度为1代表变量仅在一个因子上有载荷,复杂度为2代表在两个因子上有载荷
- VSS1和VSS2就是基于复杂度1和2,计算模型的拟合优度与简单结构的综合得分;MAP则是通过概率模型衡量载荷的集中程度;BIC则是兼顾拟合和模型复杂度的信息准则
- 不收敛通常是因为因子数量与数据结构不匹配(比如因子数量过多/过少),或估计量对数据分布的假设不满足,这时候换更稳健的估计量或调整因子数量即可
内容的提问来源于stack exchange,提问作者ryorlets
相关产品推荐
相关产品推荐

