4、经典统计预测模型:持续法、ARIMA、STL与马尔可夫链

各位好,我是老张。在风电行业摸爬滚打了十几年,今天咱们聊聊经典统计预测模型。说实话,虽然现在深度学习很火,但这些经典方法在实际工程中依然很能打。我见过不少项目,用简单的持续法就能解决80%的问题。

4.1 持续法(Persistent Model)——最朴素的基准

持续法,说白了就是“明天和今天差不多”。在风电预测里,它假设未来时刻的功率等于当前时刻的功率。听起来有点傻,对吧?但你别小看它。

核心思想: ŷ(t+Δt) = y(t)

其中 y(t) 是当前时刻的实际功率,ŷ(t+Δt) 是未来 Δt 时刻的预测值。

我在项目里经常拿持续法当基准模型。为什么?因为它简单到不可能出错。你想想看,如果连持续法都比不过,那你的复杂模型肯定有问题。

我的经验: 持续法在超短期预测(15分钟以内)表现相当不错。我曾在某风电场做过测试,持续法在10分钟预测的RMSE只比LSTM差5%左右。但超过1小时,误差就直线上升了。

4.2 ARIMA模型——时间序列的经典武器

ARIMA,全称是自回归积分滑动平均模型。名字挺唬人,其实拆开看就三部分:

  • AR(自回归): 用过去的值预测未来的值
  • I(差分): 让非平稳数据变平稳
  • MA(滑动平均): 用过去的误差修正预测

ARIMA模型的数学表达式是这样的:

ARIMA(p,d,q) 模型:
(1 - φ₁B - ... - φₚBᵖ)(1-B)ᵈ y(t) = (1 + θ₁B + ... + θ_qBᵠ) ε(t)

其中:
p = 自回归阶数
d = 差分阶数  
q = 滑动平均阶数
B = 滞后算子
ε(t) = 白噪声

嗯,这里要注意。风电功率数据通常是非平稳的,所以d至少取1。我习惯先用ADF检验确认平稳性。

4.2.1 实现步骤

  1. 数据预处理: 处理缺失值、异常值。我遇到过风速仪被冻住的情况,那数据简直没法看。
  2. 平稳性检验: 用ADF或KPSS检验。不平稳就差分。
  3. 定阶: 看ACF和PACF图。ACF拖尾、PACF截尾选AR;反之选MA。
  4. 模型拟合: 用AIC/BIC准则选最优参数。
  5. 残差检验: 残差应该是白噪声。如果不是,重新定阶。

避坑指南: 我曾经在一个项目里直接用了默认的ARIMA(1,1,1),结果预测值全是平的。后来才发现,风电功率有很强的日周期性,需要加入季节项。所以,别偷懒,老老实实做模型诊断。

4.3 季节分解法(STL)——把复杂问题拆开看

STL(Seasonal-Trend decomposition using LOESS)是一种强大的时间序列分解方法。它把原始序列拆成三部分:

  • 趋势分量(Trend): 长期变化方向
  • 季节分量(Seasonal): 周期性波动
  • 残差分量(Residual): 随机波动

为什么STL在风电预测中好用?因为风电功率有明显的日周期和年周期。白天风大,晚上风小;冬天风大,夏天风小。把这些周期拆出来,预测就简单多了。

# Python实现STL分解
from statsmodels.tsa.seasonal import STL

# 假设data是风电功率时间序列,频率为每小时
stl = STL(data, period=24)  # 24小时周期
result = stl.fit()

trend = result.trend
seasonal = result.seasonal
residual = result.resid

# 预测时,分别预测三个分量再相加
# 趋势用线性回归,季节用周期外推,残差用ARIMA

我的习惯: 先用STL分解看看数据长什么样。有一次我发现残差里还有明显的波动,原来是我忽略了天气系统的过境影响。STL就像一面照妖镜,能帮你发现数据里的猫腻。

4.4 马尔可夫链——状态转移的智慧

马尔可夫链,说白了就是“未来只跟现在有关,跟过去无关”。在风电预测里,我们把功率分成几个状态(比如低、中、高),然后看状态之间怎么转移。

举个例子:

状态定义:
S1: 0-30% 额定功率(低风)
S2: 30-70% 额定功率(中风)
S3: 70-100% 额定功率(高风)

转移概率矩阵 P:
       S1    S2    S3
S1    0.6   0.3   0.1
S2    0.2   0.5   0.3
S3    0.1   0.3   0.6

解释:如果当前是S1(低风),
下一时刻有60%概率保持S1,
30%概率变成S2,
10%概率变成S3。

马尔可夫链的好处是计算快、可解释性强。我曾在某山区风电场用过,那里的风变化剧烈,马尔可夫链反而比复杂模型更准。

关键点: 马尔可夫链的预测精度取决于状态划分是否合理。我建议用K-means聚类来划分状态,而不是凭经验拍脑袋。另外,高阶马尔可夫链(考虑前两个时刻的状态)有时效果更好。

4.5 四种模型的对比与选择

模型 适用场景 优点 缺点
持续法 超短期(≤15min) 简单、零成本 长期预测误差大
ARIMA 短期(1-6小时) 理论成熟、可解释 对非线性捕捉差
STL 中期(6-24小时) 能处理周期和趋势 分解参数需调优
马尔可夫链 状态变化明显的场景 计算快、直观 状态划分主观

你想想看,实际项目中该用哪个?我的建议是:先跑持续法做基准,然后根据预测时长选模型。如果时间紧,ARIMA是最稳妥的选择。

4.6 知识体系总览

下面这张图总结了四种模型的核心逻辑和适用场景,方便你快速回顾:

经典统计预测模型知识体系 风电功率预测 持续法 ŷ(t+Δt) = y(t) 超短期预测基准 ARIMA(p,d,q) 自回归+差分+滑动平均 短期预测主力 STL分解 趋势+季节+残差 中期预测利器 马尔可夫链 状态转移概率矩阵 非线性场景适用 选择建议: 超短期用持续法 → 短期用ARIMA → 中期用STL → 复杂场景用马尔可夫链

好了,这四种模型就聊到这儿。每种模型都有它的脾气,关键是要理解数据、理解场景。下次你遇到风电预测问题,不妨从这些经典方法开始试起。

专注资料整理