广义线性模型(GLM)的基本概念及Python实现实例解析
广义线性模型(GLM)是一种扩展线性回归的统计模型,它允许响应变量服从非正态分布,并通过不同的函数链接响应变量和线性预测器。GLM的灵活性在于它可以处理多种类型的数据和分布,如二项分布、泊松分布等。
GLM的基本概念:
线性预测器:GLM假设响应变量 ( Y ) 的预测是通过一组预测变量 ( X ) 的线性组合来进行的,即:
[
\eta = X\beta
]
其中, ( \eta ) 是线性预测器,( X ) 是输入特征矩阵,( \beta ) 是系数向量。链接函数:为了处理非正态响应变量,将线性预测器 ( \eta ) 转换为期望值 ( \mu ) 的函数称为链接函数 ( g(\cdot) ),即:
[
g(\mu) = \eta
]
常见的链接函数有logit、log、identity等。误差分布:GLM允许响应变量 ( Y ) 服从指数分布族中的分布,如正态分布、二项分布、泊松分布。
Python实现实例:
这里以一个简单的二项逻辑回归(GLM的一种)为例,展示如何用Python实现。
我们将使用 statsmodels
库,这是一个强大的统计建模包。
import numpy as np
import pandas as pd
import statsmodels.api as sm
# 创建一个示例数据集
np.random.seed(0)
n_samples = 100
X = np.random.rand(n_samples)
y = (X > 0.5).astype(int) # 人为的二项分布响应变量
# 添加截距
X = sm.add_constant(X)
# 使用GLM进行逻辑回归
model = sm.GLM(y, X, family=sm.families.Binomial())
result = model.fit()
# 打印结果摘要
print(result.summary())
# 预测
predictions = result.predict(X)
print("Predictions:", predictions[:5])
代码解析:
- 数据创建:生成随机数,确定特征和响应变量,响应变量人为地设定为简单的二项分布。
- 截距项:
sm.add_constant(X)
用于添加一个常量列,以包含截距。 - 模型拟合:使用
statsmodels
中的GLM
类进行模型拟合,指定family=sm.families.Binomial()
表示这是一个逻辑回归模型。 - 结果输出:
result.summary()
返回详细的统计分析,包括系数、标准误、z值等。 - 预测:预测给定数据集的响应变量。
通过这个例子,可以体会到广义线性模型灵活地处理不同类型数据的能力,以及用Python进行统计建模的便捷性。