快速开始

StatsForecast 的最小示例

StatsForecast 遵循 sklearn 模型 API。在这个最简单的示例中,您将创建一个 StatsForecast 类的实例,然后调用其 fitpredict 方法。如果速度不是最重要的,并且您希望探索拟合值和参数,我们建议使用此选项。

Tip

如果您希望预测多个系列,建议使用 forecast 方法。请查看这个 多时间序列入门指南

StatsForecast 的输入始终是一个具有三列的 长格式 数据框:unique_iddsy

作为示例,让我们看看美国航空乘客数据集。该时间序列包含 1949 年至 1960 年间美国航空公司乘客的月总数。CSV 文件可在 这里 获取。

我们假设您已经安装了 StatsForecast。请查看此指南以获取 如何安装 StatsForecast 的说明。

首先,我们将导入数据:

# 取消注释以下行以安装库
# %pip 安装 statsforecast
import os

import pandas as pd
# 这样,预测方法的输出结果中就会包含一个id列。 
# 而不是作为索引
os.environ['NIXTLA_ID_AS_COL'] = '1'
df = pd.read_csv('https://datasets-nixtla.s3.amazonaws.com/air-passengers.csv', parse_dates=['ds'])
df.head()
unique_id ds y
0 AirPassengers 1949-01-01 112
1 AirPassengers 1949-02-01 118
2 AirPassengers 1949-03-01 132
3 AirPassengers 1949-04-01 129
4 AirPassengers 1949-05-01 121

我们通过实例化一个新的 StatsForecast 对象并提供其两个必需参数来拟合模型: https://nixtla.github.io/statsforecast/src/core/models.html * models:模型列表。选择您想要的模型,来自 models 并导入它们。在这个例子中,我们将使用 AutoARIMA 模型。我们将 season_length 设置为 12,因为我们预期每 12 个月会有季节性影响。(参见:季节性周期

所有设置都传递给构造函数。然后您调用其 fit 方法并传入历史数据框。

Note

StatsForecast 通过 Numba 使用 JIT 编译实现其惊人的速度。第一次调用 statsforecast 类时,fit 方法大约需要 5 秒钟。第二次调用 - 一旦 Numba 编译了您的设置 - 它应该少于 0.2 秒。

from statsforecast import StatsForecast
from statsforecast.models import AutoARIMA

sf = StatsForecast(
    models=[AutoARIMA(season_length = 12)],
    freq='M',
)

sf.fit(df)
StatsForecast(models=[AutoARIMA])

predict 方法接受两个参数:预测下一个 h(表示时间范围)和 level

这里的预测对象是一个新的数据框,包含模型名称和 y hat 值的列,以及不确定性区间的列。

forecast_df = sf.predict(h=12, level=[90])
forecast_df.tail()
unique_id ds AutoARIMA AutoARIMA-lo-90 AutoARIMA-hi-90
7 AirPassengers 1961-07-31 633.230774 589.562378 676.899170
8 AirPassengers 1961-08-31 535.230774 489.082153 581.379456
9 AirPassengers 1961-09-30 488.230804 439.728699 536.732910
10 AirPassengers 1961-10-31 417.230804 366.484253 467.977356
11 AirPassengers 1961-11-30 459.230804 406.334930 512.126648

您可以通过调用 StatsForecast.plot 方法并传入您的预测数据框来绘制预测图。

sf.plot(df, forecast_df, level=[90])

下一步

Give us a ⭐ on Github