使用 statsmodels 进行专业的统计建模与计量经济分析

解决机器学习库(如 scikit-learn)缺乏统计推断能力的痛点,通过 statsmodels 实现包含 P 值、置信区间和详细诊断报告的严谨统计分析。

为什么需要这个技能

在很多研究场景中,仅仅知道模型的预测准确率是不够的,我们需要回答“这个变量是否显著?”、“影响程度是多少?”以及“模型假设是否成立?”。

scikit-learn 专注于预测(Prediction),而 statsmodels 专注于推断(Inference)。它提供了强大的统计工具,能够生成类似于 R 语言的详细分析总结表,涵盖 OLS 回归、广义线性模型(GLM)、时间序列分析(ARIMA/SARIMAX)以及各种严谨的统计检验(如异方差检验、平稳性检验),是进行学术研究和金融计量的核心工具。

适用场景

  • 回归分析:拟合线性回归(OLS)、逻辑回归(Logit)或分位数回归。
  • 时间序列预测:处理具有趋势性和季节性的数据,构建 ARIMA 或 VAR 模型。
  • 因果推断:分析变量间的统计显著性,估计因果效应。
  • 模型诊断:检测残差的正态性、自相关性或异方差性。
  • 计数数据分析:处理非正态分布的计数数据(如 Poisson 或负二项回归)。

核心工作流

1. 线性回归 (OLS) 基础流

在 statsmodels 中,截距项(Constant)不会默认添加,必须手动处理。

import statsmodels.api as sm
import numpy as np

# 准备数据 - 必须手动添加常数项以计算截距
X = sm.add_constant(X_data)

# 拟合 OLS 模型
model = sm.OLS(y, X)
results = model.fit()

# 输出包含 P 值、R-squared 等所有关键信息的汇总表
print(results.summary())

2. 快速模型指定 (Formula API)

如果你习惯 R 语言的表达式,可以使用 formula.api 自动处理分类变量(Dummy Coding)和交互项。

import statsmodels.formula.api as smf

# 语法:'目标变量 ~ 解释变量1 + 解释变量2'
# C(category) 会自动将其处理为类别变量
results = smf.ols('y ~ x1 + C(category) + x1:x2', data=df).fit()
print(results.summary())

3. 时间序列分析 (ARIMA)

从平稳性检验到模型预测的完整路径。

from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.stattools import adfuller

# 1. ADF 平稳性检验
adf_result = adfuller(y_series)
print(f"ADF p-value: {adf_result[1]:.4f}")

# 2. 拟合 ARIMA(p,d,q) 模型
model = ARIMA(y_series, order=(1, 1, 1))
results = model.fit()

# 3. 预测未来 10 个周期
forecast = results.get_forecast(steps=10).summary_frame()

下载和安装

下载 statsmodels 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐