这两年我在做新能源功率预测系统改造时,最常被调度侧的人问的一句话是:"能不能别只给我一条曲线?"一开始我没太当回事,后来才意识到,当风光的渗透率上来以后,电网的运行方式已经从"确定性安排"转向"不确定性决策",你只给一条预测曲线,对方根本没法评估风险。这也是为什么"考虑时空相关性的源荷功率概率建模和概率预测方法"这个方向会从论文里火到工程现场——它不是学术圈的自嗨,而是实际调度中真真切切需要的东西。
这篇文章我想从工程和算法结合的角度,把源荷概率建模里最核心的几个问题拆开讲清楚:为什么确定性预测不够用、时空相关性到底在描述什么、主流的概率建模路线有哪些、以及真的要在项目里落地一套时空相关概率预测时,会遇到哪些文档里不会写的坑。
1. 新能源占比高了以后,为什么"点预测"越来越不够用
1.1 从一次调度偏差说起:确定性预测的极限
先说一个我实际经历过的场景。某个区域内有好几个集中式光伏电站,某天午后一片云系从西向东移动,覆盖了其中三个站。这三个站的点预测结果几乎是同时偏离实际出力,而且偏移方向完全一致:预测给的是80兆瓦,实际只有40兆瓦,三个站加起来的偏差就接近120兆瓦。这个偏差本身不算离谱,问题在于它的"方向一致性"——如果是几个独立随机误差,正负相消,系统里还能容忍;一旦误差高度相关,叠加后的总偏差会远超任何单点误差的想象。
这就是确定性预测或者说点预测的天然极限:它只告诉你一个期望值,无法告诉你偏差可能有多大,更无法告诉你多个场站之间的偏差会不会同时发生。风电出力的预测误差往往不是零均值的,在冷锋过境、大风过程启动或骤停的时候,误差会出现明显的偏态和厚尾;光伏在云层快速变化时也是类似。单纯看一条曲线,你会觉得系统还行,但实际风险全藏在误差分布里。
当调度侧拿着点预测去做备用容量决策、机组组合、联络线计划的时候,他们最关心的不是"明天中午光伏大概发多少",而是"如果光伏实际出力比预测低20%,够不够补上"。这个问题,点预测根本回答不了。
1.2 概率预测到底输出什么:不只是多几条曲线
很多人对概率预测有个误解,以为就是给出一个"乐观值"和"悲观值",或者画一个扇形图就算完事。严格来说,概率预测输出的是一个完整的概率分布,或者一组能够刻画分布信息的统计量,常见落地形式有三种:
第一种是预测区间,比如给出10%到90%分位数覆盖的区间,告诉你"有80%的可能性出力落在这个区间内"。第二种是分位数预测,一次给出多个分位点,比如5%、10%、25%、50%、75%、90%、95%,这组数其实已经能近似还原出累计分布函数。第三种是场景集合,直接生成若干条可能出现的功率时间曲线,每条场景在时空相关性上都尽可能贴近真实过程。
我个人的体会是,调度部门最欢迎的是场景集,因为它能直接塞进随机优化模型,跟安全约束经济调度结合;而区间和分位数更适合做可视化、风险预警和人工决策参考。不管哪种形式,目标都是把"不确定性"从定性描述变成定量输入,让决策者知道最坏情况发生的概率到底有多大。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 时空相关性:源荷功率建模里最容易被低估的一环
2.1 时间维度:功率序列不是白噪声,爬坡和惯性都藏在自相关里
先看时间维度。源荷功率时间序列最显著的特征是强自相关:这个时刻的出力跟上一时刻、上上一时刻高度相关。风电出力受大气惯性影响,分钟级到小时级的波动是有"记忆"的,不会像掷骰子一样每个时刻独立;光伏出力虽然受云层遮挡影响大,但云层移动也有时间和空间上的连续性,所以15分钟级别的出力序列依然有明显的时序依赖。
这种时间相关性如果不建模,会出现一个很典型的错误:当你用独立采样的方式生成未来场景时,得到的功率曲线是高频抖动的"毛刺"序列,一会儿冲到满发,一会儿跌到接近零,完全没有真实功率应有的平滑爬坡特征。这种伪场景拿去跑潮流计算或机组组合,结果完全不可信。
时间相关性另一个重要体现是预测误差的持续性。假设某个时刻因为天气过程突变导致预测偏高,下一个时刻误差往往会维持偏高方向,而不是立刻回到零均值。这意味着误差序列也存在自相关,如果只用白噪声假设去做概率量化,区间就会偏窄,看起来预测很准,实际覆盖率和可靠性都不达标。
2.2 空间维度:相邻场站、源与荷之间的"看不见的耦合"
空间相关性往往比时间相关性更容易被忽略,因为它在数据分布上不那么直观,但对系统级结果的影响更大。
先看新能源场站内部的空间相关。同一个区域内的风电场,同一条冷空气带过境时,所有风电场几乎同时进入大风过程,出力一起爬升;同一个云团扫过一片光伏集群时,所有光伏电站出力一起下跌。这种空间相关性的本质是"共享气象驱动"——距离越近,气象条件越相似,出力相关性越高。德国和北欧的研究里大量提到这种效应,国内西北、华北这些新能源基地同样明显。
再看源和荷之间的相关。这层更隐蔽,但恰恰是"源荷功率概率建模"这个说法里最有价值的部分。以高比例分布式光伏接入的配电网为例,白天光伏大发时段往往也是用电高峰时段,但光伏出力会把净负荷"压低",导致源荷之间呈现特定的相关结构。如果不把这种耦合关系建出来,只是各自单独做概率预测,再简单叠加成净负荷分布,得到的结果会明显失真——偏移程度完全取决于光伏渗透率和源荷相关强度。
2.3 忽略时空相关性会带来哪些实际后果
这个可以用一个很直观的对比来看:
| 场景 | 未考虑时空相关性 | 考虑时空相关性 |
|---|---|---|
| 单个场站预测区间 | 看似合理,但覆盖率可能不足 | 区间宽度和实际波动匹配 |
| 区域总功率场景 | 各站场景被"抹平",总波动被低估 | 保留各站同涨同跌的联动信息 |
| 系统备用决策 | 备用可能不足或过度保守 | 备用需求与真实风险匹配 |
| 线路潮流评估 | 低估了同时波峰叠加的风险 | 能识别出多站同时高发的极端场景 |
换句话说,不考虑时空相关性的概率预测,最大的问题不是"预测不准",而是"场景失真"。系统级应用对场景的联合分布非常敏感,一个低估了空间相关性的场景集,会让随机优化算法认为所有不确定源可以互相抵消,从而给出偏激进的运行方案;反过来,如果高估了相关性,又会把系统推向过度保守。
3. 概率建模的主流技术路线怎么选
3.1 参数化方法:从正态分布假设到高斯混合模型
概率建模最简单的做法是假设预测误差服从正态分布:用历史误差算出均值和方差,区间就自然出来了。这个方法在早期负荷预测里非常流行,但用在新能源功率上很快就不够用了——风电和光伏的误差分布经常是偏态的,而且有厚尾,尤其是极端天气条件下,误差分布甚至会出现明显的多峰特征。
正因如此,很多团队退到高斯混合模型(GMM)上。GMM的本质是用多个高斯分布去逼近任意复杂分布,再配合期望最大化(EM)算法做参数估计。我见过一个实际案例,用三组分GMM拟合某风电场冬季的功率预测误差,效果比单高斯分布好很多,尤其是尾部拟合精度提升明显。这个思路适合误差分布中等复杂、数据量充足的场景,优点是计算轻、可解释性强、容易部署。
但参数化方法有个共同局限:对"分布形状"的假设会限制上限。如果你假设了GMM,最后拟合出的分布一定是若干个高斯分布的叠加,哪怕真实分布有更复杂的结构,也表达不出来。
3.2 Copula:把边缘分布和相关结构拆开来建模
当需要显式刻画多个变量之间的相关关系时,Copula是绕不开的工具。Copula的核心思想来自Sklar定理:一个联合分布可以分解为各个变量的边缘分布和描述变量间依赖结构的Copula函数两部分。翻译成人话就是——先单独把每个场站的边际分布建模好,再用一个Copula函数把"它们之间如何联动"这个结构抓出来。
实际应用中,Gaussian Copula比较常用,因为它参数少、估计方便;但如果要处理极端事件的同时发生(比如两个风电场同时处于极低出力),t-Copula会更好,因为它在尾部保留了更强的相关性。也有用Clayton、Gumbel这类阿基米德Copula的场景,主要看你想刻画的尾部行为是偏左下还是偏右上。
Copula的最大好处是把"边缘分布"和"依赖结构"解耦,这样你可以用各种复杂模型去拟合边缘分布,再用Copula单独刻画相关性,模块化程度很高。代价也很明确:变量维度过高时,Copula的参数估计和采样都会变得棘手,尤其是超过几十个站点之后,你会很快撞上维度灾难。
3.3 非参数与深度学习方法:分位数回归、核密度估计与生成模型
如果不想对分布形状做太多假设,分位数回归是偏工程向的选择。它通过最小化分位数损失(pinball loss),直接预测不同分位水平下的功率值,不需要预先假设误差分布。分位数回归跟梯度提升树、随机森林这类模型配合得很好,LightGBM在风电功率分位数预测上表现相当能打,速度快、效果稳,很多工业项目里都是标配。
核密度估计(KDE)则是从历史样本出发,给每个样本点加一个核函数,再叠加出一条平滑的密度曲线。它的优势是灵活,几乎不依赖假设,缺点是带宽选择敏感,而且在高维场景下样本需求急剧上升,所以多用在一维或低维的误差密度估计上。
再往深走就是生成式模型这条路线:条件生成对抗网络(cGAN)、扩散模型、归一化流(Normalizing Flows)等,近几年在电力系统场景生成里非常火。这些模型的优势是能直接从数据里学出高维的时空联合分布,生成完整的多站点、多时段的功率场景,不用人为设计相关结构。缺点是训练成本高、调参复杂、可解释性差,而且一旦数据质量不好,模型会"一本正经地胡编"——生成结果单看起来像模像样,统计特性却经不起推敲。
3.4 一张表看明白:精度、鲁棒性和计算成本的权衡
| 方法 | 可表达分布复杂度 | 时空相关性刻画能力 | 数据需求 | 计算成本 | 工程落地难度 |
|---|---|---|---|---|---|
| 正态分布假设 | 低 | 低 | 低 | 极低 | 很简单 |
| 高斯混合模型 | 中 | 中(需配合协方差) | 中 | 低 | 简单 |
| Copula方法 | 中高 | 高 | 中高 | 中 | 中等 |
| 分位数回归 | 高(边缘分布) | 中(需后处理) | 中 | 中低 | 中等 |
| 深度生成模型 | 高 | 高 | 高 | 高 | 较难 |
我的建议是:如果刚起步,先从"分位数回归或GMM做边缘分布 + 高斯Copula做空间相关"这个组合开始跑,性价比最高。等数据和算力积累够了,再往深度生成模型方向演进。
4. 考虑时空相关性的概率预测:一套实用流程示例
4.1 数据准备:这一步决定了模型的"天花板"
时空相关建模对数据的要求比普通预测高很多。除了常规的功率历史序列和数值天气预报(NWP)数据,你还需要各场站的地理坐标、站间距离矩阵、气象相似度指标,以及时间特征(小时、星期、季节)和滞后特征(过去1到6个时刻的功率)。
这里有两个经常踩的坑。第一个是训练集切分方式:做概率预测和时序模型时,不能用随机打乱的方式划分训练集和测试集,否则会造成时序数据泄漏,模型在测试集上表现虚高,一上线就露馅。正确做法是按时间切分,比如用前24个月训练、接下来1个月验证、再接下来1个月测试。第二个是数据对齐问题:不同场站的数据采集频率、时区、异常标记不一定一致,尤其是如果做过数据清洗,各站的缺失位置可能不同,这一步不处理好,后面算相关性矩阵时会出现各种莫名其妙的bug。
4.2 两步走:先建边际分布,再拟合相关结构
实践中我更推荐"两步式"而不是一步到位的联合建模,原因很简单:每增加一类变量,联合模型的稳定性和训练难度都会急剧上升,而两步法每一步都清晰可控,出了问题也容易定位。
第一步,对每个场站单独做点预测和边际误差分布建模。既可以直接做分位数回归,也可以先做均值预测再估计误差分布(比如用GMM或KDE)。这个阶段跑出来的单站结果,至少要保证概率校准是基本合格的——如果单站预测区间覆盖率就不达标,后面叠加相关结构也没有意义。
第二步,把各场站预测残差标准化,用标准化的残差序列去估计Copula参数或者相关矩阵。注意残差要尽可能去除掉可预测的部分,只保留纯粹的随机波动,否则相关结构会被均值预测误差污染。
第三步,从拟合好的联合分布中采样。具体来说,先从Copula采样得到均匀分布的随机数,再通过各站边缘分布的逆变换,得到一组符合原始功率量纲的采样值,逐时刻拼接成完整场景。这样生成的场景集,既保留了单站分布特性,又包含了站间相关性。
4.3 场景质量怎么评估:光看曲线是不够的
做概率预测,评估方式跟点预测完全不同。你不能只看"预测得准不准",还要看"给定的概率是否可靠"。我常用的评估指标有这几个:
预测区间覆盖率(PICP)衡量的是实际观测值落进预测区间的比例,跟名义置信水平越接近越好。区间平均宽度(PINAW)衡量区间的锐利程度,同样的覆盖率下越窄越好。连续排序概率分数(CRPS)是综合评价指标,既看校准性又看锐利性,适合用来横向比较不同模型。
当场景集涉及多个站点或空间相关性时,单站指标远远不够。我强烈建议加一个Variogram Score(变差图分数),它专门用来评估多变量预测场景的空间相关性结构是否还原到位——把各站两两之间功率差的统计量与观测值做比较,偏差越小说明场景的空间相关特性越接近真实。用我自己的话说,CRPS管"分布对不对",Variogram Score管"站间联动像不像"。
可靠性检验也很关键,最常见的做法是概率积分变换(PIT)直方图。把观测值代入预测CDF得到概率值,如果这些概率值在0到1之间均匀分布,说明预测分布是校准良好的;如果呈U形,说明预测区间普遍偏窄、不确定性被低估;如果是倒U形,说明预测过于保守。
4.4 一个可直接参考的简化流程
用伪代码描述的话,整个流程大概是这个样子:
- 输入:N个场站的历史功率序列、NWP预测值、经纬度信息
- 第一步:对每个场站训练分位数回归模型(比如LightGBM),得到50%分位点作为点预测,同时得到5%和95%分位点作为初步区间
- 第二步:计算每个场站预测残差,做标准化处理,得到标准化残差序列
- 第三步:用标准化残差序列估计N维相关矩阵(或Gaussian Copula参数),如果维度过高可以先聚类降维
- 第四步:从多元正态分布中采样得到N维相关随机数,再通过标准正态CDF转换成均匀分布,最后用每个场站的经验分布函数反变换回功率值
- 第五步:对每个未来时刻重复第四步,并做时序平滑处理,得到多组多站点场景
- 第六步:用CRPS、PICP、Variogram Score评估场景质量,必要时调整相关结构或采样策略
5. 工程落地中的坑与实践经验
5.1 高维相关矩阵的数值稳定性问题
当站点数量超过几十个时,用历史残差直接估计相关矩阵会遇到一个经典问题:矩阵不满秩、条件数极大,甚至求逆都不稳定。这个问题在样本量不足的月份尤其突出,冬季大风季数据样本再多也扛不住几百维矩阵的估计需求。
我的处理办法是给相关矩阵加一个正则项,或者用收缩估计方法,比如Ledoit-Wolf收缩,把样本相关矩阵往单位矩阵方向收缩,换取数值稳定性,代价是稍微平滑掉一部分真实相关结构。另一种思路是先做主成分分析,把空间维度降下来,只保留主导模态,再在高维空间里建稀疏相关矩阵。简单说,别把相关性建得过于"精细",工程上稳定可靠比理论上精确重要得多。
5.2 相关结构会随时间漂移,静态模型必然失效
很多人建完相关矩阵就以为一劳永逸了,其实不然。风电场之间的空间相关性取决于上游气象过程的走向:冬季大风过程通常由西北向东南移动,夏季对流天气则分散得多;光伏集群的相关性则受到云层厚度、太阳高度角的季节变化影响。用一个全年的静态相关矩阵去描述这些动态变化,结果必然是有的月份相关结构被高估,有的月份被低估。
我建议把相关性估计按季节或者天气类型拆分,比如按"常态天气、大风过程、极端台风、阴雨天气"分别建模;再保守一点的做法是加滑动窗口,用最近30天数据持续更新相关矩阵。说到底,时空相关性不是固定参数,而是跟气象状态紧密绑定的动态特征。
5.3 让调度部门真正信任概率预测的小技巧
技术路线再完整,最后也要落到"人用不使用"四个字上。跟调度部门打交道多了,我总结出三个沟通要点。
第一,一定要把概率预测转化成调度能直接理解的风险指标,比如"备用不足概率"、"极端出力情景发生概率",而不是丢给他们一堆分位数数字。第二,可视化也很关键。扇形图比表格直观得多,用透明度分层展示不同置信区间,再加上实际出力的历史曲线,对方一眼就能看懂"区间宽窄"到底意味着什么。第三,不要夸大模型能力。概率预测并不代表"更精确",而是代表"更诚实地描述不确定性",这句话最好在项目一开始就跟用户说清楚,省得后面天天解释为什么区间有时候那么宽。
我在工地上最深的体会是:时空相关性的概率建模,难点从来不在数学工具的选取上,而在数据质量和问题定义上。很多项目上来就上深度学习模型,结果连基础的数据对齐、场站坐标核对都没做,相关矩阵算出来完全失真,后面的一切优化都是空中楼阁。如果现在让我重新做一个源荷概率预测项目,我会花一半精力把数据质量、特征归因和相关结构诊断做扎实,再谈用哪种模型去拟合——这个顺序反了,成本会非常高昂。
