[ PROMPT_NODE_27454 ]
linear_models
[ SKILL_DOCUMENTATION ]
# 线性回归模型参考
本文档提供了 statsmodels 中线性回归模型的详细指南,包括 OLS、GLS、WLS、分位数回归及专业变体。
## 核心模型类
### OLS (普通最小二乘法)
假设误差项独立同分布 (Σ=I)。最适合具有同方差误差的标准回归分析。
**适用场景:**
- 标准回归分析
- 误差独立且具有恒定方差
- 无自相关或异方差性
- 最常用的起点
**基本用法:**
python
import statsmodels.api as sm
import numpy as np
# 准备数据 - 务必添加常数项以计算截距
X = sm.add_constant(X_data) # 添加一列 1 用于截距
# 拟合模型
model = sm.OLS(y, X)
results = model.fit()
# 查看结果
print(results.summary())
**关键结果属性:**
python
results.params # 系数
results.bse # 标准误
results.tvalues # T 统计量
results.pvalues # P 值
results.rsquared # R 平方
results.rsquared_adj # 调整后 R 平方
results.fittedvalues # 拟合值(训练数据上的预测)
results.resid # 残差
results.conf_int() # 参数置信区间
**带置信/预测区间的预测:**
python
# 样本内预测
pred = results.get_prediction(X)
pred_summary = pred.summary_frame()
print(pred_summary) # 包含均值、标准差、置信区间
# 样本外预测
X_new = sm.add_constant(X_new_data)
pred_new = results.get_prediction(X_new)
pred_summary = pred_new.summary_frame()
# 获取区间
mean_ci_lower = pred_summary["mean_ci_lower"]
mean_ci_upper = pred_summary["mean_ci_upper"]
obs_ci_lower = pred_summary["obs_ci_lower"] # 预测区间
obs_ci_upper = pred_summary["obs_ci_upper"]
**公式 API (R 风格):**
python
import statsmodels.formula.api as smf
# 自动处理分类变量和交互项
formula = 'y ~ x1 + x2 + C(category) + x1:x2'
results = smf.ols(formula, data=df).fit()
### WLS (加权最小二乘法)
处理异方差误差(对角矩阵 Σ),即不同观测值的方差不同。
**适用场景:**
- 已知的异方差性(非恒定误差方差)
- 不同观测值的可靠性不同
- 权重已知或可估计
**用法:**
python
# 如果已知权重(方差的倒数)
weights = 1 / erro