4. 广义线性模型(GLM)原理:指数族分布、链接函数、线性预测器、模型估计(MLE)

广义线性模型(Generalized Linear Model, GLM)是精算赔付率预测的核心建模框架。它突破了传统线性回归对正态分布和恒定方差的限制,允许响应变量服从指数族中的任意分布,并通过链接函数建立线性预测器与期望值之间的映射关系。本节从四个核心构件出发,系统阐述 GLM 的数学原理与估计方法。

4.1 指数族分布:GLM 的分布基础

GLM 假设响应变量 Y 服从指数族分布,其概率密度函数(或概率质量函数)可统一表示为:

f(y | θ, φ) = exp{ [y·θ - b(θ)] / a(φ) + c(y, φ) }

其中:

  • θ —— 自然参数(canonical parameter),决定分布的位置;
  • φ —— 离散参数(dispersion parameter),控制分布的方差;
  • b(θ) —— 累积量函数(cumulant function),其导数给出期望和方差;
  • a(φ) —— 已知函数,通常取 φ 或 φ/ω(ω 为先验权重);
  • c(y, φ) —— 归一化项,确保密度积分为 1。

指数族分布的重要性质:

性质 数学表达 精算含义
期望 E[Y] = μ = b'(θ) 赔付率的预测均值
方差 Var[Y] = a(φ) · b''(θ) 赔付率的波动性估计
方差函数 V(μ) = b''(θ(μ)) 方差与均值的关系形式

精算建模中常用的指数族分布包括:

  • 正态分布 —— 连续型,方差函数 V(μ)=1,适用于对数变换后的纯保费;
  • 泊松分布 —— 计数型,V(μ)=μ,适用于索赔次数建模;
  • 二项分布 —— 比例型,V(μ)=μ(1-μ),适用于索赔概率;
  • 伽马分布 —— 右偏连续型,V(μ)=μ²,适用于索赔金额;
  • 逆高斯分布 —— 高度右偏,V(μ)=μ³,适用于长尾损失。
精算选型提示: 赔付率预测中,若响应变量为连续正数且方差随均值平方增长,优先选择伽马分布;若存在大量零值且方差与均值成比例,考虑 Tweedie 分布(指数族特例)。

4.2 链接函数:连接线性预测器与期望

链接函数 g(·) 将响应变量的期望 μ 与线性预测器 η 连接起来:

η = g(μ) = Xβ

其中 X 为设计矩阵,β 为回归系数向量。链接函数必须严格单调且可微。常用链接函数包括:

分布 典型链接 链接形式 适用场景
正态 恒等链接 η = μ 线性回归特例
泊松 对数链接 η = ln(μ) 索赔次数、发生率
二项 Logit 链接 η = ln[μ/(1-μ)] 索赔概率、续保率
伽马 对数链接 η = ln(μ) 索赔金额、纯保费
逆高斯 倒数平方链接 η = 1/μ² 极端损失建模

规范链接(canonical link) 是使 θ = η 的链接函数,此时自然参数直接等于线性预测器。规范链接具有充分的充分统计量,计算上更稳定,是 GLM 建模的首选。

关键理解: 链接函数并不直接作用于响应变量本身,而是作用于其期望值。这意味着即使响应变量非正态,只要链接函数选择恰当,线性预测器仍可保持加法结构,这是 GLM 灵活性的核心来源。

4.3 线性预测器:特征组合的加法结构

线性预测器 η 是解释变量的线性组合:

η = β₀ + β₁x₁ + β₂x₂ + ... + βₚxₚ

在精算赔付率模型中,解释变量通常包括:

  • 连续型变量 —— 车龄、驾驶人年龄、保额、NCD 等级;
  • 分类变量 —— 车型组、地区、性别、职业;
  • 交互项 —— 年龄×地区、车型×保额区间;
  • 偏移项(offset) —— 暴露数、保单年数,系数固定为 1。

偏移项在对数链接模型中尤为重要:

ln(μ) = ln(暴露数) + β₀ + β₁x₁ + ... + βₚxₚ

此时 μ 表示期望索赔次数或期望赔付金额,而 ln(暴露数) 作为已知偏移量,使模型直接对费率进行预测。

4.4 模型估计:极大似然估计(MLE)

GLM 的回归系数 β 通过极大似然估计(Maximum Likelihood Estimation, MLE)求解。给定 n 个独立观测值 (yᵢ, xᵢ),对数似然函数为:

ℓ(β) = Σᵢ { [yᵢ·θᵢ - b(θᵢ)] / a(φ) + c(yᵢ, φ) }

其中 θᵢ 通过链接函数与 ηᵢ = xᵢᵀβ 关联。MLE 通过求解得分方程(score equation)得到:

∂ℓ/∂βⱼ = Σᵢ [ (yᵢ - μᵢ) · xᵢⱼ / (a(φ) · V(μᵢ) · g'(μᵢ)) ] = 0

由于得分方程通常为非线性,采用 迭代加权最小二乘法(IRLS, Iteratively Reweighted Least Squares) 求解:

  1. 初始化 β⁽⁰⁾,计算 μ⁽⁰⁾ = g⁻¹(Xβ⁽⁰⁾);
  2. 计算工作变量 z⁽ᵗ⁾ = η⁽ᵗ⁾ + (y - μ⁽ᵗ⁾) · g'(μ⁽ᵗ⁾);
  3. 计算权重 w⁽ᵗ⁾ = 1 / [a(φ) · V(μ⁽ᵗ⁾) · (g'(μ⁽ᵗ⁾))²];
  4. 求解加权最小二乘:β⁽ᵗ⁺¹⁾ = (XᵀWX)⁻¹XᵀWz;
  5. 重复步骤 2-4 直至收敛。
收敛注意事项: IRLS 算法通常 5-10 次迭代即可收敛。若出现不收敛,检查:① 链接函数与分布是否匹配;② 设计矩阵是否满秩;③ 是否存在完全分离(如二项分布中预测变量完全区分 0/1)。

4.5 GLM 精算建模完整流程

下图展示了从数据准备到模型部署的 GLM 精算建模全流程:

GLM 精算赔付率建模流程 1. 数据准备与清洗 2. 选择指数族分布 3. 指定链接函数 4. 构建线性预测器 5. MLE 参数估计 6. 模型诊断与选择 7. 赔付率预测与拦截 精算数据要点 • 暴露数作为偏移项 • 分类变量需编码 • 连续变量建议标准化 模型诊断指标 • 偏差(Deviance) • AIC / BIC • Pearson 残差分析

4.6 模型评估与选择

GLM 模型拟合后,需通过以下指标评估和比较:

指标 公式 说明
空模型偏差 Dnull = 2[ℓ(y; y) − ℓ(β₀)] 仅含截距的偏差
残差偏差 Dres = 2[ℓ(y; y) − ℓ(β̂)] 当前模型的偏差
解释偏差比 (Dnull − Dres) / Dnull 类似 R²,越高越好
AIC −2ℓ(β̂) + 2k k 为参数个数,越小越好
BIC −2ℓ(β̂) + k·ln(n) 对复杂模型惩罚更强
精算实践建议: 在赔付率预测中,优先使用 AIC 进行变量选择,同时结合业务解释性。若两个模型 AIC 差异小于 2,选择参数更少、业务逻辑更清晰的模型。残差分析应重点关注高赔付率区间的拟合效果。

4.7 Python 实现示例

以下代码展示使用 statsmodels 拟合伽马 GLM 的基本流程:

import statsmodels.api as sm
import pandas as pd

# 加载示例数据(假设包含赔付率数据)
df = pd.read_csv('claim_data.csv')

# 定义响应变量和解释变量
y = df['loss_ratio']  # 赔付率
X = df[['age', 'vehicle_value', 'region_encoded', 'ncd_level']]
X = sm.add_constant(X)  # 添加截距项

# 拟合伽马 GLM(对数链接)
gamma_glm = sm.GLM(
    y, X,
    family=sm.families.Gamma(link=sm.families.links.Log())
).fit()

# 输出模型摘要
print(gamma_glm.summary())

# 预测赔付率
df['predicted_loss_ratio'] = gamma_glm.predict(X)

# 模型诊断:残差偏差与 AIC
print(f"残差偏差: {gamma_glm.deviance:.4f}")
print(f"AIC: {gamma_glm.aic:.2f}")

输出结果解读:

  • 系数表 —— 每个变量的估计系数、标准误、z 统计量和 p 值;
  • 偏差统计 —— 空模型偏差与残差偏差的对比;
  • Pearson 卡方 —— 评估离散参数是否合理;
  • 预测值 —— 直接用于赔付率拦截决策。
代码优化提示: 当数据量较大(>10 万条)时,建议使用 sm.GLM.fit(method='irls', maxiter=50) 并监控收敛状态。若存在类别变量,使用 patsy 公式接口可简化编码:sm.GLM.from_formula('loss_ratio ~ C(region) + age + vehicle_value', ...)。

4.8 GLM 在赔付率拦截中的优势

GLM 相比传统线性模型和黑箱模型,在精算赔付率预测与拦截场景中具有以下优势:

特性 GLM 优势 业务价值
可解释性 系数直接反映边际效应 满足监管对定价透明度的要求
分布灵活性 支持伽马、泊松、Tweedie 等 准确刻画赔付率的偏态和厚尾
链接函数 对数链接保证预测值为正 避免赔付率出现负值
偏移项支持 自然处理不同暴露期 精确计算单位风险费率
统计推断 提供标准误和置信区间 支持风险分层的显著性检验

在赔付率拦截系统中,GLM 输出的预测值可直接作为风险评分,结合业务规则设定拦截阈值,实现高风险保单的自动拦截或人工审核。