ARTICLE DETAIL

资讯详情

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

SPSS回归分析实操全攻略:从线性回归到Logistic回归

SPSS回归分析实操全攻略:从线性回归到Logistic回归 1. 回归分析到底在干什么先想清楚再用SPSS先聊点实在的。很多人一打开SPSS就急着点菜单把数据往里一塞点两下鼠标出来一堆表格然后对着结果发呆。这个流程我见过太多次了。回归分析不是“点按钮出结果”的体力活它本质上是在回答一个问题你的因变量结果到底被哪些自变量原因影响影响有多大方向是正是负能不能用数学公式表达出来。拿我最近处理的一个实际案例来说。某个连锁门店想搞清楚“哪些因素在影响销售额”手上有门店面积、周边客流量、员工数量、促销费用这几个变量。如果只用面积去解释销售额那就是一元线性回归如果把客流、员工数、促销费一起放进去那就是多重线性回归如果卖的不是金额而是“是否完成销售目标”是/否那就得用Logistic回归了。你看同样是回归分析业务问题不同模型选择就不一样。所以在打开SPSS之前先逼自己回答三个问题第一我的因变量是什么类型——连续数值如销售额、成绩、收入还是分类变量如是否违约、是否患病、是否购买第二我的自变量有哪些它们之间有没有明显的相关性比如客流和面积可能就高度相关第三我的样本量够不够——这个很多人忽略做多重回归时样本量至少是自变量数量的10到15倍不然结果虚高。想清楚这三个问题再往下看菜单你就不会迷路。2. 一元线性回归先从最简单的模型入手2.1 什么时候用一元回归一元线性回归又叫简单线性回归英文叫Simple Linear Regression。它描述的是一个因变量Y和一个自变量X之间的线性关系数学形式是Y a bX ε。这个公式看着简单但它是整个回归分析的基石后面所有的多重回归、逐步回归、曲线拟合本质上都是在这个框架上叠加复杂度。用一元回归的场景非常明确你有一个明确的量化结果且理论上只关注一个主要驱动因素。比如“培训时长对考试成绩的影响”“施肥量对作物产量的影响”“广告曝光量对APP新增用户数的影响”。这类问题的特点是不用考虑太多干扰变量先把单因素的关系摸清楚后续再加控制变量。2.2 SPSS操作流程我以“培训时长影响考试成绩”这个案例来演示。数据很简单两列培训时长小时考试成绩分一共30条记录。第一步录入或导入数据后点击菜单栏【分析】→【回归】→【线性】英文版是Analyze → Regression → Linear。第二步在弹出的对话框里把“考试成绩”选入【因变量】框“培训时长”选入【自变量】框。注意别把两个变量放反了这是新手最容易犯的错误——放进因变量框的必须是你想解释的那个结果变量。第三步点【统计】按钮勾选【估算值】【模型拟合】默认就是勾选的、【描述性】【部分相关和偏相关性】然后点【继续】。这里我建议把【Durbin-Watson】也勾上待会用来判断残差独立性。第四步点【图形】按钮把ZRESID标准化残差选入Y轴ZPRED标准化预测值选入X轴画一个散点图。这个图是用来检查方差齐性和线性假设的很多人直接跳过其实这一步才是判断模型是否靠谱的关键。第五步点【确定】运行得到输出结果。2.3 结果怎么读输出表格很多真正要重点看的是三张表次要看的是两张图。第一张看【模型摘要】表的R方R Square。R方的含义是“因变量的变异中有多大比例能被自变量解释”。比如R方等于0.64意思是培训时长能解释考试成绩64%的变异。剩下36%是其他因素造成的。R方多大算好没有绝对标准。做教育、社会科学R方0.3就算不错做工程、物理实验R方低于0.9都可能被人质疑。所以R方要结合领域经验来看不要死记阈值。第二张看【方差分析】表中的Sig值显著性。这个Sig值对应的问题是“这个线性回归模型整体是否有效”。如果Sig小于0.05说明模型整体显著培训时长确实和考试成绩存在线性关系如果大于0.05说明哪怕R方看起来不低这个模型也没通过统计检验需要重新思考。第三张看【系数】表中“培训时长”这一行的非标准化系数B和Sig值。非标准化系数B就是公式里的b意思是培训时长每增加1个单位考试成绩平均增加B分。而Sig值如果小于0.05说明这个系数显著不等于零培训时长的效应是真实存在的。注意这三张表的Sig值逻辑是一脉相承的——模型整体显著不等于每个系数都显著但系数都不显著的模型整体一定不显著。多重回归时尤其要区分清楚。3. 多重线性回归多个变量同时上场怎么玩3.1 为什么要用多重回归实际业务里几乎没有哪个结果只被一个因素决定。考试成绩不只跟培训时长有关还跟基础水平、学习效率、睡眠质量有关。销售额不只跟门店面积有关还跟客流、商品结构、周边竞争有关。这时候一元回归就不够用了得把多个自变量同时放进模型这就是多重线性回归Multiple Linear Regression理论上又叫多元线性回归公式为Y b0 b1X1 b2X2 … bkXk ε。多重回归的数学原理其实不复杂本质就是找到一组系数b1到bk让预测值和实际值的误差平方和最小即最小二乘法。但在SPSS里点菜单不难难的是如何筛选变量、如何判断多重共线性、如何读懂偏回归系数的含义。3.2 SPSS操作流程与关键按钮还是用具体案例我想研究“员工离职倾向”受到哪些因素影响。数据有薪酬满意度1-5分、工作年限年、加班时长小时/周、上级支持度1-5分、同事关系1-5分。因变量是离职倾向1-5分分越高越倾向离职。操作步骤第一步点击【分析】→【回归】→【线性】。第二步把“离职倾向”选入因变量其余五个变量选入自变量。第三步【方法】下拉框里选【进入】Enter这意味着所有变量一次性全部纳入模型。这个选项的潜台词是我已经确定这五个变量都是业务上有意义的不需要做自动筛选。第四步点【统计】勾选【估算值】【模型拟合】【共线性诊断】【Durbin-Watson】【个案诊断】。共线性诊断是多重回归里绝对不能省的一步它会给出VIF和容忍度两个关键指标。第五步点【选项】勾选【在等式中包含常量】。SPSS默认会包含截距项不用改。第六步运行后重点看这几张表【模型摘要】重点看调整后的R方Adjusted R Square。为什么看调整后的因为R方有个天然毛病——自变量越多R方数值就越大哪怕加进去的变量根本没有实际解释力。调整后的R方会惩罚那些无效变量不会虚高。【方差分析】表看模型整体Sig值。【系数】表这里别急着看Sig先看【共线性统计】那一列的VIF值。VIF小于10是底线要求小于5才是比较理想的状态。如果某个变量的VIF超过10说明它跟模型里其他变量高度相关存在严重多重共线性。3.3 多重共线性隐蔽的模型杀手多重共线性怎么理解想象一下两个变量本质上是在测量同一个东西——比如“工作年限”和“年龄”老员工一般年龄也大。把它们都放进模型模型就会困惑到底该归功于年长还是工龄长结果就是标准误膨胀系数变得不稳定甚至出现符号方向与常识相反比如工龄的系数居然是负的意味着工龄越长离职倾向越低——这个还能解释但如果显著性不达标就麻烦了。遇到VIF偏高的变量怎么办我一般按优先级采取三种处理方式第一删掉引起共线性的冗余变量。比如工作年限和年龄业务上保留一个即可。第二如果两个变量都重要、不愿意删可以尝试用因子分析把它们合成一个综合因子再放进回归里。第三换成岭回归或偏最小二乘回归。这在SPSS的【分析】→【回归】菜单下也有选项不过一般用户用不到知道有这条路就行。提示有的教材说VIF大于10才有问题但我个人经验是VIF大于5就得警觉了尤其是样本量不大的时候VIF的膨胀效应会被放大。3.4 偏回归系数到底怎么解读系数表里每个自变量都有非标准化系数B和标准化系数Beta。这两个都是常被混淆的概念。非标准化系数B是最原始的回归系数意思是“在其他变量保持不变的情况下这个变量每变化一个单位因变量平均变化B个单位”。这是业务人员最关心的实际效应量。标准化系数Beta是把所有变量先标准化成同量纲后再算的系数用于比较不同变量之间谁对因变量的影响力更大。Beta绝对值越大相对重要性越高。举个例子。薪酬满意度的B是-0.62Sig为0.001加班时长的B是0.15Sig为0.012。虽然薪酬满意度的B看起来“更大”但它是1-5分量表加班时长是小时数跨度可能在20-80之间两者不能直接比绝对值大小。真正要比重要性得看Beta。如果Beta显示薪酬满意度是-0.48加班时长是0.22那就是薪酬满意度的影响更大。4. Logistic回归当因变量从“多少”变成“是/否”4.1 为什么不能用线性回归处理分类因变量上面说的线性回归因变量都是连续数值。但现实里的问题经常是二选一的客户买不买、患者是否复发、用户是否流失、贷款是否违约。如果你硬套线性回归会碰到三个致命问题第一预测值可能跑到0到1之外出现“负的患病概率”这种荒谬结论第二线性回归要求因变量服从正态分布的残差二分类变量只有0和1根本不可能满足第三X和Y之间的关系不再是直线而是一条S形曲线。所以处理二分类因变量得用Logistic回归。它的核心思想不是直接预测Y等于1还是0而是预测Y1的概率P并对这个概率做一个Logit变换也就是ln(P/(1-P))把它转换成一段没有上下限的连续值然后建立线性模型。4.2 二元Logistic回归的SPSS操作用个经典案例信贷经理想知道“客户的年龄、收入、负债比率、信用卡使用年限”能否预测“是否违约”1为违约0为未违约。操作步骤第一步点击【分析】→【回归】→【二元Logistic】Binary Logistic。第二步把“是否违约”选入【因变量】四个预测变量选入【协变量】SPSS把自变量叫协变量别被名字晃到。第三步点【分类】按钮如果有分类变量如性别、地区选入右侧【分类协变量】框。这里特别注意SPSS会自动给分类变量生成哑变量默认以最后一个类别为参照组。你可以在【对比】下拉框里选【指示符】Indicator参照类别选【最后一个】Last或【第一个】First。选哪个参照类取决于你想要跟谁比选错了解读会绕弯子。第四步点【选项】按钮勾选【Hosmer-Lemeshow拟合优度】【相关性的95%置信区间】【在最后一个步骤】。这里重点关注HL检验它是判断Logistic模型拟合好坏的重要指标。同时把【EXP(B)的置信区间】勾上这个就是OR值的置信区间解读时离不开它。第五步运行后先看【分类表】——它统计了模型预测正确率。比如表格显示总体预测正确率85%说明模型预测能力不错。再看【方程中的变量】表每个自变量的Sig值决定它是否显著而EXP(B)即优势比OR是核心解读指标。4.3 OR值怎么解读比“系数B”重要十倍Logistic回归输出的系数B解释起来不直观——它表示X每增加一个单位对数优势比的变化量。没有统计基础的人很难凭这个B值大多是负数还是正数判断出影响力大小。所以实际操作中大家几乎只看EXP(B)也就是OR值。OR值大于1表示这个变量每增加一个单位事件发生的概率就相对上升。比如OR1.08意思是收入每增加1万元违约发生的优势增加8%。OR值小于1表示该变量是保护因素。比如OR0.85意思是信用卡使用年限每增加1年违约的优势下降15%。OR值等于1表示该变量与事件发生无关。还要看OR的置信区间。如果95%置信区间不包含1比如上限下限都大于1或者都小于1说明这个OR值在统计上显著。注意有一种说法是OR值近似等于风险比RR但严格来说它们并不等价。只有当事件发生概率很小时通常小于10%两者才比较接近。写报告时该写OR就写OR别混用。4.4 多分类Logistic因变量不只是0和1如果因变量不是二分而是三个及以上类别比如销售渠道线下、线上、代理病情程度轻、中、重那就得用【分析】→【回归】→【多元Logistic】Multinomial Logistic。这个操作跟二元Logistic类似区别是你要在【因变量】框里指定一个“参照类别”。比如病情程度分轻中重那可以选“轻”为参照模型输出的是“中相对于轻”“重相对于轻”两套对比结果。解读时每一套结果参照的是同一套自变量但系数和OR值都不同分开展示就好。多分类Logistic的注意点是样本量要求更高每个类别最好都至少有几十个样本不然参数估计会不稳定。4.5 Cox回归别忘了时间因素热词里出现了“cox回归分析”。很多人会把Cox回归和Logistic回归混在一起但其实它们的应用场景完全不同。Logistic回归关注的是“事件是否发生”而Cox回归关注的是“事件发生的时间”——这在临床研究里特别常见比如“不同治疗方案下患者的生存时间”或者“客户从购买到流失的间隔时长”。如果你的因变量包含了时间维度比如随访时长或留存时长那就要用【分析】→【生存分析】→【Cox回归】Cox Regression而不是Logistic回归。两者选错分析结论就彻底歪了。5. 建模前的数据准备大多数人的翻车现场在这里5.1 缺失值处理不管做哪种回归SPSS遇到缺失值默认的做法是剔除有缺失的个案也就是说只要任何一个变量缺失整条记录就被排除。这条规则看似省事实则隐患很大——如果样本量本来就少剔除之后可能连最低样本量要求都凑不齐。处理缺失值我一般是按如下顺序来第一先看缺失比例。单个变量缺失超过20%的果断考虑删除该变量除非它极重要。第二缺失比例低且是连续变量用均值填充有时用中位数填充更稳尤其在数据右偏的情况下。第三如果缺失模式不明显且多个变量都有缺失可以试试SPSS的【分析】→【多重插补】功能。这个功能会生成多个填充后的数据集、分别分析再合并结果比均值填充严谨得多。热词里提到“spss多重插补合并结果”说的就是这套流程——先【分析】→【多重插补】→【分析模式】做填补再用【池化】功能合并统计结果。但注意多重插补的操作复杂度不低适合缺失模式较复杂、对分析精度要求高的场景。5.2 离群值和极端值离群值对回归的影响远比你想象的大。回归用的是最小二乘法它追求所有点的误差平方和最小——这意味着一个离群点如果横坐标比较极端它的“杠杆作用”会把回归线硬生生拽向它造成整个模型失真。处理方式分几步先在描述统计里看每个变量的最小值、最大值是否在合理范围内再画散点图或箱线图看分布发现可疑记录时先核对原始数据是否录入错误是错误就改不是错误就用【转换】→【计算变量】把极端值进行【缩尾处理】比如把超过均值3个标准差的数值替换为均值±3个标准差。5.3 数据标准化和中心化什么时候需要标准化当不同变量的量纲差异巨大时比如收入以元为单位、满意度以1-5分为单位非标准化系数B的数值大小没有可比性此时需要看标准化系数Beta或者事先用【描述统计】中的“将标准化值另存为变量”功能做标准化后再跑回归。什么时候需要中心化当模型中包含交互项比如“薪酬满意度×加班时长”时一定要先对变量做中心化处理变量减去自己的均值再构造交互项。否则交互项和主效应之间存在严重共线性结果基本没法看。这点非常隐蔽我见过不少人栽在这个坑里。6. 数据准备细节拆分文件与分维度处理的热门坑6.1 数据分拆文件热词里有“spss数据分拆文件”。这是很多人做对比分析时爱用的功能。操作路径是【数据】→【拆分文件】→选择【比较组】。比如做“男性和女性分别跑一次回归”你就可以按“性别”拆分文件之后所有的分析输出都会自动分成两组显示。用完之后记得回到【拆分文件】里改成【分析所有个案不创建组】否则后续每次分析都会被默默地拆分出结果时很容易看错。6.2 多维度题项效度分析要不要分维度做热词里还有一句很实在的问法“spss多维度题项效度分析需要分维度做吗”。针对这个问题我是这么处理的如果问卷量表本身是分维度的比如职场压力问卷分为工作负荷、角色冲突、人际关系三个维度做效度分析时先做整体KMO和Bartlett检验判断是否适合做因子分析再用主成分分析法抽取因子。如果抽取结果跟你的维度划分基本一致就不必分维度反复跑。但如果整体抽取后因子归属混乱、出现严重跨载荷说明原始维度划分可能有问题这时才需要分维度单独跑效度。分维度跑的思路是每个维度单独做KMO、Bartlett检验和因子分析确认每个维度的单维性——这能帮你确认该维度的题项是否有共同因子。一般来说分维度的KMO会偏高但这并不代表量表就好还得结合整体结构效度一起判断。7. 回归分析的完整检查清单与避坑指南7.1 分析前必查清单这里是我每次跑回归之前都会在脑子里过一遍的检查项目也分享给你因变量类型与模型选择是否匹配连续变量用线性回归二分类用二元Logistic多分类无序用多元Logistic含时间的生存数据用Cox回归。样本量是否达标多重回归至少保证10到15倍自变量数量的样本量Logistic回归每个自变量建议至少20到30个事件样本。自变量之间是否有明显相关性可以先做Pearson相关矩阵粗略观察VIF大于5的要处理。是否有严重离群值通过散点图和描述性统计检查。是否需要对分类自变量设置哑变量SPSS在Logistic回归中会自动处理但线性回归里不会自动转换。7.2 结果报告怎么写写分析报告时注意别犯“只有表格没有结论”的毛病。一份合格的回归结果报告至少要包含以下内容第一模型整体是否显著F检验Sig或模型系数的Omnibus检验SigR方多少样本量多少。第二每个变量的显著性Sig和效应量非标准化系数B或OR置信区间是多少。第三模型诊断信息共线性VIF最大值、残差独立性的Durbin-Watson值理想在1.5-2.5之间、Logistic回归要报告HL检验P值。第四业务解读把系数翻译成“每增加一个单位结果会怎样变化”而不是只丢一个数字。7.3 那些容易踩的坑第一个坑把显著性和效应量混为一谈。样本量大时一个细微到没什么业务价值的效应也会显著样本量小时一个很大的效应也可能不显著。所以Sig不是万能的务必结合B值或OR值判断实际意义。第二个坑用回归做因果推断。回归能说明的是相关关系不是因果关系。只有在正确的实验设计或严格的控制条件下回归结果才能近似解释因果。如果只是拿历史数据硬跑得到的只是“相关”报告里别用“导致”“造成”这类词。第三个坑只看R方不看残差图。R方再高如果没有检查残差里是否隐含非线性模式、方差不齐、离群点结果都可能是虚的。比如残差图呈明显的喇叭形状那就说明方差不齐可以考虑对因变量做对数变换后再回归。第四个坑模型里塞了太多无关变量。很多人怕漏掉重要变量把能想到的全塞进去结果模型过拟合、共线性严重、解释困难。要学会做减法变量筛选配合业务判断别死磕“往里加变量R方会更高”。SPSS的【逐步回归】功能可以做自动筛选但是千万别完全依赖——它的每一步都基于统计显著性但统计显著不等于业务合理。8. 写在实操之后的一些体会SPSS回归分析说难不难说简单也不简单。说它不难是因为菜单化操作把统计公式的复杂度全部封装掉了训练有素的操作员半天就能跑完所有主流回归说它不简单是因为统计软件从来不会替你思考“模型选得对不对、结果解读得对不对”。我个人的经验是每跑一次回归至少要花60%的时间在数据准备和模型诊断上真正点按钮跑分析花不了几分钟。数据质量不过关后面全白搭。另外我习惯每做一次分析就把参数设置截图保存下来以便回顾时知道当时选了哪些选项、为什么这么选。时间一长这就是最宝贵的方法论资产。如果你是想系统掌握SPSS回归分析的初学者我建议你从一元回归练起哪怕只是随便编一组数据把它跑通再逐步进阶到多重回归、Logistic回归。等到你能不看教程就把【线性】和【二元Logistic】两个对话框里的主要选项逐一解释清楚你就基本上不怵回归分析了。最后再分享一个小技巧分析结果出来之后别急着复制粘贴到报告里。先用中文把你的结论写一遍比如“薪酬满意度每提高1分离职倾向平均下降0.62分同时模型控制了加班时长和工作年限的影响”。写明白了说明你真正懂结果在说什么写不清楚回去把系数表和变量定义再复习一遍吧。
返回列表