ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SPSS主成分分析全流程:从数据准备到结果解读

SPSS主成分分析全流程:从数据准备到结果解读 1. 主成分分析到底在做什么先讲点实在的。主成分分析PCA这东西听起来高大上其实就是一句话在损失尽可能少的信息的前提下把一大堆相互关联的变量压缩成少数几个互不相关的新变量。这几个新变量就叫主成分。举个我经常给学员打的比方你手里有一份关于城市居民生活质量的问卷里面包含收入、教育年限、医疗资源满意度、交通便利度、绿化覆盖率等二十多个指标。这些指标之间其实高度相关——收入高的地方教育水平往往也高医疗资源通常也更丰富。你硬把这二十多个变量全塞进回归模型轻则多重共线性让系数变得不可解释重则模型直接跑崩。但你也不能随便扔掉几个指标因为每个指标都携带了一部分信息。主成分分析的思路就是我没办法直接删变量那我就用数学方法把这些变量按信息量重新组合。第一个主成分抓住原始数据里最大的变异方向第二个主成分抓住剩余信息中最大的变异方向以此类推。最终你只需要取前两三个主成分就能代表原来二十多个变量七八成的信息量。这种“降维保留核心”的思想在数据维度高、变量冗余多的场景里几乎是刚需。这篇内容要解决的就是SPSS里从准备数据到跑出结果再到把结果讲清楚的完整流程。适合的人群很明确正在做问卷分析的学生、刚开始接触数据建模的职场新人以及那些已经在项目里被多重共线性折腾过、急需一个靠谱降维方案的从业者。2. 跑主成分分析之前你必须先做的三件事很多人在SPSS里直接点菜单开出结果就开始截图这是最要命的操作。主成分分析不是“点一下就出图”的傻瓜工具它有三个前置前提不满足就硬跑结果就是一堆废数据。2.1 变量的测量尺度必须统一主成分分析的底层逻辑是通过方差最大化的方式来寻找新坐标系。这里有个隐藏问题方差的大小和变量的量纲直接挂钩。如果你的数据里有“收入元”和“满意度1-5分”这种量纲差异巨大的变量收入那一列的巨大数值方差会把整个分析结果带偏主成分几乎全被收入变量主导其他变量的信息被压得看不见。解决办法就一个标准化Z-score标准化。SPSS在很多主成分分析相关的菜单里会自动做标准化处理但如果你是用“分析—降维—因子分析”这个路径跑这个下面细说SPSS默认使用的是相关矩阵所以相当于已经做了标准化。这一点在操作时要心里有数别重复标准化也别完全不管。如果数据是量纲差异大、但你又想保留原始尺度的意义那就要先自己想清楚到底是要解释性还是要统计前提满足。绝大多数场景下标准化之后得到的主成分更好解释也更稳健。2.2 样本量至少是变量数的5倍以上这算是经验法则。主成分分析本质上是要从样本的协方差结构里提取信息样本太少协方差矩阵本身就不稳定提取出来的主成分换个样本就面目全非。行业里比较认可的经验值是样本量 ≥ 变量数 × 5最好能到10倍以上。比如你有20个变量那样本量最少100理想情况下200以上。有学生问过我老师我只有40份问卷10个变量能不能做主成分我的回答是能做但结果千万别当普适结论只能作为探索性参考。因为你提取出来的主成分结构很可能是这个特定小样本的偶然产物换一批受访者就变了。2.3 变量之间必须存在相关性这是很多人忽略的一点也是主成分分析和它的“近亲”因子分析共用的前提。主成分分析就是要从相关中提取公共信息如果变量之间本来就是相互独立的没有任何相关性那主成分分析提取出来的“主成分”其实和原始变量没多大区别降维效果为零。怎么判断SPSS里有两个现成的指标KMO检验和Bartlett球形度检验。KMO值反映的是变量间的偏相关系数是否足够小一般认为0.7以上适合做主成分分析0.5以下基本不适合。Bartlett球形度检验的零假设是“相关系数矩阵是单位矩阵”如果显著性小于0.05说明变量间的确存在相关性适合做。这两个检验在SPSS的因子分析菜单里可以勾选输出所以实际操作时很多人会用“因子分析”这个菜单来跑主成分分析——本质上是因为SPSS并没有一个单独叫“主成分分析”的菜单项PCA和因子分析在SPSS里共用同一个对话框只是提取方法和旋转方式不同。这个细节我单独用一节来讲。3. SPSS实操全流程一步步拆开揉碎好前提检查完了数据合格开始实际操作。我用的是SPSS 26版菜单路径在25、26、27这几个版本里基本一致旧版本也不会有太大偏差。3.1 菜单路径与参数设置打开SPSS载入数据依次点击分析Analyze— 降维Dimension Reduction— 因子分析Factor注意SPSS里确实没有“主成分分析”这个独立菜单PCA是被包含在“因子分析”这个功能模块里的。这一步是新手最容易困惑的地方记住了。弹出来的对话框里把你要分析的变量全选到右侧“变量”框里。然后依次设置描述Descriptives勾选“初始解Initial solution”和“KMO和Bartlett的球形度检验”。这两个是必勾项一个给你初始的变量共同度表一个给你适用性检验。提取Extraction这里最关键。方法下拉框里选“主成分Principal components”输出勾选“未旋转的因子解Unrotated factor solution”和“碎石图Scree plot”。提取数量选“基于特征值Eigenvalues over”默认是大于1这个先保留。旋转Rotation主成分分析这一步选“无None”。因子分析才会用到旋转PCA不旋转因为主成分的目的就是抓住最大方差方向旋转反而破坏了它“按信息量排序”的优雅结构。得分Scores勾选“保存为变量Save as variables”方法选“回归Regression”这样SPSS会把计算出来的主成分得分保存到数据视图里后面做回归、聚类、判别分析都能直接用。同时勾选“显示因子得分系数矩阵Display factor score coefficient matrix”这个矩阵用来了解主成分具体由哪些变量构成后面讲结果解读时会用到。选项Options缺失值选“按列表排除个案Listwise”就行如果数据有缺失值这个选项会保证每个个案在所有变量上都是完整的才会被纳入分析。全部设置好后点确定输出窗口会出一堆表格和一张图。接下来这条才是重点这些结果怎么看。3.2 结果解读第一关KMO和Bartlett检验输出窗口中第一个有实际意义的表格就是“KMO和Bartlett的检验”。表格很简单三行数据指标数值示例判断标准KMO取样适切性量数0.8320.9极佳0.8良好0.7中等0.5不可接受Bartlett球形度检验近似卡方2456.387值越大越好自由度190由变量数决定n(n-1)/2显著性0.0000.05拒绝零假设适合做PCAKMO大于0.7是我的心理底线。如果KMO低于0.6通常意味着变量之间的共同信息太少或者有个别变量和其他变量完全不搭调这时候我会回到变量清单里看看是不是有些题目测量地和别人不在一个维度上删掉这些“游离变量”后重新跑。Bartlett检验的显著性是0.000直接说明相关系数矩阵不是单位阵变量间存在真实的相关结构。两个指标都过了才能继续往下看。3.3 结果解读第二关共同度表下一个表是“公因子方差Communalities”也叫共同度表。这个表列了每个变量的“初始Initial”和“提取Extraction”两个数值。初始值在PCA里永远是1表示原始变量的全部方差都参与了分解。提取值表示的是你提取出的这几个主成分总共解释了这个变量百分之多少的方差。提取值低于0.4的变量意味着你提取的主成分对这个变量几乎没有解释力也就是说这个变量提供的信息大部分都丢了。按我自己的经验如果样本量还可以变量提取值低于0.4我会考虑把这个变量删掉重跑。但要注意这不是绝对标准如果你做的是探索性研究0.3以上也可以容忍。比如你有个变量提取值是0.268说明主成分解释了它26.8%的方差73.2%的信息都丢了。这种变量留着就是拖后腿。后来我研究发现这个变量是“对社区健身器材种类的了解程度”和其他“满意度类”题目相关性极低本来就格格不入。删掉之后KMO从0.63上升到0.79总方差解释率也提升了近10个百分点。3.4 结果解读第三关总方差解释表这个表是判断“到底提取几个主成分”的核心依据也是你在论文或报告里必须放的一张表。表格里有几个关键列初始特征值Initial Eigenvalues每个主成分的特征值、方差百分比、累积百分比。提取载荷平方和Extraction Sums of Squared Loadings特征值大于1的主成分被保留后的相关数据和初始特征值的前几行数字完全一样。特征值大于1这个准则Kaiser准则是SPSS默认的提取标准也是用得最广泛的。原理很直观如果某个主成分的特征值小于1说明这个主成分解释的方差还不如一个原始变量——那提取它就没意义了。实际操作中还有一个方法要和特征值法配合使用看碎石图。碎石图横轴是主成分序号纵轴是特征值。曲线一开始急剧下降然后逐渐平坦这个“肘部”位置之前的成分就是值得保留的。如果特征值大于1的成分有3个但碎石图的肘部位置在第2个成分之后我会倾向于提取2个因为更简洁能更好地满足“以尽量少的维度表达尽量多的信息”的目的。记住一个基本原则主成分的数量不是越多越好越少越好只要累积方差解释率能到70%-80%以上同时每个保留主成分都有业务上的解释意义就算达标。一些学科对累积方差有很低的要求比如60%甚至50%就算可以这要结合具体领域来判断。4. 主成分矩阵和得分系数矩阵从数学结果到业务解释表格看到这里你已经知道要提取几个主成分了。剩下的关键表格有两个成分矩阵Component Matrix和成分得分系数矩阵Component Score Coefficient Matrix。很多人在这一步开始犯迷糊其实这两张表的用法完全不同。4.1 成分矩阵怎么读成分矩阵显示的是每个主成分在各个原始变量上的载荷Loading也就是原始变量和主成分之间的相关系数。载荷的绝对值越大说明这个变量在这个主成分上的贡献越大。这部分最考验业务解释能力。你一定要去看每个主成分上载荷绝对值较大的变量是哪些然后尝试用一个概念去概括它们。这就是从统计结果走向业务结论的关键一步。我在一次顾客满意度项目里提取了两个主成分。主成分1上载荷绝对值较大的变量是“产品质量”“售后服务响应速度”“客服态度”我把它解释为“核心服务感知”主成分2上载荷较大的变量是“价格”“折扣力度”“性价比”我把它解释为“价格敏感度”。这两个主成分放进后续的客户分群模型里效果远比把九个原始变量直接塞进去清晰得多。需要注意PCA的载荷有正有负负号并不代表“这个变量不重要”而是代表它在方向上与主成分呈负相关。做业务解释时要把正负号纳入解释逻辑里。4.2 得分系数矩阵怎么用成分得分系数矩阵告诉你每一个主成分是原始变量的什么线性组合。格式大致是变量主成分1主成分2变量A0.214-0.086变量B0.1750.120数学上是这样的关系主成分1 0.214 × 变量A标准化后 0.175 × 变量B标准化后 ...注意如果你在得分面板勾选了“保存为变量”SPSS会在数据视图里自动生成几个新列列名类似“FAC1_1”“FAC2_1”这些就是主成分得分完全不需要你自己手动计算。这个得分可以用于后续分析做主成分回归、K-means聚类、判别分析都可以直接把得分当输入变量。其实我自己很少手动根据系数矩阵去算分因为SPSS已经做了。我关注这个矩阵通常是为了向业务人员解释你们这个“综合得分”到底是怎么来的每个变量占多大权重这样他们才会信服这个分得出的结论。4.3 PCA和因子分析的区别建议早点搞清楚跑完上面这些操作你可能会看到某些教程里讲的是“因子分析”提取出来叫“因子”旋转用的“最大方差法”步骤和PCA高度相似。这里我明确说一下SPSS实操上的差异提取方法选了“主成分Principal components”本质就是PCA提取方法选了“主轴因子Principal axis factoring”或“极大似然Maximum likelihood”本质才是因子分析因子分析通常会做旋转如最大方差旋转PCA通常不做旋转PCA关注“我能用几个新变量保留尽量多的信息”因子分析关注“这些变量背后隐藏的共同因子是谁”。多数做问卷量表效度分析的人实际上用的是因子分析做降维、压缩变量、消除共线性的人用的才是真正的PCA。这篇文章专注的是PCA但你在SPSS里走的是同一个入口。这个坑一定要跨过去。5. 实操中遇过的高频问题与排查心得这一部分是我自己反复踩过的坑整理成速查表形式希望能帮你省掉一些试错时间。问题现象可能原因排查与解决KMO值很低0.5样本量不足、变量间相关过弱、存在反向计分题未处理先检查反向题反转再检查是否有“游离变量”必要时增补样本Bartlett检验不显著变量近乎独立或样本量过小PCA的前提不成立不建议强行做可考虑直接用原始变量做后续分析某个变量的共同度提取值极低该变量与其他变量相关性差删除该变量后重新跑通常能提升整体解释率特征值大于1的成分太多变量数多且结构复杂结合碎石图的“肘部”位置人为设定提取数量主成分的业务含义不清晰提取数量不合适或变量导入有误先确认数据是否有误再增加/减少主成分数量必要时换用旋转后的因子分析FAC得分全为负这是正常现象主成分得分是标准化后的数值均值为0正负代表相对高低不是错误这里细说两个容易误判的场景。反向计分题是KMO第一大杀手。问卷里经常有一批反向题比如“我觉得使用该产品非常麻烦”。如果你没有先把反向题的得分反转这道题和其他正向态度的题目之间的相关性就是负的而且整体相关系数会被稀释最后KMO一塌糊涂。解决办法很简单在SPSS里用“计算变量Compute Variable”生成反转后的新变量新值 量表总分 1 - 原值针对5点量表。先做这一步再跑KMO立刻看到KMO值大变样。主成分数选了太多导致业务解释瘫痪。曾经有个案例15个变量跑出来特征值大于1的主成分有6个累积方差解释率虽然到了78%但几乎每个主成分都只由两三个变量组成业务上根本没法起名字、讲逻辑。后来我就是靠结合碎石图的“肘部”位置强制提取前3个主成分累积方差虽然降到了68%但每个主成分都有清晰的含义整个分析的故事终于能讲圆了。做分析不是追求数字好看的是要让你的结论能被使用的人理解和接受。6. 保存结果与写进论文的几个细节跑完PCA只是开始后面写报告时也有几个实用细节。6.1 图表怎么放论文或报告里总方差解释表建议放完整版的前几个成分数据把“初始特征值”和“提取载荷平方和”两栏并排展示。注意在表格下方写清楚“提取方法主成分分析。”如果取的是前两个主成分可以补一句“前两个主成分的累积方差解释率为XX%表示保留的方差信息占原始变量总方差的XX%。”碎石图放在总方差解释表后面配合一段文字说明“图中横轴为主成分序号纵轴为特征值可见前X个点位于特征值大于1的区间或肘部位置之前且曲线随后趋于平缓说明提取X个主成分较为合理。”6.2 得分的用途别局限在“看图”我见过很多人拿到主成分得分就是看看、截图然后就完了。这其实浪费了最有价值的部分。主成分得分的最大作用是作为后续建模的输入。比如聚类分析用两三个主成分得分替代二十个原始变量做K-Means聚类的速度、稳定度和可解释性都会明显提升。回归分析用主成分得分做回归彻底规避多重共线性同时因为主成分之间正交回归系数的解释也更清爽。可视化高维数据没法直接画散点图取前两个主成分得分画平面散点图是快速看数据分布的最常用手段。我自己在会员画像分析里就是先跑PCA得到三个主成分分别代表消费力、活跃度、忠诚度再基于这三个得分做K-Means聚类最后得到五类会员画像。陈述结果时对业务方也好交代我们先压缩维度、再分群每一步都有据可循。6.3 一句最核心的心法做PCA一定要记住“解释优先”这四个字。特征值、方差解释率都是手段你能不能用提取出来的主成分讲出一个让业务方点头的故事才是终极目的。很多漂亮的统计结果卡在“说不清主成分代表什么”这步论文写不下去、汇报被挑战。所以每提取一个主成分先问自己一句这个主成分我敢不敢给它起名字如果不敢就回到数据里去调整。
返回列表