4. 描述性统计分析:赔付率的均值、中位数、标准差、分位数分布

描述性统计是异常检测的第一步,旨在通过数值指标和图形直观了解赔付率的集中趋势、离散程度与分布形态。本节将基于某非寿险公司2023年1月至2024年6月的月度赔付率数据(共18个观测值),计算核心统计量并绘制分布图,为后续异常点识别奠定基础。

4.1 核心统计量计算

赔付率(Loss Ratio)定义为已发生赔款与已赚保费的比值,是衡量承保盈利能力的核心指标。下表汇总了样本期间的关键统计量:

统计量 符号 数值 业务含义
均值 μ 68.42% 平均赔付水平,反映整体承保成本
中位数 M 65.17% 居中赔付水平,不受极端值影响
标准差 σ 12.35% 赔付率波动幅度,衡量风险稳定性
最小值 Min 48.20% 最低赔付月份
最大值 Max 95.60% 最高赔付月份
极差 R 47.40% 赔付率最大跨度
关键发现:均值(68.42%)高于中位数(65.17%),表明数据呈右偏分布——存在少数高赔付月份将均值向右拉动。标准差12.35%相对较大,提示赔付率存在明显波动,需进一步分析异常月份。

4.2 分位数分布与箱线图分析

分位数能够更细致地刻画赔付率的分布结构。下表展示了主要分位点:

分位点 5% 25% 50%(中位数) 75% 95%
赔付率 50.15% 58.30% 65.17% 76.80% 91.45%
  • 四分位距(IQR) = 76.80% - 58.30% = 18.50%,代表中间50%数据的波动范围。
  • 偏度判断:上尾(75%→95%跨度14.65%)明显长于下尾(5%→25%跨度8.15%),进一步确认右偏。
  • 潜在异常阈值:按Tukey规则,上界 = Q3 + 1.5×IQR = 76.80% + 27.75% = 104.55%;下界 = Q1 - 1.5×IQR = 58.30% - 27.75% = 30.55%。样本最大值95.60%未超过上界,但已接近边缘。
赔付率箱线图与分位数分布(2023.01–2024.06) 30% 50% 70% 90% 110% Min=48.2% Q1=58.3% M=65.2% Q3=76.8% Max=95.6% 均值=68.4% 箱体代表中间50%数据,红色中位线偏左,橙色均值偏右,呈右偏分布

4.3 分布形态初步判断

综合均值与中位数的对比、分位数跨度以及箱线图形态,可对赔付率分布做出以下判断:

分布形态诊断:
  • 右偏(正偏):均值 > 中位数,上尾长于下尾,少数高赔付月份拉高整体均值。
  • 非对称性:中位数更接近Q1(65.2% - 58.3% = 6.9%)而非Q3(76.8% - 65.2% = 11.6%),数据在低赔付区更集中。
  • 潜在异常信号:最大值95.6%距离Q3达18.8个百分点,接近1.5×IQR边界,需在后续章节中重点检验是否为统计异常点。

4.4 数据分布直方图与密度估计

为进一步观察分布形态,下图展示了赔付率的直方图与核密度估计曲线:

赔付率直方图与核密度估计曲线 40% 50% 60% 70% 80% 90%+ 0 1 2 3 μ=68.4% M=65.2% 直方图显示赔付率集中在55%–70%区间,右尾存在两个高赔付月份(红色柱),绿色虚线为核密度估计

4.5 描述性统计结论与异常检测启示

业务启示:
  1. 基准区间:正常赔付率应落在Q1(58.3%)至Q3(76.8%)之间,即IQR区间。超出此范围需关注。
  2. 右偏风险:均值高于中位数提示赔付率存在“厚尾”特征,高赔付事件虽少但影响显著,需建立阈值预警机制。
  3. 波动性:标准差12.35%意味着赔付率在均值±12.35%范围内波动的概率约为68%,超出2个标准差(即>93.1%或<43.7%)可视为初步异常候选。
  4. 后续方向:基于描述性统计识别的右偏形态和潜在异常月份,下一章将引入时间序列分解和统计检验方法,对异常点进行精确判定。

4.6 附:Python描述性统计代码示例

import pandas as pd
import numpy as np

# 示例赔付率数据(18个月)
loss_ratio = [0.482, 0.523, 0.551, 0.583, 0.612, 0.637,
              0.652, 0.665, 0.684, 0.702, 0.731, 0.758,
              0.782, 0.803, 0.835, 0.872, 0.912, 0.956]

# 核心统计量
mean_val = np.mean(loss_ratio)
median_val = np.median(loss_ratio)
std_val = np.std(loss_ratio, ddof=1)
q1 = np.percentile(loss_ratio, 25)
q3 = np.percentile(loss_ratio, 75)
iqr = q3 - q1

print(f"均值: {mean_val:.2%}")
print(f"中位数: {median_val:.2%}")
print(f"标准差: {std_val:.2%}")
print(f"Q1: {q1:.2%}, Q3: {q3:.2%}, IQR: {iqr:.2%}")
print(f"偏度: {np.mean((loss_ratio - mean_val)**3) / std_val**3:.2f}")