1. 伽马回归模型概述
伽马回归是广义线性模型(GLM)家族中的一员,专门用于处理响应变量服从伽马分布的数据。在实际应用中,我们经常会遇到右偏分布的数据——比如保险理赔金额、设备维修费用、网页停留时长等。这类数据的典型特征就像被拉伸的橡皮筋:大部分数据点密集堆积在左侧,右侧拖着一条长长的尾巴。
为什么伽马回归特别适合处理这类数据?这要从伽马分布的特性说起。伽马分布由形状参数(k)和尺度参数(θ)决定,其概率密度函数为:
f(x; k, θ) = x^(k-1) * e^(-x/θ) / (θ^k * Γ(k))
这个分布有两个重要特性:
- 严格正值域:x > 0
- 右偏形态:众数 < 中位数 < 均值
在保险金额预测的案例中,大多数保单的理赔金额较小,但少数大额理赔会显著拉高平均值。使用普通线性回归(假设误差服从正态分布)会导致对小额数据的欠拟合和对大额数据的过拟合。而伽马回归通过其分布特性,自然适应这种数据特征。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据准备与探索性分析
2.1 模拟数据生成
我们先模拟一个设备维修成本的场景。假设维修成本随设备使用年限呈指数增长趋势:
matlab复制rng(2023); % 设定随机种子保证结果可复现
X = randn(500,1)*1.5 + 10; % 设备使用年限(均值为10年)
shape = 2; % 形状参数固定
scale = 1./(0.3*X); % 尺度参数与使用年限成反比
y = gamrnd(shape, scale); % 生成伽马分布响应变量
这段代码有几个精妙之处:
- 通过
0.3*X使尺度参数与自变量关联,建立真实的非线性关系 - 形状参数固定为2,确保数据呈现典型的右偏形态
- 使用
randn生成年限数据,模拟实际场景中的使用年限分布
2.2 数据可视化
在建模前,先直观感受数据特征:
matlab复制figure
histogram(y, 50, 'FaceColor', '#4DBEEE')
title('维修成本分布直方图')
xlabel('维修费用(万元)'), ylabel('频数')
从直方图可以清晰看到数据右偏特征。再观察自变量与响应变量的关系:
matlab复制scatter(X, y, 40,
