公司动态

SPSS逻辑回归实战:从车险数据建模到风险评分卡构建

📅 2026/8/26 21:12:53
SPSS逻辑回归实战:从车险数据建模到风险评分卡构建
1. 项目背景与核心问题拆解2011年的“认证杯”数学建模竞赛现在回头看很多题目都充满了时代特色和现实意义。C题第一阶段“你的爱车入保险了吗”就是这样一个典型。它不像一些纯理论推导题那么抽象而是直接把我们拉回到十多年前那个汽车开始大规模进入家庭、车险市场方兴未艾的年代。题目本身没有提供具体的正文描述但从标题和关键词“SPSSPRO”、“数学建模”、“保险”来看这无疑是一个典型的数据驱动决策问题核心是利用统计学和建模工具分析车险相关的数据为保险公司或车主提供定价、风险评估或策略建议。现在网络上关于这道题的热搜和讨论大多集中在“SPSS怎么用”、“数学建模论文怎么写”这些工具和形式上。但我觉得真正有价值的是还原这道题背后的建模思想。它考察的绝不仅仅是SPSS软件的操作虽然那是必备技能更是如何将一个模糊的商业问题转化为一个清晰的、可量化的数学模型并用数据去验证它。这恰恰是数学建模竞赛的精髓也是很多同学在备赛时最容易忽略的——过于追求算法复杂度却对问题本身的理解和转化不到位。这道题的核心我推测是围绕车险费率厘定或理赔风险预测展开的。保险公司需要根据车辆信息、车主信息、历史出险记录等数据建立一个模型来预测未来发生理赔的概率或理赔金额从而制定公平、有竞争力的保费。对于参赛者而言你需要扮演数据分析师或精算师的角色完成从数据理解、预处理、探索性分析、模型构建到结果解释的全过程。SPSS作为一个强大的统计分析软件在其中扮演了数据清洗、描述统计、相关性分析以及逻辑回归等经典模型构建的关键工具。接下来我将抛开当年具体的赛题描述因为已缺失基于这类问题的通用分析框架结合SPSS的操作实战完整还原一道类似“车险风险评估”建模题的解题全过程。我会重点讲清楚每一步为什么这么做以及在实际操作中最容易踩的坑和技巧。无论你是为了回顾这道经典赛题还是为未来的数学建模比赛做准备希望这份“重建”的文档和思路能给你带来启发。2. 问题定义与数据准备从商业问题到数学语言拿到一个“车险”相关的题目第一步不是急着打开SPSS导入数据而是要先想清楚题目到底要我们解决什么输出是什么只有明确了目标后续的所有分析才不会跑偏。2.1 核心问题转化对于“你的爱车入保险了吗”这类题目可能的建模目标有几个方向分类问题预测一辆车/一个保单在未来一年内是否会出险是/否。这是一个二分类问题常用逻辑回归、决策树等模型。回归问题预测如果出险可能的理赔金额是多少。这是一个连续值预测问题可能用到线性回归、泊松回归针对计数型理赔次数或Gamma回归针对右偏的理赔金额。聚类问题对客户进行分群识别高风险客户群和低风险客户群用于差异化营销或服务。优化问题在给定风险预测的基础上以公司利润最大化为目标优化保费定价策略。我们假设一个最经典也最可能的情景建立一个模型预测新投保客户在未来一年内发生理赔的概率。这样我们的输出就是一个介于0到1之间的概率值。概率越高风险越高理论上保费也应越高。2.2 数据字典与理解假设我们获得了一份模拟的保险公司内部数据包含以下字段。理解每个字段的含义和类型是正确分析的前提变量名类型说明在建模中的可能角色Policy_ID字符型保单唯一标识ID变量不参与建模仅用于标识。Vehicle_Age数值型车龄年预测变量。通常车龄越老风险可能越高。Vehicle_Type字符型车型如SUV、轿车、跑车预测变量分类。需要转换为虚拟变量。Engine_Size数值型发动机排量L预测变量。可能与动力、风险相关。Owner_Age数值型车主年龄预测变量。常呈现“U型”风险年轻和年老车主风险高。Owner_Gender字符型车主性别M/F预测变量二分类。需注意使用规范。Driving_Exp数值型驾龄年预测变量。驾龄越长通常风险越低。Annual_Mileage数值型年行驶里程公里预测变量。里程越高暴露在风险中的时间越长。Credit_Score数值型车主信用评分预测变量。在很多地区信用评分与驾驶风险有相关性。Past_Claims数值型过去3年理赔次数预测变量。历史记录是最强的预测因子之一。Claim_Amount数值型历史平均理赔金额如有可能用于回归问题分类问题中可能作为衍生变量。Claim_NextYear数值型 (0/1)目标变量下一年是否理赔1是0否因变量/响应变量这是我们模型要预测的。注意在实际比赛中数据通常不会这么“干净”可能会有大量缺失值、异常值变量名也可能是英文缩写或代码。第一步必须是仔细阅读数据说明文档如果有的话。2.3 SPSS中的数据导入与初步检查打开SPSS通过文件 - 打开 - 数据导入你的数据集CSV或Excel格式。导入后切换到“变量视图”。这里有一个关键操作检查并修改变量类型和度量标准。名义变量如Vehicle_Type,Owner_Gender它们没有顺序关系只是类别。在SPSS中应设置为“名义”。有序变量如果有像“车辆安全等级低、中、高”这样的变量应设置为“有序”。度量变量如Vehicle_Age,Annual_Mileage等连续或离散的数值变量应设置为“度量”。为什么这很重要因为SPSS中很多分析功能如图表、某些建模过程会根据变量的“度量标准”提供不同的默认选项。设置错误可能导致无法进行正确的分析或得到误导性的结果。例如如果你把一个分类变量设成了“度量”SPSS可能会错误地计算它的平均值和标准差这毫无意义。实操心得导入数据后我习惯先用分析 - 描述统计 - 频率对所有变量快速跑一个频率分析。这能一次性看到每个变量的有效个案数立即发现缺失值情况。分类变量的类别分布是否均匀。连续变量的均值、标准差、最大最小值快速定位异常值比如Annual_Mileage出现一个30万公里的值显然需要核查。3. 数据预处理与探索性分析发现故事的开始数据预处理是建模成功的基础这部分工作往往耗费整个项目60%以上的时间。在SPSS中我们可以系统化地进行。3.1 缺失值处理在频率分析中如果发现某个变量比如Credit_Score缺失率很高比如超过30%就需要谨慎处理。删除如果某个观测一行数据缺失了关键变量如目标变量Claim_NextYear通常只能整行删除。如果缺失比例不高且是随机缺失删除整行也是简单有效的方法。填补对于预测变量常用的填补方法有均值/中位数/众数填补在转换 - 替换缺失值中完成。适用于缺失率不高、且变量本身分布相对对称的情况。对于偏态分布的数据用中位数比均值更稳健。SPSS Modeler或更高级的方法可以使用回归预测、多重插补等。对于竞赛而言如果时间有限向评委说明你采用了均值/中位数填补并陈述理由通常是可接受的。踩坑提醒千万不要不做任何处理就直接把带有缺失值的数据扔进模型很多算法如逻辑回归会直接剔除含有任何缺失值的整行数据行删除法这可能导致你最终用于建模的样本量大幅减少引入偏差。3.2 异常值检测与处理异常值可能是有价值的极端个案也可能是数据录入错误。需要辨别处理。可视化检测利用图形 - 旧对话框 - 箱图。为Annual_Mileage、Past_Claims等连续变量绘制箱图那些游离在“触须”通常是1.5倍四分位距之外的点就是潜在的异常值。描述统计检测查看频率表输出的“最小值”和“最大值”结合业务常识判断。例如Owner_Age出现200岁显然是错误。处理策略核查与修正如果可能回溯原始数据源修正。视为缺失值处理如果无法修正可以将其视为缺失值然后用处理缺失值的方法填补。保留但调整对于业务上合理但统计上异常的极值比如一辆年行驶10万公里的网约车可以考虑进行变量变换如取对数来减弱其影响或者使用对异常值不敏感的模型如决策树。3.3 变量分布与转换许多统计模型如线性回归、逻辑回归对自变量的分布有一定要求如正态性或者希望与因变量存在线性关系。我们需要检查并可能进行转换。正态性检验对于连续变量使用分析 - 描述统计 - 探索勾选“带检验的正态图”。查看夏皮罗-威尔克检验的显著性Sig.。如果Sig.0.05则拒绝正态性原假设。处理偏态分布如果变量严重右偏如Claim_Amount可以尝试对数转换。在SPSS中使用转换 - 计算变量输入新变量名Log_Mileage公式输入LG10(Annual_Mileage)或LN(Annual_Mileage)。转换后再次检查其分布和与目标变量的关系。3.4 探索性数据分析寻找预测线索这是与数据“对话”的阶段目的是用可视化方法初步发现变量与目标变量之间的关系。分类变量 vs. 目标变量使用分析 - 描述统计 - 交叉表。将Vehicle_Type放入行Claim_NextYear放入列。勾选“单元格”中的“行百分比”。这样你就能清晰地看到不同车型的理赔率有何差异。例如可能发现“跑车”行的理赔率为15%而“家用轿车”行只有5%。连续变量 vs. 目标变量使用图形 - 旧对话框 - 散点图或者更高效的分析 - 描述统计 - 探索。在“探索”对话框中将Annual_Mileage等连续变量放入“因变量列表”将Claim_NextYear放入“因子列表”。SPSS会为Claim_NextYear0和Claim_NextYear1两组分别绘制箱图直观对比两组在里程上的分布差异。相关性分析使用分析 - 相关 - 双变量将所有连续的预测变量和Claim_NextYear放进去计算皮尔逊相关系数。这可以初步筛选出与目标变量线性相关较强的变量。注意这里只能看连续变量且相关系数主要反映线性关系。经验之谈EDA阶段我一定会做的一件事是创建衍生变量。比如从Owner_Age和Driving_Exp可以衍生出“初次获驾年龄”Owner_Age - Driving_Exp年龄很小就拿到驾照的人可能风险更高。再比如将Annual_Mileage和Vehicle_Age结合创建“年均里程”或“总行驶里程估计”。这些基于业务理解的衍生变量常常比原始变量有更强的预测力。在SPSS中这一切都通过转换 - 计算变量来完成。4. 模型构建与解释逻辑回归实战经过充分的预处理和探索我们进入核心环节——构建预测模型。对于二分类问题二元逻辑回归是最经典、最可解释的模型之一也是SPSS非常擅长处理的。4.1 变量选择与准备不是所有准备好的变量都要一股脑儿扔进模型。我们需要选择。基于EDA和常识的初步筛选如果某个变量在交叉表或箱图中显示与目标变量毫无差异或者相关性极弱可以考虑剔除。处理分类变量虚拟变量逻辑回归要求输入都是数值。SPSS的回归 - 二元逻辑回归过程可以自动处理分类变量但我们需要理解其原理。它会将一个有k个类别的变量转化为(k-1)个取值为0或1的虚拟变量。例如Vehicle_Type有3类SUV 轿车 跑车SPSS会以其中一类比如“轿车”为参照基准创建两个新变量Is_SUV和Is_Sports。在模型中Is_SUV的系数解释就是在其它条件不变的情况下SUV相对于轿车的对数发生比Log-Odds的变化。重要设置在逻辑回归对话框中将分类变量选入“分类协变量”框中并点击“分类”按钮。通常使用“指示符”对比参照类别可以选择“第一个”或“最后一个”。选择哪个作为参照是任意的但会影响系数解释。我通常选择个案数最多、或业务上最“基础”的类别作为参照。4.2 运行逻辑回归并解读结果在分析 - 回归 - 二元逻辑回归中将Claim_NextYear选入“因变量”。将筛选后的预测变量包括连续变量和分类变量选入“协变量”。在“方法”下拉菜单中选择“输入”强制所有变量进入或“向前LR”基于似然比检验的逐步回归。对于初次建模建议先用“输入”看全模型效果再用逐步回归筛选简洁模型。点击“保存”按钮勾选“预测概率”和“预测组成员”。这会在数据集中生成两列新数据PRE_1预测为1的概率和PGR_1根据概率和默认0.5切分点预测的类别。点击“选项”按钮勾选“Exp(B)的CI”和“Hosmer-Lemeshow拟合度”。运行后我们需要关注以下几张表表1模型系数Omnibus检验这相当于整个模型的方差分析ANOVA。我们看“步骤”行的“显著性”。如果Sig. 0.05说明我们放入模型的这一组变量整体上对预测是否理赔有显著贡献。这是一个模型有效性的全局检验。表2模型摘要主要看“-2对数似然值”和两个伪R方Cox Snell R 方和 Nagelkerke R 方。-2对数似然值越小越好表示模型拟合越好。伪R方类似于线性回归中的R方但解释力不同值越大说明模型解释的变异越多但通常不会很高0.2-0.4就算不错了。表3Hosmer和Lemeshow检验这是检验模型拟合优度的。这里的假设是模型拟合得好。因此我们希望看到Sig.值大于0.05。如果Sig.0.05则拒绝原假设说明模型拟合不佳。表4分类表基于默认0.5概率切分点模型对样本的分类情况。我们可以看到总体准确率、灵敏度实际为1且预测为1的比例、特异度实际为0且预测为0的比例。注意如果数据中两类样本不平衡如90%都不理赔只看总体准确率会虚高。一个准确率90%的模型如果简单预测所有人都不理赔就能达到90%这毫无意义。因此必须结合灵敏度和特异度看。表5方程中的变量最重要这是对每个预测变量的检验和解释。B回归系数。表示该变量每增加一个单位对数发生比Log-Odds的变化量。S.E.标准误。Wals瓦尔德统计量用于检验该系数是否显著不为0。Sig.显著性。通常小于0.05认为该变量有显著预测作用。Exp(B)优势比Odds Ratio等于e^B。这是最直观的解释指标。对于连续变量Exp(B)表示该变量每增加一个单位发生理赔的“优势”Odds即P(理赔)/P(不理赔)变为原来的多少倍。例如Past_Claims的Exp(B)1.8意味着过去理赔次数每增加1次未来理赔的优势是原来的1.8倍风险增加80%。对于分类变量虚拟变量Exp(B)表示该类别相对于参照类别发生理赔的优势比。例如Is_SUV的Exp(B)1.5意味着SUV相对于参照类别轿车理赔优势是轿车的1.5倍。4.3 模型诊断与优化一次建模往往不是终点。共线性诊断虽然逻辑回归对共线性不如线性回归敏感但严重的共线性仍会影响系数估计的稳定性。可以在逻辑回归的“统计”选项中勾选“共线性诊断”。查看容差或VIF值。通常VIF10认为存在严重共线性。如果发现Vehicle_Age和Past_Claims高度相关可能需要考虑剔除一个或合并。交互项探索业务上两个变量的影响可能不是独立的。例如年轻车主(Owner_Age小)且驾龄短(Driving_Exp小)的组合风险可能特别高。我们可以在“协变量”框中同时选中这两个变量然后点击旁边的“a*b”按钮将交互项Owner_Age*Driving_Exp加入模型。如果交互项的系数显著说明存在交互效应。非线性关系如果EDA中发现某个连续变量如Owner_Age与目标变量的关系是U型的可以在模型中加入该变量的平方项如Owner_Age**2来捕捉这种非线性。实操心得在SPSS中做逐步回归向前LR时一定要谨慎。它可能得到一个统计上“简洁”的模型但有时会剔除掉一些业务上非常重要的变量。我的建议是先根据业务知识和EDA建立一个“全模型”然后手动根据系数显著性、共线性和业务意义进行变量筛选得到一个“最终模型”。在论文中可以同时展示全模型和最终模型的结果并解释你选择最终模型的理由。5. 模型评估与业务应用从统计结果到保险决策模型建好了系数也显著但这还不够。我们需要用更严谨的方法评估模型的预测能力并思考如何将其应用于实际的保险定价场景。5.1 模型性能评估超越简单准确率在SPSS中我们之前保存了预测概率PRE_1。利用这个我们可以进行更深入的评估。1. ROC曲线与AUC值ROC曲线是评估二分类模型区分能力的黄金标准。在SPSS中通过分析 - 分类 - ROC曲线进行操作。将PRE_1选为“检验变量”。将实际的Claim_NextYear选为“状态变量”并在“状态变量的值”中输入1表示我们关注“理赔”这个正类。勾选“ROC曲线”和“带对角参考线”。在“选项”中可以勾选“标准误和置信区间”以及“曲线下的面积”。解读结果ROC曲线越靠近左上角模型性能越好。对角线AUC0.5代表随机猜测。AUC值曲线下面积取值范围0.5到1。通常认为AUC0.5无区分能力。0.7 ≤ AUC 0.8有一定区分能力。0.8 ≤ AUC 0.9区分能力良好。AUC ≥ 0.9区分能力优秀。 在车险风险预测中AUC能达到0.75以上通常就算是一个有价值的模型了。2. 提升图和增益图这些图在营销和风险评分中非常有用SPSS可以通过分析 - 分类 - 倾向评分等功能结合图表来实现但需要一些数据重组。其核心思想是根据模型预测的风险概率从高到低对客户排序然后看在前X%的高风险客户中我们能捕捉到多少实际会发生理赔的客户即“命中率”。这能直观展示模型在业务中的价值。5.2 概率到分数构建风险评分卡模型输出的概率0-1之间不便于业务人员直接使用。通常我们会将其转换为一个整数分数即评分卡。确定基准点例如设定基准概率p0对应的分数为Score0通常p0取样本中的平均理赔率。确定刻度因子PDO确定分数翻倍或增减固定值所需的优势比变化。例如设定当优势比翻倍时分数增加20分。计算分数每个变量的分数基于其Exp(B)优势比来计算。对于连续变量需要先进行分箱如将Owner_Age分为[18-25], [26-35], [36-60], [60]几段计算每个箱的WOE证据权重和对应的分数。计算基础分将所有变量的分数相加再加上基础分就得到了每个客户的总风险分。分数越高风险越高。这个过程在SPSS中需要较多的手动计算和转换 - 计算变量操作或者借助SPSS的“可视分箱”工具辅助。在数学建模论文中即使不实现完整的评分卡也应该阐述这个转换思路这是模型落地应用的关键一步。5.3 业务应用模拟差异化定价策略假设我们最终模型预测客户A的理赔概率是0.15客户B是0.03。纯风险保费可以简单地设定保费与预测概率成正比。如果基础保费是3000元那么客户A的保费可能是 3000 * (0.15 / 平均概率0.05) 9000元客户B的保费是 3000 * (0.03 / 0.05) 1800元。这体现了“高风险高保费”的原则。考虑市场与监管在实际中定价还要考虑成本、竞争对手价格、客户承受能力和监管要求某些地区禁止使用性别、年龄等因子。因此模型输出是核保和定价的重要参考而非唯一决定因素。在论文中可以设计一个简单的模拟选取几个特征迥异的虚拟客户用你的模型计算其风险概率并演示如何据此给出保费建议。这能极大地提升论文的应用价值和可读性。6. 论文撰写与SPSS操作要点梳理数学建模竞赛最终交付的是论文。模型再好表达不清也徒劳。结合SPSS分析论文写作有几个关键点。6.1 论文结构建议问题重述与分析用自己语言提炼问题明确建模目标分类/回归/聚类等。模型假设列出清晰合理的假设如“数据缺失是随机的”、“变量间关系在预测期内保持稳定”这是建模的基础。符号说明表格形式列出文中用到的主要变量符号及其含义。数据预处理详细描述缺失值、异常值、变量转换的处理方法和理由。此处可附上SPSS的“频率”表、“探索”输出或箱线图作为佐证。探索性数据分析图文并茂地展示变量分布、与目标变量的关系。使用SPSS生成的交叉表、分组箱线图、相关矩阵图。模型建立阐述为什么选择逻辑回归模型。写出模型的一般形式Logit(P) ln(P/(1-P)) β0 β1X1 ... βnXn。模型求解与结果展示SPSS逻辑回归的主要输出表方程中的变量表是核心解释关键变量的系数、显著性及优势比Exp(B)的业务含义。模型检验汇报模型的Hosmer-Lemeshow检验结果、分类准确率、以及ROC曲线和AUC值配图。模型应用简要描述如何将模型用于风险评分或定价模拟展示模型的应用价值。模型评价与推广总结模型的优缺点讨论可能的改进方向如尝试其他算法、引入更多数据等。6.2 SPSS输出结果的美化与引用直接从SPSS复制的表格往往格式粗糙直接粘贴进论文会显得不专业。表格将SPSS输出表格的数据重新整理到Word或LaTeX的三线表中。只保留关键信息变量名、B、Sig.、Exp(B)及其置信区间。图形SPSS生成的图表默认样式比较简陋。双击图表进入“图表编辑器”可以修改颜色、线条粗细、字体、坐标轴标题等使其更清晰美观。然后导出为高分辨率的图片如.png或.emf格式插入论文。核心数值在正文中引用关键结果时不要写“SPSS显示Sig.0.05”而应写“模型整体显著性检验表明χ²xx, dfxx, p0.001”或者“车主年龄的回归系数为-0.05p0.003 OR0.95”显得更专业。6.3 常见误区与提升建议误区一只跑模型不解释结果。论文的重点不是“我用了逻辑回归”而是“逻辑回归的结果告诉我们驾龄每增加一年理赔风险下降约10%OR0.9”。误区二忽略假设检验。直接说“变量X重要”必须附上显著性p值作为统计证据。误区三模型评估指标单一。不能只汇报总体准确率必须结合AUC、灵敏度、特异度尤其是在样本不平衡时。提升建议对比模型如果时间允许可以尝试用SPSS的“分类树”或通过其他工具如Python跑一个随机森林模型与逻辑回归的结果进行简单对比讨论各自的优劣。深入思考在结论部分可以跳出数据讨论模型的伦理和社会影响。例如基于信用评分定价是否公平模型是否存在对某些群体的潜在歧视这能体现思考的深度。回顾2011年这道题其价值在于它完整地串联了一个数据科学项目从问题理解到模型应用的全流程。今天我们有了更强大的工具Python、机器学习库但解决问题的基本框架——定义问题、理解数据、清洗转换、探索分析、建模验证、解释应用——从未改变。掌握SPSS完成这样一套分析不仅能应对竞赛更是培养了严谨的数据思维这是在任何数据分析相关工作中都受用的核心能力。