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 intervalsACF 和 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 反馈 — 无需本地设置。
此课程中的所有课时
- 时间序列的组成与平稳性
- ARIMA 与 SARIMA 模型
- 使用 Prophet 自动预测
- 使用 LSTM 进行时间序列预测