来源:https://github.com/Nixtla/statsforecast
Nixtla
StatsForecast提供了一系列广泛使用的单变量时间序列预测模型,包括针对高性能优化的自动ARIMA、ETS、CES和Theta建模。它还包含了大量基准测试模型。
安装
您可以通过以下方式安装StatsForecast:
pip install statsforecast或
conda install-c conda-forge statsforecast更多安装说明,请访问我们的安装指南。
快速开始
最小示例
fromstatsforecastimportStatsForecastfromstatsforecast.modelsimportAutoARIMAfromstatsforecast.utilsimportAirPassengersDF df=AirPassengersDF sf=StatsForecast(models=[AutoARIMA(season_length=12)],freq='ME',)sf.fit(df)sf.predict(h=12,level=[95])快速入门指南快速指南
阅读此端到端演练了解最佳实践。
为什么选择 StatsForecast?
当前 Python 中的统计模型替代方案速度慢、不准确且可扩展性差。因此我们创建了一个可用于生产环境预测或作为基准的库。StatsForecast包含大量模型,可以高效地拟合数百万条时间序列。
特性
- Python 中速度最快、最准确的
AutoARIMA、AutoETS、AutoCES、MSTL和Theta实现。 - 开箱即用地兼容 Spark、Dask 和 Ray。
- 概率预测和置信区间。
- 支持外生变量和静态协变量。
- 异常检测。
- 熟悉的 sklearn 语法:
.fit和.predict。
亮点
- 为 ARIMA 增加了
外生变量和预测区间的支持。 - 比
pmdarima快20 倍。 - 比 R 语言快 1.5 倍。
- 比 Prophet 快 500 倍。
- 比
statsmodels快4 倍。 - 使用 ray 在30 分钟内处理1,000,000条序列。
- 通过两行代码替换 FB-Prophet,获得更快的速度和更高的准确率。查看相关实验此处。
- 在5 分钟内在1,000,000条序列上拟合10 个基准模型。
缺少某些功能?请提出问题或通过 slack 联系我们。
示例和指南
📚 端到端演练:针对多条时间序列的模型训练、评估和选择
🔎 异常检测:使用样本内预测区间检测时间序列中的异常。
👩🔬 交叉验证:稳健的模型性能评估。
❄️ 多季节性:如何使用 MSTL 预测具有多季节性的数据。
🔌 预测需求峰值:电力负荷预测,用于检测每日峰值并降低电费。
📈 间歇需求:预测非零观测值很少的序列。
🌡️ 外生回归变量:如天气或价格。
模型
自动预测
自动预测工具会为一组时间序列搜索最佳参数并选择可能的最佳模型。这些工具对于大规模的单变量时间序列集合非常有用。
| 模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
|---|---|---|---|---|---|
| AutoARIMA | ✅ | ✅ | ✅ | ✅ | ✅ |
| AutoETS | ✅ | ✅ | ✅ | ✅ | |
| AutoCES | ✅ | ✅ | ✅ | ✅ | |
| AutoTheta | ✅ | ✅ | ✅ | ✅ | |
| AutoMFLES | ✅ | ✅ | ✅ | ✅ | ✅ |
| AutoTBATS | ✅ | ✅ | ✅ | ✅ |
ARIMA 家族
这些模型利用时间序列中存在的自相关性。
| 模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
|---|---|---|---|---|---|
| ARIMA | ✅ | ✅ | ✅ | ✅ | ✅ |
| AutoRegressive | ✅ | ✅ | ✅ | ✅ | ✅ |
Theta 家族
对去季节化的时间序列拟合两条 Theta 线,使用不同的技术获取并组合这两条 Theta 线以生成最终预测。
| 模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
|---|---|---|---|---|---|
| Theta | ✅ | ✅ | ✅ | ✅ | ✅ |
| OptimizedTheta | ✅ | ✅ | ✅ | ✅ | |
| DynamicTheta | ✅ | ✅ | ✅ | ✅ | |
| DynamicOptimizedTheta | ✅ | ✅ | ✅ | ✅ |
多季节性
适用于具有多于一个明显季节性的信号,对电力和日志等低频数据非常有用。
| 模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
|---|---|---|---|---|---|
| MSTL | ✅ | ✅ | ✅ | ✅ | 若趋势预测器支持 |
| MFLES | ✅ | ✅ | ✅ | ✅ | ✅ |
| TBATS | ✅ | ✅ | ✅ | ✅ |
GARCH 和 ARCH 模型
适用于建模随时间变化具有非恒定波动性的时间序列。ARCH 模型是 GARCH 的一个特例。
| 模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
|---|---|---|---|---|---|
| GARCH | ✅ | ✅ | ✅ | ✅ | |
| ARCH | ✅ | ✅ | ✅ | ✅ |
基线模型
用于建立基线的经典模型。
| 模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
|---|---|---|---|---|---|
| HistoricAverage | ✅ | ✅ | ✅ | ✅ | |
| Naive | ✅ | ✅ | ✅ | ✅ | |
| RandomWalkWithDrift | ✅ | ✅ | ✅ | ✅ | |
| SeasonalNaive | ✅ | ✅ | ✅ | ✅ | |
| WindowAverage | ✅ | ||||
| SeasonalWindowAverage | ✅ |
指数平滑
使用所有过去观测值的加权平均,其中权重随回溯期呈指数衰减。适用于具有明显趋势和/或季节性的数据。对于没有明显趋势或季节性的数据,请使用SimpleExponential家族。
| 模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
|---|---|---|---|---|---|
| SimpleExponentialSmoothing | ✅ | ✅ | |||
| SimpleExponentialSmoothingOptimized | ✅ | ✅ | |||
| SeasonalExponentialSmoothing | ✅ | ✅ | |||
| SeasonalExponentialSmoothingOptimized | ✅ | ✅ | |||
| Holt | ✅ | ✅ | ✅ | ✅ | |
| HoltWinters | ✅ | ✅ | ✅ | ✅ |
稀疏或间歇需求
适用于非零观测值非常少的序列。
| 模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
|---|---|---|---|---|---|
| ADIDA | ✅ | ✅ | ✅ | ||
| CrostonClassic | ✅ | ✅ | ✅ | ||
| CrostonOptimized | ✅ | ✅ | ✅ | ||
| CrostonSBA | ✅ | ✅ | ✅ | ||
| IMAPA | ✅ | ✅ | ✅ | ||
| TSB | ✅ | ✅ | ✅ |
🔨 如何贡献
请参阅 CONTRIBUTING.md。
引用
@misc{garza2022statsforecast, author={Azul Garza, Max Mergenthaler Canseco, Cristian Challú, Kin G. Olivares}, title = {{StatsForecast}: Lightning fast forecasting with statistical and econometric models}, year={2022}, howpublished={{PyCon} Salt Lake City, Utah, US 2022}, url={https://github.com/Nixtla/statsforecast} }贡献者 ✨
感谢这些杰出的人们(表情符号说明):
本项目遵循 all-contributors 规范。欢迎任何形式的贡献!