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 实现步骤
- 数据预处理: 处理缺失值、异常值。我遇到过风速仪被冻住的情况,那数据简直没法看。
- 平稳性检验: 用ADF或KPSS检验。不平稳就差分。
- 定阶: 看ACF和PACF图。ACF拖尾、PACF截尾选AR;反之选MA。
- 模型拟合: 用AIC/BIC准则选最优参数。
- 残差检验: 残差应该是白噪声。如果不是,重新定阶。
避坑指南: 我曾经在一个项目里直接用了默认的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 知识体系总览
下面这张图总结了四种模型的核心逻辑和适用场景,方便你快速回顾:
好了,这四种模型就聊到这儿。每种模型都有它的脾气,关键是要理解数据、理解场景。下次你遇到风电预测问题,不妨从这些经典方法开始试起。