1. 项目概述:时间序列预测与ARMA模型
时间序列预测一直是数据分析领域的硬骨头,从股票价格到气象数据,从设备监控到销售预测,几乎每个行业都离不开这个基础工具。在众多预测方法中,ARMA(自回归移动平均)模型就像一位经验丰富的老将,虽然诞生于上世纪70年代,但至今仍在许多场景下展现出惊人的预测能力。
我最近在帮一家连锁零售企业做销售预测时,就重新审视了这个经典模型。相比现在流行的LSTM、Prophet等新方法,ARMA模型在中小规模数据集上的表现往往出人意料地好,而且计算成本低、解释性强。特别是在处理平稳时间序列时,它的预测精度常常能与复杂模型一较高下。
提示:ARMA模型特别适合具有明显周期性、趋势性的业务数据,比如日销售额、月用电量等。当数据量不大(少于10万条)且变化规律相对稳定时,它通常是性价比最高的选择。
2. ARMA模型核心原理拆解
2.1 模型数学基础
ARMA模型实际上是两个模型的组合:AR(自回归)部分和MA(移动平均)部分。用数学公式表示就是:
code复制X_t = c + Σ(φ_i * X_{t-i}) + Σ(θ_j * ε_{t-j}) + ε_t
其中:
- φ是自回归系数(AR部分)
- θ是移动平均系数(MA部分)
- ε是白噪声误差项
- p是AR的阶数,q是MA的阶数
这个看似简单的公式背后有几个关键假设:
- 时间序列必须是弱平稳的(均值和方差不随时间变化)
- 误差项ε_t是白噪声(均值为0,方差恒定,无自相关)
- 模型参数需要满足可逆性条件
2.2 模型选择的关键考量
在实际项目中,我们通常需要决定使用AR、MA还是组合的ARMA模型。我的经验法则是:
-
先看自相关图(ACF):
- 如果自相关系数缓慢衰减 → 考虑AR部分
- 如果自相关系数突然截尾 → 考虑MA部分
-
再看偏自相关图(PACF):
- 偏自相关系数截尾 → 确定AR的阶数p
- 偏自相关系数拖尾 → 可能需要MA部分
-
最终通过AIC/BIC准则选择最优模型:
- AIC更注重模型拟合度
- BIC更注重简约性,样本量大时更可靠
3. Matlab实操全流程
3.1 数据准备与预处理
假设我们有一个月的日销售额数据,存储在Excel文件中。首先进行数据导入和可视化:
matlab复制% 导入数据
data = readtable('sales_data.xlsx');
dates = datetime(data.Date, 'InputFormat', 'yyyy-MM-dd');
sales = data.Sales;
% 绘制原始序列
figure
plot(dates, sales)
title('原始销售数据')
xlabel('日期')
ylabel('销售额')
grid on
关键预处理步骤:
- 处理缺失值(线性插值或前后填充)
- 检验平稳性(ADF检验)
- 必要时做差分或对数变换
matlab复制% ADF检验平稳性
[h, pValue] =
解锁全文
加入我们的会员,获取最新、最热、最精彩的开发者技术内容