pip install statsmodels

statsmodels 库的核心作用

statsmodels 是 Python 中专注于统计建模和计量经济学的库,和你之前了解的 scipy.stats 相比,它更侧重完整的统计建模流程(从模型定义、拟合、检验到结果解释),而非单纯的统计函数调用。简单来说:

  • scipy.stats 偏向 “统计工具函数”(比如算分布、做检验);
  • statsmodels 偏向 “完整的统计模型”(比如线性回归、时间序列模型),并且会输出专业的统计摘要(如 P 值、R²、置信区间等),完全满足学术 / 工业界的统计分析需求。

用一个简单例子展示 statsmodels 的核心优势 ——输出专业的统计摘要,这是 scipy/matplotlib 无法直接做到的:

import numpy as np
import statsmodels.api as sm
import pandas as pd

# 1. 构造模拟数据:x是自变量(广告投入),y是因变量(销量)
np.random.seed(123)  # 固定随机种子,结果可复现
x = np.random.rand(100, 1) * 10  # 广告投入:0-10之间的随机数
y = 2 * x + 5 + np.random.randn(100, 1)  # 销量 = 2*广告投入 + 5 + 随机噪声

# 2. 转换为DataFrame,方便查看
data = pd.DataFrame({'广告投入': x.flatten(), '销量': y.flatten()})

# 3. 构建线性回归模型(添加常数项)
X = sm.add_constant(data['广告投入'])  # 添加截距项(常数项)
model = sm.OLS(data['销量'], X)  # 定义OLS模型
results = model.fit()  # 拟合模型

# 4. 输出详细的统计摘要(核心优势)
print(results.summary())

# 5. 简单预测
new_x = sm.add_constant([[3], [5]])  # 预测广告投入为3和5时的销量
predictions = results.predict(new_x)
print("\n广告投入3时预测销量:", predictions[0])
print("广告投入5时预测销量:", predictions[1])
关键输出解读(新手重点看):
  • R-squared:决定系数,越接近 1 说明模型拟合越好;
  • coef:回归系数(比如 “广告投入” 的系数≈2,和我们构造数据时的 2 一致);
  • P>|t|:P 值,小于 0.05 说明该变量对因变量有显著影响;
  • const:截距项(≈5,和构造数据时的 5 一致)。
3. 安装与使用前提
  • 安装命令:pip install statsmodels(会自动依赖 numpy、scipy、pandas 等库,确保这些库已安装);
  • 适用人群:数据分析、计量经济学、金融分析、社会科学研究等需要做统计建模和推断的开发者;
  • 搭配使用:常和 pandas(数据处理)、scipy(基础统计)、matplotlib/seaborn(可视化)配合。

总结

  1. statsmodels 核心是统计建模 + 完整的统计推断,专注于输出专业的统计摘要,适合线性回归、时间序列分析等场景;
  2. 对比 scipy.stats:scipy 是 “统计工具包”,statsmodels 是 “完整的统计建模框架”;
  3. 最常用的功能是线性回归(OLS)和时间序列分析(ARIMA),适合需要做统计显著性检验、模型解释的分析场景。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐