【第七章:时间序列模型】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 是传统时序分析的瑞士军刀------小巧、精准、实用。"

相关推荐
传说故事几秒前
【论文自动阅读】视频生成模型的Inference-time物理对齐 with Latent World Model
人工智能·深度学习·音视频·视频生成
半臻(火白)几秒前
Clawbot:重新定义AI的「行动派」革命
人工智能
造夢先森3 分钟前
Clawdbot(OpenClaw)安装部署教程
人工智能·微服务·云原生
攻城狮7号4 分钟前
宇树 开源 UnifoLM-VLA-0 大模型:给人形机器人装上通用的“直觉大脑”
人工智能·机器人·具身智能·宇树科技·unifolm-vla-0
aihuangwu8 分钟前
ChatGPT和Gemini图表怎么导出
人工智能·ai·chatgpt·deepseek·ds随心转
Bits to Atoms12 分钟前
宇树G1语音助手完整开发指南(下)——从零构建智能知识库对话系统
人工智能·机器人·音视频·语音识别
Katecat9966327 分钟前
古巽伽罗语字符识别与分类_Cascade-Mask-RCNN_RegNetX-400MF实现
人工智能·目标跟踪
说文科技31 分钟前
大模型项目实战之dpo微调
人工智能·算法
周杰伦_Jay37 分钟前
【Mac 上命令行安装 Claude Code】(Claude 的终端版 AI 编程助手)完整指南
人工智能·macos·claude code
一只理智恩42 分钟前
AI辅助,两天实现一个IM系统?
人工智能