SPSS主成分分析实操:从因子分析菜单到综合得分落地
打开SPSS想跑主成分分析结果在分析菜单里来回翻了三遍愣是没找到主成分分析这五个字——这是我在带新人做问卷降维时被问得最多的一句话。很多人第一次接触SPSS做主成分分析都会卡在同一个地方菜单里明明只有因子分析哪来的主成分分析其实SPSS把主成分分析藏在了因子分析对话框的抽取方法里选对了就是主成分选错了就变成了主轴因子分解两套东西算出来的载荷、方差解释率、甚至保留几个维度都可能不一样。这篇内容我想把这条链路从头到尾捋一遍KMO和巴特利特检验怎么看、反向题和缺失值怎么处理、对话框每一项到底在干什么、旋转和载荷阈值怎么定、成分得分和综合得分怎么算、最后怎么把结果写进报告或者落到业务口径上。适合手里正攥着一份多题项问卷、或者一堆高度相关的指标想做降维的人不管你是刚装好SPSS的新手还是跑过几次但结果总被导师挑刺的老手都能在这儿找到能直接抄的步骤和能避开的坑。1. 先把概念掰开SPSS里并没有一个叫主成分分析的独立菜单1.1 主成分分析为什么被塞进了因子分析对话框在SPSS里你得走分析Analyze→ 降维Dimension Reduction→ 因子Factor这条路。点开之后弹出的对话框标题写的是因子分析但里面抽取Extraction选项卡下的方法下拉框第一项就是主成分Principal components。这是SPSS的一个历史遗留设计上世纪七八十年代统计软件把降维方法统一归到因子分析这个大筐里主成分分析因为数学上跟因子分析共享特征值分解这套底层运算就被一起塞了进去。这个设计带来一个非常典型的误操作很多人生成结果之后看到输出里写着提取方法主成分分析就以为自己跑对了但也有人手一抖把方法改成主轴因式分解Principal axis factoring输出照样能出来表格长得也差不多可数字全变了。所以第一件事就是确认输出窗口里那行小字——提取方法主成分分析看到这行才算数。还有一类混淆来自旋转。主成分分析的默认输出是未旋转的成分矩阵但SPSS的旋转选项卡默认勾选的是最大方差法Varimax。旋转本身不改变总方差解释率却会重新分配各成分上载荷的分布让维度更容易解读。这跟因子分析里的旋转是同一套操作所以新手很难从界面上分辨自己到底在跑哪种方法只能靠抽取方法那一栏来确认。1.2 主成分和主成分分析法名字像但不是一回事下拉框里的选项和输出里的文字措辞容易让人打转我把常见几个做个对照避免选错抽取方法选项数学本质什么时候用输出的关键特征主成分真正的PCA对原始变量做正交线性组合目标是降维、算综合得分、消除共线性初始共同度全为1提取后共同度是各成分载荷平方和主轴因式分解公因子模型只解释变量共同方差目标是找潜变量、做构念效度检验初始共同度小于1由多元相关平方估计最大似然公因子模型含显著性检验大样本、需要统计检验给出卡方检验与拟合指标因子提取Alpha以内部一致性为目标做量表维度划分时偶尔用跟Cronbach α思路一致这张表里最该记住的一点是主成分分析的初始共同度恒等于1。也就是说主成分认为每个题项的方差都能被这套成分完整解释没有独特误差这一说而公因子模型承认每个题项有一部分方差是与别人不共享的、解释不了的。这也是为什么主成分的总方差解释表里初始特征值与提取载荷平方和三列数字对保留下来的成分完全一致——这不是bug是模型定义决定的。1.3 三个问题判断你到底该用哪一种实际工作里我用三个问题做判断基本上问完就知道该选哪个。第一个问题你是要一个能排序的综合得分还是要一个理论上的潜变量结构如果是要给每个样本比如每家门店、每位受访者算一个综合实力分消费倾向分然后拿去排名、分层、做后续回归那选主成分。主成分的得分是可以精确算出来的线性组合而公因子得分是估计出来的带有不确定性。第二个问题你的题项是不是已经在成熟量表里分好维度了如果是成熟量表、你只是验证一下结构主成分也能用但更规范的做法是用主轴因子分解或者最大似然因为它承认测量误差跟结构方程模型的思路更接得上。如果量表是自己编的、还在探索阶段主成分往往更稳妥因为不需要额外的分布假设。第三个问题样本量和题项比例撑不撑得住主成分在中小样本下比公因子模型更稳定尤其是题项多、样本少的时候主轴因式分解可能出现无法收敛或者共同度大于1的非法解而主成分几乎不会翻车。这不是说主成分更高级只是它更宽容。2. 跑之前的三道关KMO、巴特利特和数据本身的质量2.1 KMO和巴特利特检验各自在告诉你什么在描述选项卡里勾上KMO和巴特利特球形度检验输出第一张表就是它。这两个指标经常被一起提但管的事完全不同。巴特利特球形度检验回答的是相关矩阵是不是单位矩阵。如果所有题项之间两两相关都接近0那相关矩阵就是个对角线上是1、其他地方是0的单位矩阵做降维毫无意义。检验显著p 0.05说明题项之间确实存在相关有降维的空间。但这个检验有个毛病样本量一大它就几乎必然显著。2000个样本两两相关只有0.05也可能算出显著所以它只能当入场券不能当质量证明。**KMOKaiser-Meyer-Olkin**回答的是这些相关里有多少是共同成分造成的有多少是两两之间独有的偏相关。KMO的算法大致是比较简单相关平方和与偏相关平方和的相对大小。直观理解就是——如果题项A和B相关主要是因为它们背后有共同的东西那偏相关就低KMO就高如果A和B相关纯粹是因为它俩关系特殊控制其他题项后相关性还在那偏相关就高KMO就低说明这一对不适合放进同一套降维里。经验阈值我按这个表来判KMO取值判定处理建议0.9以上非常适合直接跑0.8 ~ 0.9很适合直接跑0.7 ~ 0.8一般检查有没有拖后腿的题项0.6 ~ 0.7勉强先删低共同度题项再看0.5 ~ 0.6差慎重考虑改量表或换方法0.5以下不适合别硬跑结果没法解释KMO偏低时不要急着放弃先看反映像相关矩阵Anti-image Correlation那张表——对角线上的值是每个题项的MSA取样适当性度量凡是MSA低于0.5的题项就是它在拖累整体KMO删掉它重新跑一遍KMO常常能上去。2.2 反向题、缺失值、量纲这三件必须先干的脏活反向题不处理整个结果会崩。典型场景一份10题的量表里有3题是反向表述比如我从不担心这件事正向受访者在这3题上给的是低分。如果不先反向计分这3题的载荷会跑到负号那一侧跟同维度的其他题项背道而驰最后你可能会得出这个维度需要拆成两个的错误结论。操作上两种做法一是用转换 → 重新编码为不同变量把1↔5、2↔4翻过来二是用转换 → 计算变量写新变量 6 - 原变量五点量表或者 8 - 原变量七点量表。我个人更推荐第二种一行公式批量处理快而且能在语法里留痕。缺失值处理策略分两档。少量缺失单题缺失率低于5%整体缺失率低于10%时可以在因子分析对话框的选项里选成列排除Listwise或者成对排除Pairwise。成列排除是只要这个人在任何一道题上缺了整条记录都不要成对排除是算A和B的相关时只用在A和B上都有值的样本。成对排除看起来利用率高但它会导致相关矩阵不满足正定条件严重时SPSS直接报错矩阵不是正定的。我的经验是能用成列排除就用成列排除稳妥。缺失比例高的比如某个题20%的人没答先想想是不是题目本身有问题别急着插补。量纲问题决定了你该选相关矩阵还是协方差矩阵。抽取选项卡下有个分析栏默认是相关性矩阵。只要你的题项量表单位不统一比如有的是5点李克特、有的是0-100打分、有的是金额就必须用相关矩阵因为它等价于先把每个变量标准化再做PCA。只有所有变量单位完全一致、并且你希望保留方差大小的差异时才用协方差矩阵。这一点极其重要——换成协方差矩阵后方差大的变量会主导前几个成分一个以万元为单位的收入变量能把整套结果带偏。2.3 样本量和题项比例的经验底线这是个老生常谈但每年都有人问的问题。我按这几条来判样本量绝对下限200低于150做出来的结构基本没法在报告里站住脚样本量与题项数之比不低于5:1理想是10:1。20题的量表我一般希望有200个以上有效样本每个预期维度至少要有5个题项承载只有3个题项的维度在旋转之后很容易散架如果样本量确实不够宁可减少题项数量也别硬撑着跑20个题项。还有一条容易忽略用于主成分分析的样本要大致同质。把男员工和女员工混在一起跑、把线上用户和线下用户混在一起跑如果这两组在题项上的作答本来就不同那降出来的维度可能是人群差异伪装成的结构而不是真实的结构。稳妥的做法是分组各跑一次结构一致再合并。3. 从对话框到综合得分一次完整的主成分分析操作链路3.1 四张选项卡的勾选清单与每项的实际含义打开分析 → 降维 → 因子把要分析的题项全部选进变量框然后按下面这张清单逐项过一遍这张清单我几乎每次做都对照选项卡勾选项作用说明描述KMO和巴特利特球形度检验判断数据是否适合降维必勾描述初始解输出初始特征值与初始共同度便于对比描述相关性矩阵 → 系数、行列式检查相关矩阵质量行列式过小说明存在高度共线提取方法 主成分确认这是PCA提取分析 相关性矩阵有量纲差异时必选提取输出 碎石图判断维度数的重要依据提取提取 特征值大于1默认选项但只做参考旋转最大方差法让载荷更集中便于命名得分保存为变量 回归生成FAC1_1这类得分变量供后续使用得分显示因子得分系数矩阵手工计算综合得分时要用有一栏值得单独说提取里的固定因子数量。很多人一上来就把特征值大于1当铁律但实际上如果你的研究框架明确说明这是一个三维量表你应该直接填3让SPSS强制抽3个成分再看三个成分的载荷是不是跟理论维度对得上。这时候特征值大于1抽出来4个或5个反而说明有题项跨了维度需要回去查题。3.2 用语法跑比点菜单稳得多菜单点出来的操作没法复用换一份数据就得重来一遍。我现在的习惯是先在菜单里跑通再从输出窗口点粘贴把语法留下来。一份典型的主成分分析语法长这样FACTOR /VARIABLESq1 q2 q3 q4 q5 q6 q7 q8 q9 q10 /MISSINGLISTWISE /ANALYSISq1 q2 q3 q4 q5 q6 q7 q8 q9 q10 /PRINTINITIAL KMO EXTRACTION ROTATION /FORMATSORT /PLOTEIGEN /CRITERIAMINEIGEN(1) ITERATE(25) /EXTRACTIONPC /ROTATIONVARIMAX /SAVEREG(ALL) /METHODCORRELATION .几个参数值得注意/EXTRACTIONPC里的 PC 就是 Principal Components这一行决定了是主成分还是公因子/METHODCORRELATION表示用相关矩阵想改成协方差矩阵就写COVARIANCE/FORMATSORT会让成分矩阵按载荷大小排序看起来清爽很多/SAVEREG(ALL)把成分得分存成新变量。把这段语法存成.sps文件下次换数据只改变量名是一劳永逸的做法。3.3 输出表格逐张读从总方差解释到成分矩阵跑完之后输出会有一长串表格我按阅读顺序说一下每张表看什么。第一张KMO和巴特利特检验。只判断能不能继续KMO过0.7、显著性小于0.05就往下走。第二张公因子方差共同度。注意初始那一列在主成分分析下全是1.000提取那一列才是关键。提取共同度是每个题项被保留成分解释的方差比例低于0.4的题项建议考虑删除因为它跟其他题项没什么共同点。我曾经遇到一个题项提取共同度只有0.28删掉之后KMO从0.72跳到0.81整个结构瞬间清晰。第三张总方差解释。这张表信息量最大横着看有三组关键列成分初始特征值-总计初始特征值-方差%初始特征值-累积%旋转后-累积%14.6232.9832.9831.0522.1515.3648.3448.9031.349.5757.9158.20判断维度数看三处特征值大于1的有几个、累积方差解释率达到多少、碎石图的拐点在哪。社科类研究里累积解释率60%左右就够用50%出头勉强能接受低于50%要回去检查题项质量。理工科或者测量精度要求高的场景我一般要求70%以上。第四张碎石图。图上是一条从陡到缓的折线拐点通常在保留维度数的位置附近。它跟特征值大于1是两种判断口径当两者结论不一致时我倾向听碎石图加上理论框架而不是死守1.0这条线。第五张旋转后的成分矩阵。这是做维度解释的主战场。/FORMATSORT之后每列会按载荷从大到小排同一个成分上的高载荷题项会聚在一起一眼就能看出哪个题归属哪个维度。3.4 保存成分得分与综合得分的完整计算勾了保存为变量之后数据视图会多出 FAC1_1、FAC2_1 这样的列这些就是每个样本在各成分上的得分。但很多人到这一步就停了直接拿FAC1_1当综合得分用——这是最常见的一个误用第一成分毕竟只解释了30%左右的方差丢掉的信息不少。正确做法是按方差贡献率加权求和。公式是综合得分 F (λ1 / Σλ) × F1 (λ2 / Σλ) × F2 ... (λk / Σλ) × Fk其中 λ 是各保留成分的方差贡献率Σλ 是累积方差贡献率。按上面那张表的数据F (32.98/57.91) × FAC1_1 (15.36/57.91) × FAC2_1 (9.57/57.91) × FAC3_1 0.5695 × FAC1_1 0.2652 × FAC2_1 0.1653 × FAC3_1在SPSS里用一行语法就能算出来COMPUTE 综合得分 0.5695*FAC1_1 0.2652*FAC2_1 0.1653*FAC3_1 . EXECUTE .如果不想用保存的得分变量也可以用成分得分系数矩阵手工在Excel里算。那张表给出的是每个标准化变量对每个成分的系数公式是F1 c11*Z1 c12*Z2 ...其中 Z 是标准化后的题项值c 是得分系数。这条路的优点是全流程可控缺点是标准化必须自己先做对尤其是跟样本均值和标准差要对齐。4. 旋转、载荷与维度命名机器给的结果得靠人拍板4.1 正交旋转和斜交旋转到底选哪个旋转分为正交成分之间保持不相关和斜交允许成分之间相关两大类SPSS里最常用的四种旋转方法类型特点适用场景最大方差法 Varimax正交让每个题项尽量只在一个成分上高载荷最通用维度之间假设独立四次方最大值 Quartimax正交让第一个成分解释尽可能多的方差想突出一个总因子时用相等最大值 Equamax正交Varimax与Quartimax的折中较少用最优斜交 Promax斜交允许维度相关计算更快维度之间理论上相关时用选哪个的关键在于你的理论是否允许维度之间相关。像服务态度响应速度专业能力这种维度现实里肯定相关硬用Varimax假设它们不相关是把模型往错误方向掰。但现实是绝大多数论文和报告用的都是Varimax一是好解释、二是结果表看起来干净。我的建议是先跑Varimax看结构如果维度之间相关普遍在0.3以上再补一个Promax的结果做稳健性说明。这样既好写也经得起问。4.2 载荷阈值0.4、0.5还是0.6载荷就是题项与成分的相关系数绝对值越大说明这个题项跟这个成分关系越紧。阈值没有统一标准但可以按样本量来定样本量建议载荷阈值100 ~ 1500.55以上150 ~ 2000.50以上200 ~ 3000.45以上300以上0.40以上样本越大抽样误差越小载荷估计越稳定所以阈值可以放宽。反过来小样本下0.4的载荷很可能只是噪声。我个人的常用口径是0.5低于0.5的题项标记出来看它是不是需要删或者需要调整归属。除了主载荷还要看共同度。一个题项即使主载荷0.7如果共同度只有0.35说明它跟其他题项共有的信息太少也要谨慎。我一般用载荷≥0.5 且 共同度≥0.4两条同时满足。4.3 双载荷题项的三种处置方式双载荷指的是一个题项在两个成分上的载荷都超过阈值比如成分1上0.62、成分2上0.55。这种题项是最麻烦的因为它摇摆不定。我按这个顺序处理第一步看差值。如果两个载荷差在0.1以内属于严重双载荷必须处理差在0.2以上通常以高的那个为主载荷可以保留但要在报告里注明。第二步从语义上判断。很多时候双载荷不是统计问题而是题目本身写得含糊——一道题同时问了价格和质量它在两个维度上都载荷就不奇怪。这种情况删掉比留着好。第三步考虑删题重跑。每删一题就重跑一次看剩下的结构是否更干净。删题要克制一次删一到两个删多了会伤害内容效度——毕竟你原本设计的题项是有理论依据的。提醒删题记录一定要留档。哪个题在第几轮被删、删之前和删之后KMO、累积方差解释率、载荷分布怎么变的这些在答辩或者评审时几乎一定会被问到。4.4 维度命名从载荷共同点反推语义成分本身没有名字名字是你根据载荷高的题项起出来的。操作流程是把每个成分上载荷≥0.5的题项列出来读一遍它们问的是什么找一个能概括的标签。比如成分2上的三个高载荷题项是客服响应很快问题解决不超过24小时投诉后主动回访那这个维度就叫服务响应效率。命名有一条硬规矩名字必须能反向对应到题项也就是说看到这个名字你得能说出它包含哪几道题。如果起出来的名字需要解释一大堆才说得通说明这个维度本身就不成立宁可拆开或者合并。命名还容易踩的一个坑是过度抽象。把价格合理性价比高优惠力度大叫成感知价值是可以的但把它叫成消费心理建构就飘了后面做回归时根本没法解释系数。5. 结果怎么落地报告、解释与业务口径的对接5.1 报告里必须出现的表格和文字不管你是写论文还是写内部报告这几样东西缺一不可KMO与巴特利特检验表写明KMO值、近似卡方、自由度和显著性总方差解释表保留初始特征值、方差百分比、累积百分比三列并写清保留了几个成分、累积解释率多少旋转后的成分矩阵用表格呈现每个题项在每个成分上的载荷低于0.4的可以留空或标—碎石图作为判断维度数的辅助证据一段说明文字解释为什么选主成分而不是因子分析、为什么用Varimax而不是Promax、删题的依据是什么。报告里最常见的两个扣分项一是没写提取方法读者不知道你跑的是PCA还是PFA二是累积方差解释率刚过50%还写得理直气壮没有一句关于量表局限的说明。宁可老老实实写累计解释率为52.3%结构基本清晰但仍有改进空间也别装作没看见。5.2 综合得分换算成业务能看懂的口径成分得分是标准分均值0、标准差1有正有负。业务方看到-0.87分会一脸茫然。常见的处理是把它换算成百分制DESCRIPTIVES VARIABLES综合得分 /STATISTICSMEAN STDDEV MIN MAX . COMPUTE 综合百分制 100 * (综合得分 - 最小值) / (最大值 - 最小值) . EXECUTE .或者用均值标准差的口径把综合得分线性变换到0到100之间。这样门店排名、用户分层、后续的九宫格分析都能直接用。有一点要注意换算只是线性变换不改变排序所以用来排名的话其实用原始标准分就够了换算只是为了沟通方便。另外如果后续要拿综合得分去做回归或者分组比较记得把综合得分保存成一个独立的数据文件因为主成分得分是基于当前样本标准化出来的换一批新数据重新算绝对值不可比。要做跨期比较的话得用同一套成分得分系数在新数据上打分这跟用现有模型做预测是一个道理。5.3 跟信度效度分析怎么衔接分维度做还是整体做这个问题被问的频率非常高。我的做法是分两步顺序不能颠倒第一步整体跑一次主成分分析。目的看两个东西维度数是否符合理论预期题项归属是否干净。这一次是结构探索。第二步按划分好的维度分别算信度。用分析 → 度量 → 可靠性分析每个维度单独算一个Cronbachs αα至少0.70.8以上比较理想。同时看删除项后的α这一列如果删掉某题后α明显上升这题就是拖后腿的考虑删。那到底要不要分维度跑主成分分情况如果你的量表维度是已经确定的成熟量表每个维度内部再跑一次主成分看第一个成分解释率是否足够高一般要求单个维度内部第一成分解释率超过40%或者只有一个成分特征值大于1这叫单维性检验是不少期刊要求补的。如果是自编量表、结构还不确定那就整体跑一次别急着分维度因为你分维度的依据本来就是要靠整体主成分来给的。先分维度再跑等于把自己的预设当成结论。还有一个细节分维度跑的时候题项数少的维度比如只有3题KMO容易偏低甚至算不出来这是正常的不用慌这时候用特征值大于1和第一个成分解释率来判断就行。6. 用Python的PCA对一遍账顺便验证理解到不到位6.1 sklearn与SPSS在默认设置上的三处关键差异如果手边有Python用 sklearn 的 PCA 跑一遍同样的数据是检验自己有没有真正理解的好办法。但跑之前得知道两边有差异不然会以为算错了差异点SPSS默认sklearn的PCA默认是否标准化用相关矩阵等于自动标准化只做中心化不标准化变量方向载荷矩阵给出components_ 是单位特征向量需乘 sqrt(特征值) 才是载荷符号每个成分方向由算法内部决定同样不固定可能出现整体反号第一条是最容易翻车的。sklearn的PCA先用X - X.mean()中心化再用SVD分解它不除以标准差。所以如果题项量纲不一致sklearn的结果跟SPSS会差很多。要跟SPSS对齐必须自己先标准化学。6.2 一段能直接跑的对照代码import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA # 假设df里是10个题项列名q1~q10 items [fq{i} for i in range(1, 11)] X df[items].dropna() # 关键一步标准化对齐SPSS的相关矩阵口径 X_std StandardScaler().fit_transform(X) pca PCA() scores pca.fit_transform(X_std) # 特征值sklearn称explained_variance_ eigenvalues pca.explained_variance_ explained_ratio pca.explained_variance_ratio_ print(特征值, np.round(eigenvalues, 3)) print(方差解释率, np.round(explained_ratio * 100, 2)) print(累积解释率, np.round(np.cumsum(explained_ratio) * 100, 2)) # 还原成SPSS口径的载荷矩阵单位特征向量 × sqrt(特征值) loadings pca.components_.T * np.sqrt(eigenvalues) loading_df pd.DataFrame( np.round(loadings, 3), indexitems, columns[fPC{i1} for i in range(loadings.shape[1])] ) print(loading_df)跑完之后把eigenvalues跟SPSS总方差解释表的初始特征值逐行对把loading_df跟成分矩阵对。未旋转的载荷应该基本一致误差在小数点后两位以内旋转后的载荷对不上是正常的因为sklearn没有内置Varimax。想对旋转结果得额外找因子分析库或者自己实现Varimax。6.3 结果对不上时的排查顺序遇到数字不一致按这个顺序查基本上前三步就能定位有没有标准化。这是头号原因先看标准差是不是1。缺失值处理对不对。SPSS用的是成列排除还是成对排除Python这边是dropna还是填充了样本集不一致结果必然不同。是不是同一批变量。有没有把反向题在一边转了、另一边忘了转。符号问题。整体正负号反了不算错特征向量方向本来就是任意的实特征值对应的特征向量乘-1还是特征向量。看绝对值是否一致即可。旋转与否。确认自己比的是未旋转的载荷还是旋转后的载荷。能把这几步走通说明你对主成分分析的底层逻辑已经不只是会点菜单的水平了。7. 我踩过的那些坑一条条讲清楚7.1 多重插补之后主成分分析到底该怎么做数据缺失多的时候很多人会用分析 → 多重插补 → 插补缺失数据值生成若干个完整数据集然后卡在合并这一步。这里必须说清楚一件事SPSS的多重插补结果合并Pooled Results只对支持它的过程有效比如线性回归、Logistic回归、t检验、方差分析这些。主成分分析和因子分析不在支持列表里你没法让SPSS自动把5个插补数据集的分析结果合并成一份。那实际怎么做我见过三种做法做法一用第一个插补数据集做分析。简单但浪费了其他插补的信息只适合缺失极少的情况。做法二把多个插补数据集的分析结果手动取平均。分别跑5次把各次的载荷、特征值、方差解释率记录下来取平均再根据平均结果判断维度。这是比较规范的做法缺点是工作量翻几倍。做法三先把插补结果池化成一个数据集再跑。也就是对每个缺失单元格取5次插补值的平均得到一份平均数据集。这种做法在实操中很常见速度快但它低估了插补的不确定性作为探索性分析可以正式发表时要说明局限。我自己的选择缺失率低于5%直接成列排除5%到15%用做法二并且只对最终保留的结构跑稳健性检查超过15%先回头查数据采集环节而不是想办法插补。7.2 特征值大于1不是铁律机械套用会多抽维度Kaiser准则特征值1在题项数少的时候表现还行题项数超过20个之后它倾向于抽出过多的成分。原因很直观题项越多随机噪声凑出特征值大于1的机会就越大。我做过一个30题的模拟纯随机数据都能抽出2到3个特征值大于1的成分。出现这种情况的信号是抽出来的最后一个成分只有1到2个题项载荷高而且这几个题项的共同度都不高语义上还扯不到一起。这时候就该砍掉它用碎石图的拐点或者干脆按理论框架固定成分数。如果条件允许平行分析Parallel Analysis是最靠谱的判断方法把真实数据的特征值跟同样样本量、同样题项数的随机数据特征值做比较只保留真实特征值超过随机特征值的那几个成分。SPSS本身没有内置这个功能需要靠语法扩展或者外部工具但结果比Kaiser准则可靠得多。7.3 标准化和协方差矩阵混用得分完全变样这个坑我在一个项目里真切踩过。当时手上有两类指标一类是5点量表得分1到5一类是销售额几十万级别。为了保留原始方差信息我选了协方差矩阵。结果第一个成分的载荷里销售额那个变量主导了整个成分量表题项全部挤在后面的成分里。只要变量单位不同就用相关矩阵。相关矩阵等价于对每个变量做标准化所有变量站在同一起跑线上。什么时候可以用协方差矩阵当所有变量单位完全一致比如都是同一份量表的不同题目并且你确实关心方差大小的差异时。这种情况极少大部分场景老老实实用相关矩阵。7.4 成分得分的正负号和排名解释最后说个看起来很小、但经常被追问的点成分得分的正负号是相对的。一个样本的FAC1_1是-1.2不代表它差只代表它在这个成分上的取值低于样本平均值。如果载荷全是正的那得分越低说明在这组指标上越弱如果某个题项载荷是负的比如反向题忘了转那得分越高反而说明相反的情况。所以在解释得分之前先检查成分矩阵里有没有负号特别是主载荷上的负号。一旦发现有负号就要回头确认这题的计分方向。我一般会在最终报告里附一句说明得分越高表示在该维度上表现越强把方向明确下来避免读者自由发挥。另外一个细节是排名综合得分的排名可以放心用但不同批次数据算出来的绝对得分不可比因为标准化用的均值和标准差是各自样本的。要做跨批次比较必须固定一套得分系数用它给新数据打分。这个道理跟用训练好的模型做预测是一样的只不过很多人做PCA的时候忘了这一点。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →