0Pricing
Learn AI with Python · 课时

ARIMA 与 SARIMA 模型

AR、MA、I 组件,使用 ACF/PACF 选择参数,以及使用 statsmodels 拟合 ARIMA。

ARIMA 与 SARIMA 模型 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

什么是 ARIMA?

ARIMA 是 AutoRegressive Integrated Moving Average 的缩写。它使用三个部分对平稳序列进行建模:自回归(p)、积分/差分(d)以及误差的移动平均(q),写作 ARIMA(p, d, q)。

AR(p):自回归

AR 项根据自身前面 p 个值的线性组合预测下一个值。如果今天的值 strongly 取决于最近几天的值,您就需要使用非零的 p。

例如:p=2 使用最近的两个观测值作为预测变量。

I(d):积分/差分

I 项表示使序列平稳所需的d 阶差分,正是您在上一课中通过 ADF 检验得到的 d。d=1 可以移除线性趋势。

MA(q):移动平均

MA 项使用过去 q 个预测误差(冲击)来建模下一个值。它可以捕捉 AR 部分无法处理的短期噪声修正。

在 statsmodels 中拟合 ARIMA

传入您的序列作为 endog,并传入选定的阶数元组。

from statsmodels.tsa.arima.model import ARIMA

model = ARIMA(endog=series, order=(p, d, q))
fit = model.fit()
print(fit.summary())

进行预测

拟合完成后,使用 forecast 或 get_forecast 生成未来值,后者还会提供置信区间。

preds = fit.forecast(steps=12)        # next 12 periods
fc = fit.get_forecast(steps=12)
ci = fc.conf_int()                    # confidence intervals

ACF 和 PACF 图

要选择 p 和 q,请检查自相关图:

  • ACF(自相关)有助于选择 q(MA 阶数)。
  • PACF(偏自相关)有助于选择 p(AR 阶数)。

请寻找相关性突然截断的滞后阶数。

from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

plot_acf(series.diff().dropna())
plot_pacf(series.diff().dropna())

使用 AIC 和 BIC 选择阶数

AIC 和 BIC 会在评估模型拟合效果的同时惩罚模型复杂度。数值越低越好。请拟合多个 (p,d,q) 候选模型,并选择 AIC/BIC 最低的模型;BIC 对额外参数的惩罚更强。

print("AIC:", fit.aic)
print("BIC:", fit.bic)

网格搜索阶数

一种常见方法是遍历 p、d、q 的较小取值范围,分别进行拟合,并保留 AIC 最低的模型。诸如 pmdarima.auto_arima 的库可以自动完成这一搜索。

best = None
for p in range(3):
    for q in range(3):
        try:
            f = ARIMA(series, order=(p, 1, q)).fit()
            if best is None or f.aic < best[1]:
                best = ((p, 1, q), f.aic)
        except Exception:
            pass
print(best)

用于季节性的 SARIMA

SARIMA 增加了季节性部分:(P, D, Q, m),其中 m 是季节长度(对于按月记录的年度数据,m 为 12)。它可以处理普通 ARIMA 无法处理的重复模式。

from statsmodels.tsa.statespace.sarimax import SARIMAX

model = SARIMAX(series,
    order=(1, 1, 1),
    seasonal_order=(1, 1, 1, 12))
fit = model.fit()

ARIMA 与 SARIMA

  • ARIMA(p,d,q):处理趋势和短期依赖,不处理季节性。
  • SARIMA(p,d,q)(P,D,Q,m):增加季节性项以处理重复周期。

如果您的分解结果显示出明显的季节性,请选择 SARIMA。

快速检查

请检验您对 ARIMA 的了解。

回顾

您学习了 ARIMA(p,d,q):AR 使用过去的值,I 表示差分阶数,MA 使用过去的误差。您使用 ARIMA(endog, order=...) 进行拟合,通过 ACF/PACF 和 AIC/BIC 选择阶数,并将模型扩展为用于处理季节性的 SARIMA。下一步:使用 Prophet 自动进行预测。

常见问题解答

「ARIMA 与 SARIMA 模型」课时是免费的吗?

是的 — 「ARIMA 与 SARIMA 模型」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「ARIMA 与 SARIMA 模型」这节课中我会学到什么?

AR、MA、I 组件,使用 ACF/PACF 选择参数,以及使用 statsmodels 拟合 ARIMA。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「ARIMA 与 SARIMA 模型」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 时间序列的组成与平稳性
  2. ARIMA 与 SARIMA 模型
  3. 使用 Prophet 自动预测
  4. 使用 LSTM 进行时间序列预测
← 返回 Learn AI with Python