Nixtla
统计 ⚡️ 预测
使用统计和计量经济模型进行快速预测
StatsForecast提供了广泛使用的单变量时间序列预测模型集合,包括使用numba
优化的自动ARIMA
、ETS
、CES
和Theta
建模,以实现高性能。它还包括大量基准测试模型。
安装
您可以通过以下方式安装StatsForecast
:
pip install statsforecast
或
conda install -c conda-forge statsforecast
访问我们的安装指南获取更多说明。
快速开始
最小示例
from statsforecast import StatsForecast
from statsforecast.models import AutoARIMA
from statsforecast.utils import AirPassengersDF
df = AirPassengersDF
sf = StatsForecast(
models = [AutoARIMA(season_length = 12)],
freq = 'M'
)
sf.fit(df)
sf.predict(h=12, level=[95])
从这个快速指南开始。
按照这个端到端演练了解最佳实践。
为什么?
目前Python中用于统计模型的替代方案速度慢、不准确且扩展性差。因此,我们创建了一个可以在生产环境中使用或作为基准的库。StatsForecast
包含大量可以高效拟合数百万时间序列的模型。
特性
- Python中最快和最准确的
AutoARIMA
、AutoETS
、AutoCES
、MSTL
和Theta
实现。 - 与Spark、Dask和Ray开箱即用的兼容性。
- 概率预测和置信区间。
- 支持外生变量和静态协变量。
- 异常检测。
- 熟悉的sklearn语法:
.fit
和.predict
。
亮点
- ARIMA包含
外生变量
和预测区间
。 - 比
pmdarima
快20倍链接。 - 比
R
快1.5倍。 - 比
Prophet
快500倍。 - 比
statsmodels
快4倍链接。 - 通过
numba
编译为高性能机器代码。 - 使用ray在30分钟内处理1,000,000个序列。
- 用两行代码替换FB-Prophet,提高速度和准确性。查看这里的实验。
- 在1,000,000个序列上拟合10个基准模型,用时不到5分钟。
示例和指南
📚 端到端演练:多个时间序列的模型训练、评估和选择
🔎 异常检测:使用样本内预测区间检测时间序列的异常。
👩🔬 交叉验证:稳健的模型性能评估。
❄️ 多重季节性:如何使用MSTL预测具有多重季节性的数据。
🔌 预测需求高峰:电力负荷预测,用于检测每日高峰并降低电费。 📈 间歇性需求:预测非零观测值很少的时间序列。
🌡️ 外生回归因子:如天气或价格
模型
自动预测
自动预测工具搜索最佳参数并为一组时间序列选择最佳可能模型。这些工具适用于大量单变量时间序列。
ARIMA族
这些模型利用时间序列中存在的自相关性。
Theta族
对去季节性的时间序列拟合两条theta线,使用不同技术获取并组合两条theta线以产生最终预测。
多重季节性
适用于具有多个明显季节性的信号。对于电力和日志等低频数据很有用。
模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
---|---|---|---|---|---|
MSTL | ✅ | ✅ | ✅ | ✅ | 如果趋势预测器支持 |
GARCH和ARCH模型
适用于建模随时间表现出非恒定波动性的时间序列。ARCH模型是GARCH的特例。
基准模型
用于建立基准的经典模型。
指数平滑
使用所有过去观测值的加权平均,其中权重向过去呈指数递减。适用于具有明显趋势和/或季节性的数据。对于没有明显趋势或季节性的数据,使用简单指数
族。
稀疏或间歇性
适用于非零观测值很少的时间序列
模型 | 点预测 | 概率预测 | 样本内拟合值 | 概率拟合值 | 外生特征 |
---|---|---|---|---|---|
ADIDA | ✅ | ✅ | ✅ | ||
CrostonClassic | ✅ | ✅ | ✅ | ||
CrostonOptimized | ✅ | ✅ | ✅ | ||
CrostonSBA | ✅ | ✅ | ✅ | ||
IMAPA | ✅ | ✅ | ✅ | ||
TSB | ✅ | ✅ | ✅ |
🔨 如何贡献
请参阅CONTRIBUTING.md。
引用
@misc{garza2022statsforecast,
author={Federico Garza, Max Mergenthaler Canseco, Cristian Challú, Kin G. Olivares},
title = {{StatsForecast}: 基于统计和计量经济模型的超快速预测},
year={2022},
howpublished={{PyCon} 盐湖城, 犹他州, 美国 2022},
url={https://github.com/Nixtla/statsforecast}
}
贡献者 ✨
感谢这些优秀的人(表情符号说明):
本项目遵循all-contributors规范。欢迎任何形式的贡献!