一、案例介绍某运营商无线增值业务全国各省某一个月内运营情况,变量35个,样本31个(全国31个省),希望通过因子分析对各省综合实力进行排序
二、问题描述通过spss的因子分析对原始变量进行降维处理时,SPSS提示相关系数矩阵为“非正定矩阵”,无法给出KMO值,但是SPSS仍然给出了后续因子分析结果
三、疑问1)什么是正定矩阵
2)因子分析是否一定要求变量的相关系数矩阵为正定矩阵
3)非正定矩阵的存在对因子分析结果有何影响
4)如何修正使得变成正定矩阵
四、解决办法通过在论坛上查阅人相关问题,发现其他网友总结出现这种情况的原因主要集中在两点:1)样本量太少,而指标过多2)某些变量间相关性太强而解决方案分别要求增加样本,或者剔除某些显著强相关的变量,但是在我的这个例子里面无法增加样本,因此只能从变量的相关性上考虑,看是不是存在一些和其他变量高度相关的变量
通过查看因子分析结果中的相关系数矩阵,的确发现大部分变量之间都存在高度相关性,而且相关系数在0
9以上:但是现在问题来了,那是不是应该直接删除高度相关的变量
该删除哪些变量
按照我的情况估计很多变量都要剔除了,那对于分析结果就会产生很大的影响
为了找出具体是哪些变量导致问题的出现,我用了一个比较笨的办法:逐一淘汰法
刚开始时不把所有变量都用来做因子分析,只选取一小部分,例如我先选取了10个变量做分析,发现spss没有再提示“非正定矩阵”而是正常的输出了KMO检验值,而且顺利完成了因子分析结果;然后下一步我再逐个添加其他变量进行测试,当发现添加某个变量spss提示“非正定矩阵”时,就记下这个变量,然后再换成下一个变量继续测试,直到把所有变量测试完
通过这样的测试,我终于找到让spss认为“非正定矩阵”的原因:一共有5个变量,只要不纳入这5个变量进行分析,spss就能正常的进行因子分析
找到原因后,我本来想直接删除掉这5个变量好了