[ PROMPT_NODE_27452 ]
glm
[ SKILL_DOCUMENTATION ]
# 广义线性模型 (GLM) 参考
本文档提供了 statsmodels 中广义线性模型的全面指南,包括分布族、连接函数及应用。
## 概述
GLM 通过以下方式将线性回归扩展到非正态响应分布:
1. **分布族 (Distribution family)**:指定响应的条件分布
2. **连接函数 (Link function)**:将线性预测变量转换为均值尺度
3. **方差函数 (Variance function)**:关联方差与均值
**一般形式**:g(μ) = Xβ,其中 g 是连接函数,μ = E(Y|X)
## 何时使用 GLM
- **二元结果**:逻辑回归(二项分布族配合 logit 连接)
- **计数数据**:泊松或负二项回归
- **正连续数据**:Gamma 或逆高斯分布
- **非正态分布**:当违反 OLS 假设时
- **连接函数**:当预测变量与响应尺度之间存在非线性关系时
## 分布族
### 二项分布族 (Binomial Family)
用于二元结果 (0/1) 或比例 (k/n)。
**何时使用:**
- 二元分类
- 成功/失败结果
- 比例或比率
**常用连接函数:**
- Logit (默认): log(μ/(1-μ))
- Probit: Φ⁻¹(μ)
- Log: log(μ)
python
import statsmodels.api as sm
import statsmodels.formula.api as smf
# 二元逻辑回归
model = sm.GLM(y, X, family=sm.families.Binomial())
results = model.fit()
# 公式 API
results = smf.glm('success ~ x1 + x2', data=df,
family=sm.families.Binomial()).fit()
# 获取预测 (概率)
probs = results.predict(X_new)
# 分类 (0.5 阈值)
predictions = (probs > 0.5).astype(int)
**解释:**
python
import numpy as np
# 优势比 (针对 logit 连接)
odds_ratios = np.exp(results.params)
print("优势比:", odds_ratios)
# x 每增加 1 个单位,优势乘以 exp(beta)
### 泊松分布族 (Poisson Family)
用于计数数据(非负整数)。
**何时使用:**
- 计数结果(事件数量)
- 稀有事件
- 比率建模(带偏移量 offset)
**常用连接函数:**
- Log (默认): log(μ)
- Identity: μ
- Sqrt: √μ
python
# 泊松回归
model = sm.GLM(y, X, family=sm.families.Poisson())
results = model.fit()
# 带暴露量/偏移量用于比率建模
# 若建模 rate = counts/exposure
model = sm.GLM(y, X, family=sm.families.Poisson(),
offset=np.log(exposure))
results = model.fit()
# 解释: exp(beta) = 对预期计数的乘法效应
import numpy as np
rate_ratios = np.exp(result