4. 数据准备:赔付率分析所需的数据源及数据质量要求
赔付率分析的可靠性高度依赖数据基础的质量与完整性。坏样本归因分析需要从保单、理赔及外部三个维度整合数据,并满足严格的清洗与校验标准。本章将系统梳理所需数据源、核心字段及质量要求。
4.1 数据源全景
赔付率分析所需数据可归纳为三大类:保单数据(暴露基础)、理赔数据(损失核心)和外部数据(环境修正)。三者通过唯一保单号或客户ID关联,形成分析宽表。
关键原则:数据粒度必须统一到“保单-险种-责任”层级,理赔数据需按事故日期与保单生效日期对齐,避免时间错配导致的归因偏差。
4.2 保单数据:暴露基础
保单数据是计算赔付率的分母——已赚保费的来源,也是坏样本归因中风险分层的依据。核心字段包括:
| 字段类别 | 核心字段 | 用途说明 | 质量要求 |
|---|---|---|---|
| 标识字段 | 保单号、险种代码、责任代码 | 唯一标识与关联键 | 非空、无重复、格式统一 |
| 时间字段 | 起保日期、终保日期、签单日期 | 计算已赚保费、暴露数 | 日期合法、起保≤终保 |
| 保费字段 | 总保费、分险种保费、净保费 | 赔付率分母 | 数值非负、精度一致 |
| 风险因子 | 年龄、性别、车型、地区、保额 | 风险分层与归因 | 分类值在码表内、连续值无异常 |
| 业务字段 | 渠道、销售团队、核保人 | 业务维度归因 | 编码规范、可映射 |
实践提示:保单数据中“批改记录”常被忽略。批改导致的保费增减、期限变更会直接影响已赚保费计算,必须纳入数据准备范围。建议保留批改流水号,以便追溯。
4.3 理赔数据:损失核心
理赔数据是赔付率的分子——已发生损失的直接来源。坏样本归因需要区分已决赔款、未决赔款准备金及理赔费用。
| 数据子集 | 关键字段 | 归因分析用途 |
|---|---|---|
| 立案信息 | 立案号、事故日期、报案日期、出险原因 | 识别事故时间分布与原因归因 |
| 损失明细 | 已决赔款、未决赔款、理赔费用、残值 | 计算最终损失金额 |
| 结案报告 | 结案日期、结案金额、赔付类型 | 确认最终赔付成本 |
| 追偿记录 | 追偿金额、追偿日期 | 净损失调整 |
常见数据陷阱:
- 未决赔款估计偏差:不同理赔员对未决赔款的估计差异较大,建议使用链梯法或B-F法进行一致性调整后再纳入赔付率计算。
- 理赔费用归属不清:直接理赔费用(如查勘费)与间接理赔费用(如管理费)应分开记录,避免混入损失金额导致赔付率虚高。
- 重复赔案:同一事故多次立案时,需通过事故ID去重,否则会重复计算损失。
4.4 外部数据:环境修正
外部数据用于剥离宏观环境、行业趋势和区域差异对赔付率的影响,使坏样本归因聚焦于保险公司自身经营因素。
| 外部数据类别 | 典型指标 | 对赔付率的影响机制 |
|---|---|---|
| 宏观经济 | GDP增速、CPI、利率 | 影响出险频率(经济活跃度)和赔案金额(医疗/维修成本) |
| 行业指数 | 行业赔付率均值、行业案均赔款 | 作为基准对比,识别公司异常偏离 |
| 地理风险 | 区域灾害指数、交通事故率 | 修正区域间自然风险差异 |
| 法律环境 | 人伤赔偿标准、诉讼率 | 影响责任险赔付水平 |
| 信用/欺诈 | 客户信用评分、欺诈概率评分 | 识别道德风险导致的异常赔付 |
4.5 数据质量要求
数据质量是赔付率分析的生命线。以下为必须满足的六项质量维度及检查方法:
- 完整性:关键字段(保单号、事故日期、损失金额)缺失率 < 1%。缺失值需明确标记并评估影响。
- 准确性:数值字段在合理范围内(如保费 > 0,损失金额 < 保额)。异常值需通过箱线图或Z-score识别并核查。
- 一致性:同一字段在不同数据源中定义一致(如“事故日期”在保单和理赔系统中格式相同)。
- 时效性:数据截止日期与分析基准日一致。理赔数据需包含足够长的发展期(至少12-24个月)。
- 唯一性:保单号+险种代码+事故日期组合无重复。重复记录需去重或合并。
- 关联性:保单与理赔通过外键可关联,关联成功率 > 95%。未关联记录需单独分析原因。
数据质量检查脚本示例(Python伪代码):
# 数据质量检查框架
def data_quality_check(df_policy, df_claim, df_external):
# 1. 完整性检查
missing_rate = df_policy['premium'].isnull().mean()
assert missing_rate < 0.01, f"保费缺失率 {missing_rate:.2%} 超过阈值"
# 2. 准确性检查
assert (df_policy['premium'] > 0).all(), "存在非正保费"
assert (df_claim['loss_amount'] <= df_policy['sum_insured']).all(), "损失超过保额"
# 3. 关联性检查
merged = df_policy.merge(df_claim, on='policy_id', how='left')
match_rate = merged['claim_id'].notnull().mean()
assert match_rate > 0.95, f"理赔关联率 {match_rate:.2%} 不足95%"
# 4. 时间一致性
assert (df_claim['accident_date'] >= df_policy['effective_date']).all(), "事故日期早于起保日期"
print("数据质量检查通过")
return merged
4.6 数据准备流程
从原始数据到分析宽表,需经过以下标准化流程:
4.7 数据准备清单
以下为数据准备阶段的最终交付物检查清单,建议在进入建模前逐项确认:
| 检查项 | 验收标准 | 状态 |
|---|---|---|
| 保单数据完整性 | 关键字段缺失率 < 1% | □ 通过 □ 需整改 |
| 理赔数据时效性 | 包含至少24个月发展期 | □ 通过 □ 需整改 |
| 外部数据对齐 | 时间粒度与保单/理赔一致 | □ 通过 □ 需整改 |
| 关联成功率 | 保单-理赔关联率 > 95% | □ 通过 □ 需整改 |
| 异常值处理 | 已标记并记录处理逻辑 | □ 通过 □ 需整改 |
| 数据字典 | 字段定义、类型、取值范围完整 | □ 通过 □ 需整改 |
最佳实践:建议在数据准备阶段建立数据血缘追踪,记录每个字段的来源系统、转换规则和版本号。当赔付率分析发现异常归因时,可快速回溯到原始数据层进行验证。