SPSS主成分分析实战:经济指标综合得分排名全流程
简介主成分分析在经济指标综合评价中应用广泛这份大作业正是围绕这一方法完成的一份完整分析报告面向高校数理统计或多元统计课程学生也适合SPSS入门者作为降维分析的操作范本。报告以2019年我国15个省市的经济发展状况为样本选取GDP、人均GDP、农林牧渔总产值、规模以上企业总资产、第三产业增加值、失业人员、固定投资增长率、社会消费品零售总额和地方财政收入九项指标系统呈现了数据标准化处理、变量相关性检验、KMO与巴特利球形度检验、总方差解释、主成分贡献率计算以及各样本主成分得分与综合评价的完整流程。压缩包内共1个doc文档约821KB包含研究背景、方法原理、SPSS操作步骤截图、输出结果分析及结论读者可对照操作界面逐步骤复现。该资源已有2017人学习其九项经济指标的选取思路和主成分分析步骤的完整性对完成同类课程大作业或撰写经济类综合评价报告具有直接参考价值。1. 需求先立住九项经济指标混在一起怎么比才算科学拿到数理统计的 SPSS 大作业课题第一步不是打开软件而是先想清楚一个问题9 个经济指标放一起怎么比GDP 高的地区人均收入不一定高财政收入多的地区居民消费不一定强农林牧渔总产值和第三产业增加值反映的又是完全不同的经济侧面。直接把九列数据拉成排序表谁先谁后根本说不清。主成分分析的价值就在这儿它把相关性强、信息重叠的多个指标压缩成少数几个互不相关的新变量再用方差贡献率加权出一个综合得分。这篇方案以“部分省市的经济指标评价”为例完整还原从数据标准化、降维分析、主成分提取到综合得分排名的 SPSS 操作全流程。适合正在做数理统计大作业、课程设计或者想用 SPSS 做多指标综合评价的读者直接参考把方法换一批数据就能复用。2. 总体分析流程设计从九项经济指标到两个主成分的 SPSS 落法拿到一份大作业最容易犯的错是一上来就点【分析】→【降维】把所有变量丢进去跑一遍然后对着输出结果发呆。主成分分析虽然叫“降维”但它的前提是数据已经做好了标准化而且你得知道自己每一步在检验什么。这一章把流程拆成四步先看清指标口径再做标准化再配置因子分析对话框最后用语法把操作固化下来。2.1 指标口径与数据结构九个变量分别代表什么这次分析的数据来自统计年鉴抽样了 15 个省市自治区时间点是 2019 年。每个地区记录 9 个指标这 9 个指标的属性差别很大有的是总量规模有的是人均水平有的是增长速率还有一个是就业压力指标。做分析之前最好先把字段整理成一张口径表答辩时导师问起来也能直接答字段缩写原始指标指标性质GDP地区生产总值经济规模总量PGDP人均GDP人均产出水平AGR农林牧渔总产值第一产业规模ASSET规模以上企业总资产企业资本实力SERVICE第三产业增加值服务业发展水平UNEMP失业人员反向指标数值越高就业压力越大INVEST固定投资较上年增长情况投资增长动力RETAIL社会消费品零售总额消费市场规模REVENUE地方财政收入政府可用财力注意 UNEMP 这一项和其余八个指标方向相反。主成分分析本身不做正向化处理也能跑但后面解读成分载荷时UNEMP 的系数方向会和“经济发展好”的直觉相反这是正常的别在报告里写成指标选错。2.2 标准化处理为什么必须先生成 Z 值如果直接把 GDP 和固定投资增长率放进同一个相关系数矩阵GDP 动辄几万亿投资增长率是个百分数两者数值量级差出好几个数量级。SPSS 计算相关系数时虽然会对量纲做归一但主成分得分计算用的是标准化后的变量而且描述统计阶段不标准化你后续得到的成分矩阵和系数权重都会被量纲带着跑。标准化的公式很简单Z (X − 均值) / 标准差。标准化之后每个变量的均值为 0标准差为 1变量之间才真正处在同一个比较尺度上。在 SPSS 里的操作路径是【分析】→【描述统计】→【描述】把所有九个指标选入右侧变量框然后勾选左下角“将标准化得分另存为变量Z”。点击确定后数据视图里会多出九列变量名以 Z 开头的新字段。这一步输出的描述统计表里还有一个容易被忽略的细节人均 GDP 的标准差明显比其他变量大说明这 15 个省市在人均产出上的差距比总量指标更悬殊这是后面解读第二主成分时的伏笔。2.3 因子分析主链路四个对话框的参数怎么配标准化完成后进入主流程【分析】→【降维】→【因子分析】。把九个 Z 开头的变量选入变量框然后依次配置四个子对话框。描述对话框里统计栏勾“初始解”相关性矩阵栏勾“系数”和“KMO 和巴特利球形度检验”。相关系数矩阵用来观察变量间是否存在两两相关性KMO 和巴特利球形度检验用来判断数据适不适合做主成分分析。提取对话框里方法选“主成分”分析选“相关性矩阵”输出勾“未旋转因子解”和“碎石图”提取依据选“基于特征值”系统默认特征值大于 1。旋转对话框里方法选“最大方差法”输出勾“旋转后的解”也可以先选“无”等看到未旋转的载荷矩阵再决定要不要转。得分对话框里勾“显示因子得分系数矩阵”后面计算权重时会用到。选项对话框里缺失值选“成列排除个案”系数显示格式选“按大小排序”。这里要说明“旋转”的作用。主成分分析本身不强制旋转旋转是因子分析里用来调整载荷矩阵的手段。当未旋转的载荷分布不够清晰——比如好几个变量在两个成分上都有 0.5 左右的载荷说不清到底归谁时用最大方差法旋转能让大载荷更大、小载荷更小变量归属一眼就能看出来。我一般会先跑一遍不旋转的如果成分矩阵能明确分组就不旋转分组模糊再去点旋转省得答辩时被问“为什么旋转后主成分变了”。2.4 用 SPSS 语法批量跑完整个流程菜单点击适合教学演示但大作业里要反复调整参数时每次都从头点一遍对话框非常浪费时间。SPSS 支持语法窗口把下面这段粘贴进去就能一次性完成标准化的保存和主成分分析的全套输出* 第一步标准化生成 Z 开头的新变量. DESCRIPTIVES VARIABLESGDP PGDP AGR ASSET SERVICE UNEMP INVEST RETAIL REVENUE /SAVE /STATISTICSMEAN STDDEV MIN MAX. * 第二步主成分分析主成分法提取特征值大于1. FACTOR /VARIABLESZGDP ZPGDP ZAGR ZASSET ZSERVICE ZUNEMP ZINVEST ZRETAIL ZREVENUE /MISSING LISTWISE /PRINT INITIAL CORRELATION KMO EXTRACTION ROTATION /PLOT EIGEN /CRITERIA MINEIGEN(1) ITERATE(25) /EXTRACTION PC /ROTATION NONE /METHODCORRELATION.运行前注意数据集的变量名需要和语法里的字段名保持一致。如果原始数据列名是中文建议先在变量视图里改成英文缩写比如 GDP、PGDP、AGR 这种中文变量名在某些 SPSS 版本里会导致语法无法正确识别。这段语法里值得留意的三个参数/SAVE 让 SPSS 把标准化结果直接存成新变量省去手动另存的步骤MINEIGEN(1) 对应对话框里“基于特征值大于 1”的提取条件/EXTRACTION PC 表示用主成分法提取而不是最大似然法或主轴法。如果之后需要旋转把 /ROTATION NONE 改成 /ROTATION VARIMAX 即可其余输出不变。用语法跑数据的最大好处是换一批年份数据或者换几个指标重做时不用再一项项点对话框改一下变量列表就能整体重跑这在大作业改稿阶段特别省事。3. 关键检验与主成分提取KMO、特征值与碎石图怎么读SPSS 跑完后输出的表格有一大堆不是每张都要写进报告但核心的几张必须读懂。这一章按“判断能不能做 → 决定取几个 → 解释每个主成分”的顺序把输出结果逐个拆开讲。3.1 相关性矩阵先确认变量不是各说各话主成分分析的底层逻辑是“用少数综合变量替代多数相关变量”如果指标之间完全独立主成分分析就失去了意义。SPSS 输出的相关系数矩阵是第一步判断依据。从结果看GDP、社会消费品零售总额、第三产业增加值、规模以上企业总资产、地方财政收入这几个变量之间的相关系数大多在 0.8 以上说明它们信息高度重叠存在明显的共线性这正好是主成分分析最擅长的场景。在看这个矩阵时有一个常见误区相关系数高是好事但高到接近 1 也要警惕。比如 GDP 和地方财政收入的相关系数如果达到 0.95 以上说明这两个指标几乎在传递同一个信息可以考虑是否合并或删除其中一个。大作业里一般不删但报告讨论部分可以提一句“部分指标信息冗余主成分分析有效提取了共同信息”显得你确实理解了这个矩阵的作用。3.2 KMO 与巴特利球形度检验两个数字决定能不能做相关矩阵只能做定性判断KMO 和巴特利球形度检验给出了量化依据。KMO 统计量衡量的是变量间的偏相关性取值在 0 到 1 之间越接近 1 说明变量间的共同因素越多越适合做因子分析。常用的判断标准可以记成一张表KMO 值适合程度0.9 以上极适合0.8 ~ 0.9很适合0.7 ~ 0.8适合0.5 ~ 0.7勉强适合0.5 以下不适合巴特利球形度检验看的是 P 值P 小于 0.05 说明相关系数矩阵不是单位矩阵变量之间存在显著相关可以继续做主成分分析。本例的输出中KMO 落在适合做因子分析的范围巴特利球形度检验的 P 值小于 0.05两个条件同时满足数据可以进入下一步。如果 KMO 不达标怎么办这属于第 5 章要展开的避坑内容这里先记住一句KMO 低通常不是数据本身的问题而是变量选得有问题比如把两个几乎一模一样的指标都放了进去。3.3 总方差解释与碎石图特征值大于 1 还是累计贡献率 85%总方差解释表是决定主成分个数的核心依据。表中第一列是 9 个成分编号第二列是特征值第三列是单个主成分的方差百分比第四列是累计百分比。SPSS 默认按特征值大于 1 提取本例中成分 1 和成分 2 的特征值大于 1两个主成分的累计方差贡献率是 84.494%其中第一主成分占 58.97%第二主成分占 25.524%。输出结果可以整理成下面这种简洁格式报告里直接可用主成分特征值方差百分比累计方差百分比第 1 主成分 158.97%58.97%第 2 主成分 125.524%84.494%84.494% 这个数字略低于通常说的 85% 门槛但结合碎石图看成分 3 之后的特征值已经明显进入平缓段再往下提取的信息增量很小。实际操作里累计贡献率达到 80% 以上且碎石图出现明显拐点就可以接受。报告里建议两个依据都写一是特征值大于 1二是碎石图在第三个成分处进入平台第一条是统计默认规则第二条是图形佐证这样答辩时不会被“为什么没到 85%”问住。碎石图的读法很简单纵轴是特征值横轴是成分编号。前面陡峭下降的部分对应特征值大、信息量大的成分后面平坦的部分特征值小、信息量小。本例中成分 1 和 2 落在陡峭段成分 3 开始进入平台说明取两个主成分是合理的丢掉后面七个成分损失的信息可以接受。3.4 成分矩阵的载荷解读每个主成分到底代表了什么成分矩阵给出的是每个原始指标在两个主成分上的载荷载荷的绝对值越大说明该指标与这个主成分的关系越紧密。本例中第一主成分上载荷较高的指标有 GDP、社会消费品零售总额、第三产业增加值、规模以上企业总资产、地方财政收入、固定投资较上年增长情况这些指标共同指向经济规模与总量实力所以可以把第一主成分命名为“经济总量因子”。第二主成分上载荷较高的指标是人均 GDP、失业人员和农林牧渔总产值组合起来反映的是人均产出、就业压力与第一产业结构的特殊性可以理解为“人均与结构因子”。这两组指标基本覆盖了全部九个原始变量的信息前两个主成分能代表整体第三个及之后的成分包含的信息较少可以舍去。写报告时把成分矩阵里每个指标的载荷值列成表并在表格下方用一句话概括命名依据比如“第一主成分反映规模类指标第二主成分反映人均与结构类指标”这一章的内容就完整了。4. 权值计算与综合得分成分矩阵如何变成可排序的排名到这一步你已经得到了主成分也有了每个地区在两个主成分上的表现但大作业最终要交的是一个能排序的综合排名。把主成分得分加权合并中间还差一步权值计算。这个环节是整份作业里最容易算错的地方很多同学直接拿成分矩阵当权重用最后算出来的排名自己都解释不通。4.1 主成分系数用成分矩阵除以特征值的平方根成分矩阵里的数字是载荷不是系数。载荷反映的是原始变量与主成分的相关系数而计算主成分得分时需要的是每个原始变量在主成分线性组合中的权重系数两者之间的换算关系是系数 载荷 / 对应特征值的平方根。操作方法分三步。第一步把成分矩阵的输出结果复制粘贴到一张新的 SPSS 数据表里定义两个变量 V1 和 V2分别存放第一、第二主成分的载荷。第二步新建变量 a1 和 a2用【转换】→【计算变量】输入公式a1 V1 / SQRT(特征值1)a2 V2 / SQRT(特征值2)。第三步核对结果每个主成分下所有指标的系数平方和应该等于 1这是主成分的数学性质可以用来验证计算有没有出错。用表格表示计算结构就是原始指标第一主成分载荷 V1系数 a1 V1 / SQRT(λ1)GDP0.912以实际输出为准0.367人均GDP0.4180.168………………表格里的具体数值以你自己的 SPSS 输出为准关键是理解这个计算逻辑载荷除以特征值开根号之后系数才真正反映原始变量对主成分的贡献权重之后计算 F1 和 F2 用到的都是系数 a1、a2而不是直接拿 V1、V2。4.2 计算 F1 和 F2标准化变量与系数相乘之后求和主成分得分的定义是原始标准化变量与对应系数的线性组合。用 SPSS 的【转换】→【计算变量】在目标变量里输入 F1表达式写a1_1 * ZGDP a1_2 * ZPGDP ... a1_9 * ZREVENUE也就是把 4.1 里算出的第一主成分的九个系数分别乘以九个标准化变量。F2 同理用第二主成分的九个系数去乘同一组标准化变量。算完 F1 和 F2 之后每个地区都有了两个得分。这里要特别提醒主成分得分的均值是 0所以得分有正有负非常正常。某个地区 F1 得分为负代表它的经济总量水平低于这 15 个省市的平均水平不是经济倒退报告里不要写“某省经济为负”这种话。4.3 综合得分 F按方差贡献率加权合并有了 F1 和 F2综合得分就是两者的加权平均权重用各自方差贡献率占累计贡献率的比例。本例中第一主成分方差百分比是 58.97第二主成分是 25.524累计为 84.494所以综合得分公式为 F (58.97 × F1 25.524 × F2) / 84.494。在 SPSS 的计算变量对话框里直接输入这个公式注意分母是 84.494不是 100因为权重需要归一化到两个被保留的主成分内部。得到 F 值后按 F 从大到小排序就是这 15 个省市的经济发展综合排名。我见过有同学图省事把公式写成 F F1 F2理由是“两个主成分加一起就是综合”这相当于默认两个主成分权重相同但第二主成分只解释了 25.524% 的方差和第一主成分的 58.97% 差了一倍多不加权会让排名严重偏向规模因子结论就失真了。4.4 排名结果与解读综合得分怎么和原始指标对应按综合得分排序后排名靠前的省份集中在经济总量指标和人均指标都比较高的地区第一主成分得分明显领先排名靠后的地区往往第一主成分和第二主成分得分都偏低个别甚至两项都为负。排名最末的地区它的第一主成分得分和第二主成分得分都拖累了综合值说明它在规模因子和人均结构因子上都处于样本低位。解读排名时不要只念一遍名次要回到主成分含义上去解释。比如得分最高的地区它的 GDP、社会消费品零售总额、第三产业增加值这些规模指标全面领先所以第一主成分得分拉开了差距而某些地区虽然总量不占优但人均 GDP 指标突出第二主成分得分较高综合排名因此有所提升。这就是主成分分析和直接排序的本质区别直接排序只能看单项主成分分析把九个指标的信息按方差贡献率折算进了一个综合分排名背后的经济解释是清楚的。5. 常见问题排查标准化、KMO 不达标与载荷方向异常的四个典型翻车点主成分分析这个方法的框架本身不复杂但每届大作业里翻车的场景翻来覆去就那么几个有人忘了标准化就进了因子分析有人 KMO 输出 0.4 还在硬着头皮往下做有人综合得分全是负数不敢写进报告。这一章把最常见的几个问题按“现象 → 原因 → 解决”拆开做的时候对照排查。5.1 忘标准化就进因子分析载荷被量纲带偏现象直接拿原始数据的九个变量跑因子分析结果第一主成分的载荷几乎全被 GDP 和地方财政收入两个大数量级变量占据其他指标载荷都在 0.3 以下第二主成分根本解释不清楚。原因SPSS 的因子分析在计算相关性矩阵时本质上已经做了归一化但输出的成分矩阵和后续的得分系数矩阵仍会受到变量方差大小的影响。GDP 的数值动辄以万亿计固定投资增长率是个位数百分数两者的方差不在一个量级不标准化会让大方差变量在提取主成分时占据主导地位相当于偷偷给 GDP 加了权重。解决跑因子分析之前先用【分析】→【描述统计】→【描述】勾选“将标准化得分另存为变量”确认数据视图里生成了 Z 开头的新变量再把这些 Z 变量放进因子分析对话框。标准化之后所有变量方差都为 1谁也不能靠量级抢权重。检查方法很简单看描述统计表里标准化变量的均值是不是接近 0、标准差是不是接近 1。5.2 KMO 低于 0.5先回头整理变量结构现象KMO 输出值在 0.5 以下巴特利球形度检验的 P 值大于 0.05分析无法继续。原因KMO 考察的是变量间的偏相关性偏相关性弱说明变量之间缺乏共性。最常见的情形是变量选得太杂比如同时放入了“固定投资增长率”和“GDP 增速”这两个高度同步的指标或者放入了一些本来就不该放进同一套体系里的指标导致相关性矩阵里既有强相关又有大量不相关整体 KMO 被拉低。解决不要换一种因子提取法硬试那是玄学。回到变量层先看相关系数矩阵找到与大多数变量相关系数都低于 0.3 的指标考虑剔除或替换。比如本例中如果发现失业人员指标与 GDP、消费、财政收入的相关系数都很低说明它和其他变量不是一个维度可以把它单独拿出来做描述性分析不放进主成分分析。剔掉干扰变量后 KMO 通常会明显回升。如果 KMO 在 0.5 到 0.7 之间勉强可用报告里要诚实地写明“数据尚可作因子分析”不要编一个 0.8 以上的数字。5.3 成分矩阵里某个载荷方向和常识相反现象第二主成分在失业人员上的载荷是正的在人均 GDP 上也是正的看起来像是“失业率越高、人均 GDP 越高”的荒谬组合。或者某个指标在第一主成分上的载荷是负数让人不敢写进报告。原因主成分本身没有正负方向的定义SPSS 在计算特征向量时方向是任意的。同一次分析里所有指标在某个主成分上的符号同时翻转或者某个反向指标如失业人员的载荷符号与其他规模指标相反都是正常的数学结果不代表经济含义错了。解决报告里如实写出载荷值和符号在解读时用“失业人员这一指标的方向与其他指标相反反映就业压力与经济发展水平的反向关系”说明。对于符号整体翻转的情况可以把该主成分的所有载荷都取反前提是报告中说明这一处理。不要为了符号好看去删除指标那是数据造假的前兆。我一般会在报告里注明“载荷符号仅代表方向不参与权重级的解释”。5.4 综合得分算出负值别急着怀疑公式现象综合得分 F 排序时一半地区的 F 是负数排名靠后的几个地区得分为负看起来像算出错了。原因主成分得分是以 0 为中心的标准化得分每个主成分的均值近似为 0。综合得分 F 是 F1 和 F2 的加权平均均值也接近 0所以负值是正常的它表示该地区综合水平低于样本平均值。解决报告正文直接写明“综合得分为负表示低于所选省市平均水平不代表经济负增长”。如果想避免答辩时被反复追问可以把 F 值做百分制转换用 F 的极差线性映射到 0 到 100例如转换后得分 (F − F_min) / (F_max − F_min) × 100这样排名不变但表格更直观答辩时也能少解释一轮。5.5 旋转了矩阵但主成分得分算出来和没旋转对不上现象先跑了不旋转的主成分分析计算了 F1 和 F2后来觉得载荷分布不清晰重新点了最大方差法旋转再按旋转后的载荷去算系数得到的排名和前一份结果差异很大。原因旋转改变了载荷矩阵主成分的结构发生了重组得分系数自然随之变化。旋转不是微调而是重新分配信息所以两次结果不一致是正常现象。问题出在流程混乱没有在开始时就决定是否旋转。解决先默认不旋转跑完看成分矩阵。如果每个主成分的高载荷指标分组清晰比如本例中规模类指标集中在一个成分、人均类集中在另一个成分就不旋转直接按未旋转的载荷计算得分和综合排名。分组不清晰时再决定旋转但旋转之后所有后续计算——包括系数、F1、F2、综合得分——必须全部基于旋转后的输出重新算一遍。最忌的是旋转前后各算一半拼出来的结果连自己都解释不了。这里有句话可以记着旋转是后悔药吃了就要吃完整疗程不能只吃半粒。6. 验收与答辩从图表规范到结果解读的八个检查点大作业不是跑出结果就结束了能不能拿到高分很大程度取决于报告呈现和答辩表现。最后一章给一份可以直接对照的验收清单再加三个答辩高频问题的应对思路。6.1 验收清单拿这张表对着作业自查检查项验收标准常见扣分点数据来源写明统计年鉴年份和数据获取方式只写“网上找的”标准化操作报告中有标准化公式且数据视图含 Z 变量跳过标准化直接分析KMO 与巴特利检验两个指标都有具体数值和文字判断只贴图不解释总方差解释列出特征值和累计贡献率说明选 2 个主成分的依据只提累计贡献率不提特征值碎石图说明第 3 个成分后进入平台贴图后不加一句话描述成分矩阵有载荷表并命名两个主成分只贴 SPSS 原始输出权值计算写出系数换算公式 载荷/SQRT(特征值)直接拿载荷当权重综合排名有 F 值公式和排序表附文字解读只有排名没有分析6.2 答辩之前把三个问题背熟第一个问题“为什么提取两个主成分而不是三个”回答要点是特征值大于 1 的只有前两个而且碎石图从第三个成分开始进入平台两个主成分累计解释了 84.494% 的方差结合这两个条件取两个主成分既符合统计默认规则又不损失太多信息。第二个问题“综合得分公式里的权重为什么是 58.97 和 25.524”回答要点是这是方差贡献率58.97 是第一主成分解释的方差比例25.524 是第二主成分解释的方差比例两者相加是累计贡献率 84.494%。综合得分按每个主成分携带的信息量加权哪个主成分解释的信息多它在综合分里的话语权就大。第三个问题“第一主成分、第二主成分和你原来的九个指标有什么本质区别”回答要点是九个指标之间存在高度相关性信息重叠直接比较会重复计算主成分把重叠信息提取成两个互不相关的综合变量第一主成分代表经济规模与总量第二主成分代表人均与结构特征用两个变量替代九个变量损失的信息只有 15.506%。从那以后我每次做多指标评价类的统计分析都会强制自己在动手点菜单之前先写完“数据来源 → 指标口径 → 标准化方法 → 提取标准”这一段再碰数据。过程看起来多花了几分钟但整套分析的逻辑就立住了后面的每一步都是顺着这个框架走不会跑着跑着不知道自己在算什么。希望这份方案的流程和避坑点对你这次大作业有用直接照着搭就能省下不少返工的时间。本文还有配套的精品资源点击获取