统计建模库 statsmodels(时序单变量数据)

statsmodels 是一个基于 Python 的科学计算库,专注于统计数据分析、统计模型估计、统计检验和数据探索。它提供了对 R 语言中许多统计方法的完整复现,同时紧密集成在 Python 的科学计算生态(NumPy, Pandas, SciPy)中。

1. 线性模型

这是最基础也是最常用的部分。

  • 普通最小二乘回归(OLS):最基本的线性回归。

  • 广义最小二乘回归(GLS):用于处理异方差性的回归。

  • 加权最小二乘回归(WLS):用于处理已知权重的异方差性。

2. 广义线性模型(GLM)

用于处理因变量非正态分布的情况,如二项分布(逻辑回归)、泊松分布等。

  • 逻辑回归(Logit):用于二分类问题。

  • 泊松回归(Poisson):用于计数型数据。

3. 时间序列分析

这是 statsmodels 非常强大的一个模块。

  • AR / MA / ARMA / ARIMA 模型:用于单变量时间序列分析和预测。

  • 状态空间模型和卡尔曼滤波:更高级的时间序列方法。

  • 向量自回归(VAR):用于多变量时间序列系统。

  • 单位根检验(ADF):检验时间序列的平稳性。

from statsmodels.tsa.arima.model import ARIMA

# 拟合一个 ARIMA(1, 1, 1) 模型
model = ARIMA(data, order=(1, 1, 1))
results = model.fit()
print(results.summary())
results.plot_diagnostics() # 绘制诊断图形
forecast = results.forecast(steps=5) # 预测未来5步

4. 非参数方法和稳健回归

  • 核密度估计:用于估计随机变量的概率密度函数。

  • 广义加性模型(GAM):在 statsmodels.gam 中。

  • RLM(稳健线性模型):用于处理数据中有异常值的情况。

5. 多元统计模型

  • 主成分分析(PCA)、因子分析等。

  • 方差分析(ANOVA)。

6. 生存分析

  • Kaplan-Meier 估计量:用于估计生存函数。

  • Cox 比例风险模型:用于分析生存时间与一个或多个预测变量之间的关系。

与 Scikit-learn 的区别

这是一个非常常见的问题。两者都是建模库,但侧重点完全不同:

 
特性statsmodelsScikit-learn
主要目标 统计推断,理解变量关系、显著性 预测精度,机器学习
输出 丰富的统计指标(p值、置信区间等) 相对简洁,侧重于预测结果
模型 经典的统计模型(线性、时序、GLM) 机器学习模型(树、SVM、集成学习、神经网络)
接口 支持 R 风格的公式接口 统一的 fit/predict/score 接口
posted @ 2025-09-16 15:57  wangssd  阅读(75)  评论(0)    收藏  举报