ARIMA(AutoRegressive Integrated Moving Average,自回归滑动平均整合模型)是时序数据分析与预测中最经典、广泛应用的统计建模方法之一。它特别适用于具有趋势性但非季节性的时间序列。
一、ARIMA模型基本原理
ARIMA模型的目标是对一维时序数据进行建模与预测。它假设未来值是过去值(自回归部分)、过去误差(滑动平均部分)以及差分转化后数据的组合。适合用于平稳或可差分平稳的时间序列数据建模。
二、模型结构与命名:ARIMA(p, d, q)
- p(AutoRegressive,自回归阶数):表示模型使用前p个时间点的数据进行预测。
- d(Integrated,差分阶数):表示为了使时间序列平稳,需要进行多少阶差分。
- q(Moving Average,移动平均阶数):表示模型使用前q个预测误差对当前值进行修正。
ARIMA模型可以表示为:

三、建模流程详解
- 数据预处理:
- 缺失值处理;
- 处理异常值(可选);
- 可视化初步观察趋势和季节性。
- 平稳性检验:
- ADF检验(Augmented Dickey-Fuller):检验序列是否具有单位根。
- 若非平稳(例如存在趋势),则进行差分(d 次)直到平稳。
- 识别模型参数 (p, d, q):
- 使用ACF(自相关函数)和PACF(偏自相关函数)图判断 p 和 q:
- PACF 截尾 → AR(p);
- ACF 截尾 → MA(q);
- 都截尾 → ARMA;
- 若序列明显非平稳,则 d ≥ 1。
- 使用ACF(自相关函数)和PACF(偏自相关函数)图判断 p 和 q:
- 模型拟合:
- 选择多个 (p,d,q) 组合拟合模型,使用信息准则如 AIC、BIC 进行比较;
- 拟合方法一般为最大似然估计。
- 模型诊断:
- 检查残差是否是白噪声(Ljung-Box 检验);
- 检查残差图是否有模式。
- 预测:
- 一旦模型通过诊断,即可使用其进行未来若干步的预测;
- 同时可输出预测区间(置信区间)。
四、参数含义和数学形式

五、ARIMA模型优缺点
优点
- 适用于趋势性时间序列;
- 模型结构明确、理论成熟;
- 对小样本时间序列也有效;
- 具有可解释性(参数含义清晰);
- 支持置信区间预测。
缺点
- 对数据预处理要求高(需平稳性);
- 不擅长捕捉非线性或复杂模式;
- 对季节性数据处理有限(需扩展为 SARIMA);
- 长期预测效果可能不如深度学习模型;
- 难以处理高维或多变量情境。
六、ARIMA的扩展模型
- SARIMA(季节性ARIMA,ARIMA + 季节项):
- 表示为 SARIMA(p,d,q)(P,D,Q)[s];
- 适合具有周期性的时间序列,如气温、电力需求等。
- ARIMAX(带外生变量):
- 增加外部变量X_t,有助于建模因果关系;
- 常用于经济预测、政策建模等。
- VAR(向量自回归):
- 多变量时间序列扩展形式;
- 建模变量间相互影响。
- ARCH/GARCH:
- 适用于金融时间序列,建模方差的时间变化性(波动性建模)。
七、实际应用场景
- 金融市场预测:如股票价格、汇率、利率时间序列建模。
- 销售量预测:商超日销量、电商月销量等。
- 能源消耗预测:电力、天然气、水资源消耗建模。
- 交通流量分析:地铁站进出人数、交通拥堵情况。
- 气象数据预测:气温、降雨量、风速等时序建模。
- 工业设备监控:如传感器数据预测异常趋势等。
八、Python代码简要示例
使用 statsmodels
:
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
# 加载时间序列数据
data = pd.read_csv('timeseries.csv', index_col='Date', parse_dates=True)
# 拟合 ARIMA(1,1,1) 模型
model = ARIMA(data, order=(1, 1, 1))
result = model.fit()
# 模型摘要
print(result.summary())
# 预测未来10步
forecast = result.get_forecast(steps=10)
forecast_mean = forecast.predicted_mean
forecast_ci = forecast.conf_int()
# 可视化预测结果
plt.plot(data, label='Observed')
plt.plot(forecast_mean, label='Forecast')
plt.fill_between(forecast_ci.index, forecast_ci.iloc[:, 0], forecast_ci.iloc[:, 1], color='pink', alpha=0.3)
plt.legend()
plt.show()
ARIMA 模型与其扩展(SARIMA、ARIMAX)以及与深度学习模型(如 LSTM)的比较分析
一、ARIMA 及扩展模型对比:SARIMA 与 ARIMAX
1.1 ARIMA 回顾
- 适用于单变量、非季节性、线性趋势时间序列。
- 建模对象:平稳序列或经差分后的非平稳序列。
1.2 SARIMA(季节性 ARIMA)
定义:SARIMA 模型引入了季节性项,用于建模周期性特征,如月度、季度、年度波动。
表示:SARIMA(p,d,q)(P,D,Q)s
其中:
- p,d,q:非季节项(与 ARIMA 相同);
- P,D,Q:季节项的自回归、差分、滑动平均;
- s:季节周期(如 s=12 表示一年12个月);
示例:电力使用量在每年冬天峰值高,夏天次高,SARIMA 可建模这种季节行为。
1.3 ARIMAX(带外生变量)
定义:引入外生变量 Xt,用于建模因果驱动因素的影响。yt=ARIMA(p,d,q)+βXt+ϵt
适合场景:
- 工业设备故障率预测时,加入环境温度、湿度、载荷等传感器变量;
- 销售预测时,加入促销活动、节假日等干预因子;
- 电梯使用次数预测时,考虑天气、工作日/节假日、楼层人数等因素。
二、与深度学习模型(LSTM)对比分析
特征维度 | ARIMA/SARIMA | ARIMAX | LSTM(Long Short-Term Memory) |
---|---|---|---|
类型 | 线性模型 | 线性+外因 | 非线性神经网络 |
处理特性 | 单变量;需平稳 | 多变量;可建模因果 | 多变量;适用于复杂模式 |
模型解释性 | 高(系数可解释) | 高(可量化外因作用) | 低(为“黑盒”) |
长期预测能力 | 弱(线性) | 一般 | 强(可建模长期依赖) |
对季节性支持 | SARIMA | 限支持 | LSTM 通过序列训练自动捕捉 |
训练数据需求 | 少量样本即可 | 中等 | 需大量数据 |
训练速度 | 快(基于MLE) | 快 | 慢(需GPU/迭代) |
常见场景 | 财务、经济、过程控制 | 工业预测、干预分析 | 电梯故障预测、图像/语音/信号预测等复杂场景 |
总结:
- 若数据线性/弱波动、样本量有限、模型解释性要求高 → 用 ARIMA/ARIMAX;
- 若存在周期性 → SARIMA;
- 若数据多变量、非线性、波动强、数据量大 → LSTM 更优。
三、在工业传感器与电梯系统中的应用比较
3.1 工业传感器(如振动、电流、温度)
模型 | 应用 | 表现 |
---|---|---|
ARIMA | 对单一传感器数据进行短期预测,如电机电流变化趋势 | 准确度高,部署简单 |
SARIMA | 对振动数据中存在周期性变化的场合(如每日运转周期) | 优于 ARIMA |
ARIMAX | 引入温度/负载/转速等传感器数据建模电流趋势 | 可用于故障前兆建模 |
LSTM | 多传感器联合建模;适合异常检测、突变识别 | 准确度高但需大数据训练 |
3.2 电梯故障预测(基于加速度、电流、门体状态等)
- ARIMA:预测某个通道(如门电机电流)的未来趋势值,判断是否异常;
- ARIMAX:考虑振动+温湿度影响门故障,适合建模物理因果机制;
- LSTM:将多个序列(门电流、门速度、电压波形等)统一输入,适合捕捉复杂的故障模式。
例如:
- 若出现门机电流突变 → ARIMA 能短期识别;
- 若在高湿度+频繁开启情况下故障概率上升 → ARIMAX 可量化该风险;
- 若从多个序列中提取“门卡顿前兆模式” → LSTM 最合适。
四、集成建模建议:统计+深度学习融合
在工程实践中,很多团队采取**“统计建模 + 深度模型”的集成策略**:
- 先用 ARIMA 建模并剔除线性部分残差;
- 再将残差部分用 LSTM/GRU 建模,学习非线性波动;
- 最终预测 = ARIMA预测 + LSTM残差修正预测。
这种方式:
- 保留了解释性;
- 又获得了复杂非线性能力;
- 在工业系统中可增强模型稳定性、鲁棒性和准确率。
五、Python 简化对比示例
ARIMAX 示例:
from statsmodels.tsa.statespace.sarimax import SARIMAX
# y: 门机电流时间序列,exog: 外部变量如温度、湿度等
model = SARIMAX(y, exog=exog, order=(1,1,1))
results = model.fit()
forecast = results.get_forecast(steps=10, exog=exog_future)
LSTM 示例(多传感器):
python复制编辑from keras.models import Sequential
from keras.layers import LSTM, Dense
model = Sequential()
model.add(LSTM(64, input_shape=(timesteps, features)))
model.add(Dense(1)) # 预测门电流下一步值
model.compile(loss='mse', optimizer='adam')
model.fit(X_train, y_train, epochs=20, batch_size=32)
完整的ARIMA vs ARIMAX vs LSTM 故障预测实验框架设计
一、应用背景与数据设定
假设我们针对某品牌电梯门系统进行预测性维护,已安装以下传感器:
传感器类型 | 采集内容 | 单位 | 采样频率 |
---|---|---|---|
电机电流传感器 | 门体开合时的电流 RMS | A | 10 Hz(或按周期均值) |
加速度传感器 | 门体振动 RMS | m/s² | 100 Hz → 提取特征 |
温湿度传感器 | 周围环境温度与湿度 | ℃ / %RH | 1 Hz |
状态标签 | 是否发生门卡、卡顿等故障 | 0 或 1 | 由人工标注或异常检测生成 |
我们以电流 RMS 序列为主预测对象,希望能:
- 对电流未来短时间内变化趋势做预测;
- 捕捉潜在故障前兆;
- 比较 ARIMA、ARIMAX、LSTM 模型的优劣。
二、建模目标与预测变量
- 预测目标(y):门体电机电流 RMS(下一时刻或未来 N 步的值)
- 外生变量(ARIMAX)/特征变量(LSTM):
- 振动 RMS(代表机械系统异常)
- 温度(影响门体阻力与电机性能)
- 湿度(影响接触器、轨道)
- 门体运动方向(开/关)
- 电压电平(如有采集)
三、三种模型建模流程设计
3.1 ARIMA 模型流程(单变量)
- 对电流 RMS 数据做差分处理,使之平稳;
- 用 ACF / PACF 判断合适的 (p,d,q) 值;
- 使用
statsmodels.tsa.arima.model.ARIMA
进行拟合; - 预测未来 N 步电流值;
- 残差检验(白噪声、正态性);
- 记录 RMSE / MAE 等指标。
3.2 ARIMAX 模型流程(多变量+因果建模)
- 将电流 RMS 作为目标,振动/温湿度等作为 exog;
- 对各变量做同步与缺失值插补;
- 用
SARIMAX
拟合模型: python复制编辑SARIMAX(endog=y_train, exog=X_train, order=(p,d,q))
- 使用未来外生变量
X_future
预测y_future
; - 分析各外生变量的系数显著性;
- 检查残差、评估性能。
3.3 LSTM 模型流程(深度学习多变量)
- 对所有时间序列归一化(如 MinMaxScaler);
- 以滑窗方式生成训练集:
- 输入:多变量过去 T 步的时间窗序列;
- 输出:电流 RMS 下一步或未来 N 步;
- 网络结构:
- 输入层:[T 步 × n 特征]
- LSTM(或 Bi-LSTM)+ Dropout
- Dense 输出层
- 损失函数:MSE
- 训练验证集划分、Early Stopping
- 预测后逆归一化,记录误差
四、预测性能评估指标
指标 | 含义 | 说明 |
---|---|---|
RMSE | 均方根误差 | 对大偏差惩罚更重 |
MAE | 平均绝对误差 | 对所有误差平等对待 |
MAPE | 平均百分比误差 | 需目标值不为零 |
R² Score | 拟合优度 | 越接近1越好 |
残差分布正态性 | 正态性检验 | 拟合稳定性参考 |
预测时延 | 模型推理速度 | 实时场景重要 |
五、实验设计与对比建议
维度 | ARIMA | ARIMAX | LSTM |
---|---|---|---|
数据需求 | 少量 | 中等 | 较多 |
数据准备 | 仅需目标序列 | 需收集同步外部变量 | 多变量同步窗口处理 |
解释性 | 强 | 强(因果作用) | 弱(黑盒) |
异常前兆识别 | 一般(依赖波动) | 好(引入因果) | 最好(可识别复杂非线性前兆) |
训练时间 | 快 | 快 | 较长(需GPU) |
适合场景 | 简单趋势预测 | 多因素波动建模 | 高复杂故障预测、特征联动挖掘 |
建议:
- 若系统数据不稳定、复杂关联多,选用 LSTM;
- 若希望模型可部署在低算力终端,推荐 ARIMAX;
- 若数据样本少、先验证趋势可用性 → 先试 ARIMA 作为 baseline。
六、可视化与结果解释建议
- 预测 vs 实际曲线:
- 折线图对比3种模型预测结果与实际数据;
- 可标记“故障前10分钟”处,看哪个模型提前识别出趋势异常。
- 残差分布图:
- 检查是否均值为0、分布是否近似正态;
- 可用 Q-Q 图、Shapiro-Wilk 测试辅助判断。
- 特征重要性分析(ARIMAX):
- 查看模型系数显著性(t值/P值);
- 分析温度/湿度等外部因素对电流波动影响。
- 预测误差条形图(RMSE, MAE, MAPE):
- 明确量化三种模型性能优劣。