ARIMA模型基础入门:从原理到实战的时间序列分析指南

1次阅读
没有评论

共计 1602 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

为什么需要时间序列分析?

假设你在一家电商公司负责库存管理,每天都会记录商品的销售量。突然有一天,老板问你:” 下个月的销量会是多少?” 这时候就需要用到时间序列分析。通过分析历史销售数据中的趋势、季节性等规律,ARIMA 模型能帮助我们做出相对准确的预测,避免库存积压或断货风险。

ARIMA 模型基础入门:从原理到实战的时间序列分析指南

时间序列模型家族

在开始 ARIMA 之前,先了解几个基础模型:

  1. AR(自回归)模型
  2. 公式:$X_t = c + \sum_{i=1}^p \phi_i X_{t-i} + \epsilon_t$
  3. 特点:用历史值的线性组合预测当前值

  4. MA(移动平均)模型

  5. 公式:$X_t = \mu + \epsilon_t + \sum_{i=1}^q \theta_i \epsilon_{t-i}$
  6. 特点:考虑历史误差对当前值的影响

  7. ARMA 模型

  8. AR 和 MA 的组合,适合平稳时间序列

  9. ARIMA 模型

  10. 在 ARMA 基础上增加了差分 (d) 处理非平稳序列
  11. 完整公式涉及差分运算,记为 ARIMA(p,d,q)

实战五步法

第一步:数据平稳性检验

使用 ADF 检验判断是否需要差分:

from statsmodels.tsa.stattools import adfuller
result = adfuller(ts_data)
print('p-value:', result[1])  # p<0.05 则认为平稳

如果 p 值 >0.05,就需要差分。通常先尝试 1 阶差分:

diff_1 = ts_data.diff().dropna()

第二步:确定 p 和 q 参数

画出 ACF 和 PACF 图:

from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
plot_acf(diff_1)  # 看截尾点确定 q
plot_pacf(diff_1)  # 看截尾点确定 p 

  • ACF 拖尾 +PACF 截尾 → AR 模型
  • ACF 截尾 +PACF 拖尾 → MA 模型
  • 都拖尾 → ARMA 模型

第三步:建模训练

from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(ts_data, order=(p,d,q))  # 填入前面确定的参数
result = model.fit()
print(result.summary())  # 查看模型系数和统计量

第四步:模型诊断

检查残差是否符合白噪声:

residuals = pd.DataFrame(result.resid)
residuals.plot(kind='kde')  # 查看分布
# Q- Q 图检验正态性
from scipy import stats
stats.probplot(residuals, plot=plt)

第五步:预测可视化

# 未来 30 天的预测
forecast = result.get_forecast(steps=30)
# 绘制带置信区间的预测图
fig = ts_data.plot()
forecast.predicted_mean.plot(ax=fig)
fig.fill_between(forecast.conf_int().index,
                forecast.conf_int().iloc[:,0],
                forecast.conf_int().iloc[:,1], alpha=0.2)

新手避坑指南

  1. 过差分识别
  2. 如果差分后数据的方差反而增大,说明可能过差分
  3. 检查 ACF 图:出现周期性振荡是过差分信号

  4. 季节性处理

  5. 在数据呈现明显周期性时(如每年 12 月销售高峰)
  6. 考虑使用 SARIMA 模型,增加季节性参数

思考与延伸

  1. 当数据出现突然的峰值或谷值(比如疫情期间的销量突变),可以考虑:
  2. 使用带外部变量的 ARIMAX 模型
  3. 对突变点前后数据分段建模

  4. SARIMA 适合有明显季节性的数据,比如:

  5. 服装销售的季度性波动
  6. 旅游业的节假日效应

结语

通过这个完整的案例,我们从数据检查到预测可视化走完了 ARIMA 建模的全流程。建议新手先用简单数据(如每日气温记录)练习,再尝试应用到业务场景。记住:没有完美的模型,只有不断迭代优化的过程。

正文完
 0
评论(没有评论)