1

SARIMAX 模型需要 q、d、q、m 参数才能正常运行。

  1. P 代表 AutoRegressive 模型的阶数,可以使用 PACF 图进行光学估计
  2. D 代表使时间序列静止的差异数,可以使用 adfuller 测试来估计,同时进行差异循环直到它变得静止。
  3. Q 代表 MovingAverage 模型的阶数,可以使用 ACF 图进行光学估计。
  4. M 代表表示季节性的周期数,可以使用seasonal_decompose 函数进行光学估计。

通常,如下所示的自定义 SARIMAX Grid CV 能够找到最佳参数集。

p = range(min_series_p, max_series_p+1)
d = range(min_series_d, max_series_d+1)
q = range(min_series_q, max_series_q+1)
matrix = list(it.product(p, d, q))
pdq = [(x[0], x[1], x[2]) for x in matrix]
pdq_s = [(x[0], x[1], x[2], sts_series_s) for x in matrix]
for param in pdq:
    for param_s in pdq_s:
      if param[0] == param_s[0] and param[1] == param_s[1] and param[2] == param_s[2]:
        mod = SARIMAX(ts.to_numpy(),   order=param,   seasonal_order=param_s)
        model_fit = mod.fit(iprint=0, disp=0, method_kwargs={"warn_convergence": False})

我想知道是否有任何方法可以以编程方式提取 p、q、m 值甚至它们的范围以减少网格,从而减少寻找最佳模型顺序的处理时间。

min_series_p = method()?
max_series_p = method()?
min_series_q = method()?
max_series_q = method()?
sts_series_m = method()?

有任何想法吗?

4

0 回答 0