引言
广义线性模型(Generalized Linear Model, GLM)是统计学中一种重要的建模工具,它扩展了传统线性回归模型,能够处理响应变量的非正态分布和非线性关系。GLM 的灵活性和广泛的应用范围使其在金融、医学、社会科学等领域中成为数据分析的核心方法。本文将深入探讨 GLM 的定义、核心组成部分以及指数族分布的应用,为读者提供一个全面的理解框架。
一、广义线性模型概述
(一)定义与核心组成部分
广义线性模型通过三个核心组成部分来描述响应变量与预测变量之间的关系:随机成分、系统成分和链接函数。
-
随机成分
随机成分指响应变量的分布类型,通常属于指数族分布。常见的分布包括正态分布、二项分布、泊松分布等。这些分布的概率密度函数或概率质量函数可以表示为指数族的形式,这使得它们在理论和应用中非常便利。指数族分布的一般形式为:
f ( y ; θ ) = h ( y ) exp ( η ( θ ) ⋅ T ( y ) − A ( θ ) ) f(y; \theta) = h(y) \exp\left(\eta(\theta) \cdot T(y) - A(\theta)\right) f(y;θ)=h(y)exp(η(θ)⋅T(y)−A(θ))
其中, ( θ ) ( \theta ) (θ) 是自然参数, ( T ( y ) ) ( T(y) ) (T(y)) 是充分统计量, ( h ( y ) ) ( h(y) ) (h(y)) 是基准函数, ( A ( θ ) ) ( A(\theta) ) (A(θ)) 是对数配分函数。
-
系统成分
系统成分由线性预测器组成,形式为:
η = X β \eta = X\beta η=Xβ
其中, ( X ) ( X ) (X) 是特征矩阵, ( β ) ( \beta ) (β) 是参数向量。系统成分描述了模型中的解释变量及其线性组合,与传统线性回归模型中的系统部分相似。 -
链接函数
链接函数将随机成分与系统成分连接起来,常见的链接函数包括逻辑函数(logistic)、对数函数(log)等。链接函数的作用是将线性预测器的结果转换为与响应变量的分布相匹配的形式,使得模型能够更好地拟合数据。链接函数的一般形式为:
g ( μ ) = η g(\mu) = \eta g(μ)=η
其中, ( μ ) ( \mu ) (μ) 是响应变量的期望值, ( η ) ( \eta ) (η) 是线性预测器。
二、指数族分布在广义线性模型中的应用
(一)指数族分布的特点
指数族分布是一类具有特定形式的概率分布,其概率密度函数或概率质量函数可以表示为指数族的形式。指数族分布的一般形式为:
f ( y ; θ ) = h ( y ) exp ( η ( θ ) ⋅ T ( y ) − A ( θ ) ) f(y; \theta) = h(y) \exp\left(\eta(\theta) \cdot T(y) - A(\theta)\right) f(y;θ)=h(y)exp(η(θ)⋅T(y)−A(θ))
其中, ( θ ) ( \theta ) (θ) 是自然参数, ( T ( y ) ) ( T(y) ) (T(y)) 是充分统计量, ( h ( y ) ) ( h(y) ) (h(y)) 是基准函数, ( A ( θ ) ) ( A(\theta) ) (A(θ)) 是对数配分函数。指数族分布的均值和方差都有简洁的表达式,其均值为:
E [ Y ] = μ = A ′ ( θ ) \mathbb{E}[Y] = \mu = A'(\theta) E[Y]=μ=A′(θ)
方差为:
Var ( Y ) = A ′ ′ ( θ ) \text{Var}(Y) = A''(\theta) Var(Y)=A′′(θ)
这些性质使得在广义线性模型中,对参数的估计和推断更加方便和高效。
(二)不同指数族分布的形式及应用案例
-
高斯分布
高斯分布的概率密度函数为:
f ( y ; μ , σ 2 ) = 1 2 π σ 2 exp ( − ( y − μ ) 2 2 σ 2 ) f(y; \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(y-\mu)^2}{2\sigma^2}\right) f(y;μ,σ2)=2πσ21exp(−2σ2(y−μ)2)
可以化为指数族分布的形式:
f ( y ; θ ) = exp ( y μ − μ 2 2 σ 2 − y 2 2 σ 2 − 1 2 ln ( 2 π σ 2 ) ) f(y; \theta) = \exp\left(\frac{y\mu - \frac{\mu^2}{2}}{\sigma^2} - \frac{y^2}{2\sigma^2} - \frac{1}{2}\ln(2\pi\sigma^2)\right) f(y;θ)=exp(σ2yμ−2μ2−2σ2y2−21ln(2πσ2))
其中,KaTeX parse error: Can't use function '\)' in math mode at position 16: ( \theta = \mu \̲)̲,\( T(y) = y ), ( A ( θ ) = μ 2 2 σ 2 ) ( A(\theta) = \frac{\mu^2}{2\sigma^2} ) (A(θ)=2σ2μ2)。
高斯分布广泛应用于回归分析中,例如线性回归模型。在机器学习中,高斯分布常用于高斯混合模型(GMM),用于聚类和密度估计。 -
伯努利分布
伯努利分布的概率质量函数为:
f ( y ; p ) = p y ( 1 − p ) 1 − y f(y; p) = p^y (1-p)^{1-y} f(y;p)=py(1−p)1−y
可以写成指数族分布形式:
f ( y ; θ ) = exp ( y ln ( p 1 − p ) + ln ( 1 − p ) ) f(y; \theta) = \exp\left(y\ln\left(\frac{p}{1-p}\right) + \ln(1-p)\right) f(y;θ)=exp(yln(1−pp)+ln(1−p))
其中, ( θ = ln ( p 1 − p ) ) ( \theta = \ln\left(\frac{p}{1-p}\right) ) (θ=ln(1−pp)), ( T ( y ) = y ) ( T(y) = y ) (T(y)=y), ( A ( θ ) = ln ( 1 + e θ ) ) ( A(\theta) = \ln(1 + e^\theta) ) (A(θ)=ln(1+eθ))。
伯努利分布在二分类问题中非常常见,例如逻辑回归模型。在医学诊断中,判断患者是否患有某种疾病(患病为 1,未患病为 0),可以使用基于伯努利分布的广义线性模型。 -
二项分布
二项分布的概率质量函数为:
f ( y ; n , p ) = ( n y ) p y ( 1 − p ) n − y f(y; n, p) = \binom{n}{y} p^y (1-p)^{n-y} f(y;n,p)=(yn)py(1−p)n−y
可以表示为指数族分布形式:
f ( y ; θ ) = exp ( y ln ( p 1 − p ) + n ln ( 1 − p ) + ln ( n y ) ) f(y; \theta) = \exp\left(y\ln\left(\frac{p}{1-p}\right) + n\ln(1-p) + \ln\binom{n}{y}\right) f(y;θ)=exp(yln(1−pp)+nln(1−p)+ln(yn))
其中, ( θ = ln ( p 1 − p ) ) ( \theta = \ln\left(\frac{p}{1-p}\right) ) (θ=ln(1−pp)), ( T ( y ) = y ) ( T(y) = y ) (T(y)=y), ( A ( θ ) = n ln ( 1 + e θ ) ) ( A(\theta) = n\ln(1 + e^\theta) ) (A(θ)=nln(1+eθ))。
二项分布在多项式分类问题中很有用,例如多项式逻辑回归。在市场调研中,调查消费者对不同品牌产品的偏好,可以使用基于二项分布的广义线性模型。 -
泊松分布
泊松分布的概率质量函数为:
f ( y ; λ ) = λ y e − λ y ! f(y; \lambda) = \frac{\lambda^y e^{-\lambda}}{y!} f(y;λ)=y!λye−λ
可以转化为指数族分布形式:
f ( y ; θ ) = exp ( y ln λ − λ − ln ( y ! ) ) f(y; \theta) = \exp\left(y\ln\lambda - \lambda - \ln(y!)\right) f(y;θ)=exp(ylnλ−λ−ln(y!))
其中, ( θ = ln λ ) ( \theta = \ln\lambda ) (θ=lnλ), ( T ( y ) = y ) ( T(y) = y ) (T(y)=y), ( A ( θ ) = e θ ) ( A(\theta) = e^\theta ) (A(θ)=eθ)。
泊松分布在计数数据建模中非常有用,例如在文本分析中用于词频建模,分析一篇文章中某个单词出现的次数。 -
伽马分布
伽马分布的概率密度函数为:
f ( y ; k , θ ) = y k − 1 e − y / θ θ k Γ ( k ) f(y; k, \theta) = \frac{y^{k-1} e^{-y/\theta}}{\theta^k \Gamma(k)} f(y;k,θ)=θkΓ(k)yk−1e−y/θ
可以表示为指数族分布形式:
f ( y ; θ ) = exp ( − y θ + ( k − 1 ) ln y − k ln θ − ln Γ ( k ) ) f(y; \theta) = \exp\left(-\frac{y}{\theta} + (k-1)\ln y - k\ln\theta - \ln\Gamma(k)\right) f(y;θ)=exp(−θy+(k−1)lny−klnθ−lnΓ(k))
其中, ( θ = 1 θ ) ( \theta = \frac{1}{\theta} ) (θ=θ1), ( T ( y ) = y ) ( T(y) = y ) (T(y)=y), ( A ( θ ) = k ln θ ) ( A(\theta) = k\ln\theta ) (A(θ)=klnθ)。
伽马分布在生存分析和可靠性工程中用于建模寿命数据。 -
狄利克雷分布
狄利克雷分布的概率密度函数为:
f ( y ; α ) = 1 B ( α ) ∏ i = 1 k y i α i − 1 f(y; \alpha) = \frac{1}{B(\alpha)} \prod_{i=1}^k y_i^{\alpha_i-1} f(y;α)=B(α)1i=1∏kyiαi−1
可以写成指数族分布形式:
f ( y ; θ ) = exp ( ∑ i = 1 k ( α i − 1 ) ln y i − ln B ( α ) ) f(y; \theta) = \exp\left(\sum_{i=1}^k (\alpha_i-1)\ln y_i - \ln B(\alpha)\right) f(y;θ)=exp(i=1∑k(αi−1)lnyi−lnB(α))
其中, ( θ = α ) ( \theta = \alpha ) (θ=α), ( T ( y ) = ln y ) ( T(y) = \ln y ) (T(y)=lny), ( A ( θ ) = ln B ( α ) ) ( A(\theta) = \ln B(\alpha) ) (A(θ)=lnB(α))。
狄利克雷分布在贝叶斯推断中用于多分类问题的先验分布。
三、广义线性模型的参数估计
(一)最大似然估计
广义线性模型的参数通常通过最大似然估计(Maximum Likelihood Estimation, MLE)来确定。对于指数族分布,似然函数的形式为:
L ( θ ; y ) = ∏ i = 1 n f ( y i ; θ ) L(\theta; y) = \prod_{i=1}^n f(y_i; \theta) L(θ;y)=i=1∏nf(yi;θ)
对数似然函数为:
ℓ ( θ ; y ) = ∑ i = 1 n ( y i η ( θ ) − A ( θ ) ) + 常数 \ell(\theta; y) = \sum_{i=1}^n \left( y_i \eta(\theta) - A(\theta) \right) + \text{常数} ℓ(θ;y)=i=1∑n(yiη(θ)−A(θ))+常数
通过最大化对数似然函数,可以得到参数的估计值。
示例代码(Python 使用 statsmodels 库拟合 GLM):
import statsmodels.api as sm
import pandas as pd# 示例数据
data = pd.DataFrame({'x1': [1, 2, 3, 4, 5],'x2': [2, 3, 4, 5, 6],'y': [0, 1, 0, 1, 1]
})# 定义自变量和因变量
X = data[['x1', 'x2']]
X = sm.add_constant(X) # 添加截距项
y = data['y']# 拟合逻辑回归模型(GLM 的一种)
model = sm.GLM(y, X, family=sm.families.Binomial())
results = model.fit()# 输出模型结果
print(results.summary())
(二)迭代加权最小二乘法
在实际计算中,广义线性模型的参数通常通过迭代加权最小二乘法(Iteratively Reweighted Least Squares, IRLS)来求解。IRLS 是一种迭代算法,通过不断更新权重和预测值,逐步逼近最大似然估计的解。
四、广义线性模型的诊断与评估
(一)残差分析
残差分析是评估模型拟合效果的重要方法。对于广义线性模型,常用的残差包括 Pearson 残差和 Deviance 残差。Pearson 残差定义为:
r i = y i − μ ^ i Var ( μ ^ i ) r_i = \frac{y_i - \hat{\mu}_i}{\sqrt{\text{Var}(\hat{\mu}_i)}} ri=Var(μ^i)yi−μ^i
Deviance 残差定义为:
d i = sign ( y i − μ ^ i ) 2 ( ℓ ( y i ; y i ) − ℓ ( μ ^ i ; y i ) ) d_i = \text{sign}(y_i - \hat{\mu}_i) \sqrt{2 \left( \ell(y_i; y_i) - \ell(\hat{\mu}_i; y_i) \right)} di=sign(yi−μ^i)2(ℓ(yi;yi)−ℓ(μ^i;yi))
通过分析残差的分布和模式,可以判断模型是否存在系统性偏差或异常值。
示例代码(Python 计算残差):
# 计算 Pearson 残差
pearson_residuals = results.resid_pearson# 计算 Deviance 残差
deviance_residuals = results.resid_deviance# 输出残差
print("Pearson Residuals:", pearson_residuals)
print("Deviance Residuals:", deviance_residuals)
(二)模型选择准则
常用的模型选择准则包括 AIC(Akaike Information Criterion)和 BIC(Bayesian Information Criterion)。AIC 和 BIC 的定义分别为:
AIC = − 2 ℓ ( θ ^ ; y ) + 2 k \text{AIC} = -2 \ell(\hat{\theta}; y) + 2k AIC=−2ℓ(θ^;y)+2k
BIC = − 2 ℓ ( θ ^ ; y ) + k ln n \text{BIC} = -2 \ell(\hat{\theta}; y) + k \ln n BIC=−2ℓ(θ^;y)+klnn
其中, ( k ) ( k ) (k) 是模型参数的数量, ( n ) ( n ) (n) 是样本量。AIC 和 BIC 越小,模型拟合效果越好。
示例代码(Python 计算 AIC 和 BIC):
# 计算 AIC 和 BIC
aic = results.aic
bic = results.bic# 输出结果
print("AIC:", aic)
print("BIC:", bic)
结语
广义线性模型作为一种强大的统计工具,其灵活性和广泛的应用范围使其在各个领域中发挥着重要作用。通过深入理解 GLM 的核心组成部分、指数族分布的应用以及参数估计和诊断方法,我们可以更好地利用这一工具来解决实际问题,为数据分析和决策提供有力支持。
参考文献
- 广义线性模型简介
- 指数族分布在 GLM 中的应用
- 最大似然估计与迭代加权最小二乘法
- 模型诊断与评估方法