【第七章:时间序列模型】2.时间序列统计模型与神经网络模型-(2)适用广泛的时间序列模型:Arima模型

第七章:时间序列模型

第二部分:时间序列统计模型与神经网络模型

第二节:适用广泛的时间序列模型:Arima模型


一、引言:为什么 ARIMA 是时间序列预测的核心模型

ARIMA 模型(AutoRegressive Integrated Moving Average,自回归积分滑动平均模型)是时间序列分析中最经典、最通用、最稳定 的统计模型之一。

无论在经济学、金融市场、天气预测、流量分析 还是工业监控中,ARIMA 都是"传统预测模型的基石"。

代表性特点:

  • 可捕捉序列的趋势性与随机性

  • 能处理非平稳时间序列(通过差分实现)

  • 参数少、可解释性强


二、ARIMA 模型的结构组成

ARIMA 模型由三部分组成:

ARIMA(p, d, q)

参数 含义 对应模块
p 自回归(AR)阶数 与过去观测值相关
d 差分(I)阶数 消除趋势,稳定序列
q 滑动平均(MA)阶数 与过去误差相关

最终模型结合三者:


三、模型原理分解

1. 自回归(AR)

核心思想:当前值依赖于过去若干时刻的值。

举例:

今天的温度与前几天的温度强相关。

2. 差分(I)

差分用于去除趋势性,使序列平稳。

一阶差分:

若仍不平稳,可进行二阶差分:

3. 移动平均(MA)

当前值受过去误差项的影响。


四、ARIMA 模型建立的完整流程

1.数据可视化与平稳性检测

  • 通过折线图观察趋势与季节性

  • 使用 ADF(Augmented Dickey-Fuller)检验 判断平稳性

2.差分处理

  • 若不平稳 → 进行一阶或二阶差分

3.参数选择

  • 通过 ACF(自相关函数)PACF(偏自相关函数) 确定 p 与 q

  • 或使用 auto_arima 自动调参

4.模型训练与残差分析

  • 检查残差是否为白噪声

  • 若残差仍有结构性 → 重新调整参数

5.模型预测

  • 使用 forecast()predict() 进行未来时刻预测

五、实战案例:使用 ARIMA 预测月度销量

python 复制代码
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.arima.model import ARIMA
from pmdarima import auto_arima

# 1. 加载示例数据
data = pd.read_csv('https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv')
data['Month'] = pd.to_datetime(data['Month'])
data.set_index('Month', inplace=True)
series = data['Passengers']

plt.plot(series)
plt.title('航空旅客数量变化')
plt.show()

# 2. 平稳性检验
adf_result = adfuller(series)
print(f"ADF统计量: {adf_result[0]}, p值: {adf_result[1]}")

# 3. 自动参数选择
model_auto = auto_arima(series, seasonal=False, trace=True)
print(model_auto.summary())

# 4. 拟合模型
model = ARIMA(series, order=model_auto.order)
fit = model.fit()
print(fit.summary())

# 5. 残差分析
residuals = fit.resid
plt.figure(figsize=(10,4))
plt.subplot(121)
plt.plot(residuals)
plt.title("残差序列")
plt.subplot(122)
plt.hist(residuals, bins=20)
plt.title("残差分布")
plt.show()

# 6. 未来预测
forecast = fit.forecast(steps=12)
plt.plot(series, label='历史数据')
plt.plot(forecast, label='未来预测', color='red')
plt.legend()
plt.show()

运行结果:

模型能够平滑捕捉月度趋势,并生成合理的未来12个月预测。


六、模型效果与误差评估

常用指标:

指标 公式 含义
MAE ( \frac{1}{n}\sum y_t - \hat{y}_t
RMSE ( \sqrt{\frac{1}{n}\sum (y_t - \hat{y}_t)^2} ) 强调大误差惩罚
MAPE ( \frac{100}{n}\sum \left \frac{y_t - \hat{y}_t}{y_t}\right
python 复制代码
from sklearn.metrics import mean_absolute_error, mean_squared_error
import numpy as np

y_true = series[-12:]
y_pred = forecast[:12]

mae = mean_absolute_error(y_true, y_pred)
rmse = np.sqrt(mean_squared_error(y_true, y_pred))
print(f"MAE: {mae:.2f}, RMSE: {rmse:.2f}")

七、ARIMA 的优缺点总结

优点 缺点
理论成熟,可解释性强 难捕捉复杂非线性关系
适合小数据量预测 无法自动建模季节性,需要 SARIMA 扩展
模型稳定、参数可控 对平稳性要求高,预处理复杂

八、实战经验与应用场景

  • 电商销量预测:通过 ARIMA 捕捉商品月销量趋势。

  • 经济指标分析:GDP、CPI、PMI 等宏观经济数据趋势预测。

  • 能源/交通预测:用 ARIMA 预测电力负荷、客流量、油价波动。

  • 异常检测:通过残差序列判断异常时间点。


九、小结

ARIMA 模型的三大核心能力:

  1. 自回归:利用历史值;

  2. 差分:去除趋势;

  3. 移动平均:建模随机扰动。

即使在深度学习盛行的今天,ARIMA 仍是企业、金融机构和科研项目中的强力基线模型

它帮助我们理解时间序列的结构,为更复杂模型(如 LSTM、Transformer)打下基础。

一句话总结:
"ARIMA 是传统时序分析的瑞士军刀------小巧、精准、实用。"

相关推荐
Coovally AI模型快速验证5 分钟前
去噪扩散模型,根本不去噪?何恺明新论文回归「去噪」本质
人工智能·深度学习·算法·机器学习·计算机视觉·数据挖掘·回归
歌_顿12 分钟前
attention、transform、bert 复习总结 1
人工智能·算法
snpgroupcn22 分钟前
如何在SAP中实现数据验证自动化?5天缩短验证周期,提升转型效率的3大关键策略
运维·人工智能·自动化
Master_oid23 分钟前
机器学习23:对抗攻击(adversarial attack)(上)
人工智能·机器学习
全知科技30 分钟前
AI赋能数据分类分级,迈向智能化数据治理
大数据·人工智能
2501_941664961 小时前
人工智能赋能智慧金融互联网应用:智能风控、投资分析与客户管理实践探索》
人工智能
paopao_wu1 小时前
目标检测YOLO[03]:推理入门
人工智能·yolo·目标检测
让学习成为一种生活方式1 小时前
ANNEVO v2.1安装与使用--生信工具61
人工智能
_张一凡1 小时前
【AIGC面试面经第六期】AI视频-训练与微调技相关问答
人工智能·面试·aigc
智算菩萨2 小时前
《从弱人工智能到强人工智能:概念、边界与技术谱系全解析》
人工智能