光伏功率预测准确率怎么算 — RMSE/MAE/MAPE 与工程样本


摘要:光伏功率预测的「准确率」并不是一个单一指标,电网两个细则考核、内部生产调度、第三方数据采购的口径都不一样。本文从物理链路出发,把 RMSE / MAE / nRMSE / SkillScore 四个最常用指标讲清楚,给出实际项目工程中短期 / 超短期 / 中期三个场景的实测准确率分布(自绘 SVG),最后附 30 行 Python 评估代码。
关键要点
- 光伏功率预测准确率没有单一标准:常用指标是 RMSE、MAE、nRMSE(归一化到装机容量)和 Skill Score(相对持续法的提升),不同口径不能直接横向比较。
- 实测 nRMSE 中位数随预测时长拉长而升高:超短期 4h 约 6.5%、短期 24h 约 9.0%、中期 72h 约 12.0%(实际项目工程脱敏样本,仅供选型参考)。
- 误差最主要来自数值天气预报(NWP):实际项目工程复盘样本中常见约 70%-80% 的误差归因到 NWP(占比随站点与天气条件大幅波动),气象预报精度在很大程度上决定了光伏预测精度的上限。
- 两个细则按 15 min 时段 |ŷ − y| / C ≤ 25% 统计日合格率,合格率 < 80% 会触发分档考核电费;MAPE 必须只在日间样本(如 GHI > 50 W·m⁻²)上算,否则会发散。
- 把 nRMSE 从 12% 压到 9% 的最高 ROI 套路是换更好的 NWP、做集成预报、同化本地观测、用 LightGBM/XGBoost 做偏差订正,并按时间尺度融合云图外推与 NWP。
1. 光伏功率预测的物理链路
光伏电站的瞬时功率 P 取决于:
P = η_组件(T_组件, GHI_有效) × A × GHI × η_系统(逆变, 线损) × Availability
其中:
GHI全球水平辐照(Global Horizontal Irradiance)来自数值天气预报模式(NWP),通常是预报误差的最主要来源;在实际项目工程复盘样本中,常见约 70%-80% 的误差归因到 NWPT_组件通过 GHI、气温、风速派生(NOCT 模型 / Faiman 模型)Availability含限电、检修、积灰、阴影遮挡 — 是机理外的扰动,预测算法很难覆盖
也就是说:在我们的脱敏样本中,NWP/辐照预报是主导误差源,很大程度上决定了光伏功率预测精度的上限。任何宣称把短期 RMSE 压到 ≤ 3% 的方案,要么场景特殊(晴空稳定区域),要么暗藏了限电样本剔除。
2. 四个最常用准确率指标
设真实功率序列 y、预测序列 ŷ、装机容量 C,样本数 N:
2.1 RMSE(均方根误差)
RMSE = sqrt( (1/N) · Σ (ŷ_i - y_i)² )
- 单位:MW(或 kW)
- 对大误差更敏感(平方放大)
- 工程上常归一化到装机容量:
nRMSE = RMSE / C,单位 %
2.2 MAE(平均绝对误差)
MAE = (1/N) · Σ |ŷ_i - y_i|
- 单位:MW
- 比 RMSE 对异常值更稳健,反映「平均偏多少」
- 同样可归一化:
nMAE = MAE / C
2.3 MAPE(平均绝对百分比误差)
MAPE = (1/N) · Σ |ŷ_i - y_i| / max(y_i, ε)
⚠️ MAPE 在 y_i → 0(夜间、清晨、阴雨)时会爆炸;行业实践通常只取日间样本(如 GHI > 50 W·m⁻²)算 MAPE,否则数值毫无意义。
2.4 Skill Score(相对持续法的提升)
SkillScore = 1 - RMSE_model / RMSE_persistence
persistence(持续法)= 用上一时段实测当作下一时段预测。Skill Score > 0 说明模型「跑赢了什么都不做」。实际项目工程验收通常期望短期模型 SkillScore ≥ 0.4,< 0.2 基本等于浪费算力。
3. 两个细则考核口径(电网侧)
中国国家能源局《并网发电厂辅助服务管理实施细则》(俗称两个细则)对新能源场站的预测精度考核口径(各省略有差异,以华北/华东为例):
- 短期预测:未来 0-72 h,时间分辨率 15 min
- 考核窗口:日内每日 24 h 实时考核
- 基准误差:日合格率 = (15 min 时段中 |ŷ - y| / C ≤ 25% 的样本数) / 总日间样本数 × 100%
- 合格门槛:合格率 < 80% 触发分档考核电费
真相源:各省电力公司发布的《两个细则实施细则》,本文不展开法律细节,仅给算法侧实操建议。
4. 实际项目工程样本准确率基线(实测分布)
下图(自绘 SVG,可在 /blog/solar-forecast-accuracy/ 直接查看)汇总了实际项目工程中 50+ 个光伏电站、覆盖华北 / 华东 / 西北的实测 nRMSE 分布。它用于工程选型参考,不是公共论文基准:
样本口径说明:以下数字来自实际项目工程的脱敏复盘,按装机容量归一化计算 nRMSE;站点区域、限电 / 检修样本剔除、天气年份和时间分辨率都会影响结果。它只能作为售前评估和方案设计的经验范围,不能作为行业通用基线或对外交付承诺。
| 时长 | 中位 nRMSE | P25 - P75 | 备注 |
|---|---|---|---|
| 超短期 4h(15 min 步) | 6.5% | 4.8% – 9.0% | 主要依赖云图外推 |
| 短期 24h(15 min 步) | 9.0% | 7.0% – 11.5% | 主导误差来自 NWP |
| 中期 72h(1 h 步) | 12.0% | 9.5% – 15.0% | NWP 误差 + 累积偏差 |
典型分布观察:
- 西北戈壁、新疆区域晴空稳定,nRMSE 比东部低 1-2pp
- 华东梅雨季 / 华北春季沙尘 / 西南云贵高原 nRMSE 会暴涨 30-50%
- 装机 < 50 MW 的小场站 nRMSE 比大场站差 1-3pp(平滑效应弱)
5. Python 30 行评估脚本
import numpy as np
import pandas as pd
def evaluate_pv_forecast(y_true: np.ndarray,
y_pred: np.ndarray,
capacity_mw: float,
daytime_mask: np.ndarray | None = None) -> dict:
"""
y_true, y_pred: 时间序列,单位 MW,等长
capacity_mw: 装机容量,单位 MW
daytime_mask: bool 数组,True = 日间样本(GHI > 50 W·m⁻²)
None 时全部样本参与,MAPE 容易爆炸
"""
y_true = np.asarray(y_true, dtype=float)
y_pred = np.asarray(y_pred, dtype=float)
err = y_pred - y_true
rmse = np.sqrt(np.mean(err ** 2))
mae = np.mean(np.abs(err))
nrmse = rmse / capacity_mw * 100
nmae = mae / capacity_mw * 100
if daytime_mask is not None:
m = daytime_mask & (y_true > 0.05 * capacity_mw)
mape = np.mean(np.abs(err[m]) / y_true[m]) * 100 if m.any() else np.nan
else:
mape = np.nan
# 两个细则合格率(15 min 步长 |err| / C ≤ 25%)
pass_ratio = np.mean(np.abs(err) / capacity_mw <= 0.25) * 100
# Skill Score vs 持续法
persistence = np.roll(y_true, 1); persistence[0] = y_true[0]
rmse_p = np.sqrt(np.mean((persistence - y_true) ** 2))
skill = 1 - rmse / rmse_p if rmse_p > 0 else np.nan
return dict(
RMSE_MW=rmse, MAE_MW=mae,
nRMSE_pct=nrmse, nMAE_pct=nmae,
MAPE_daytime_pct=mape,
PassRatio_pct=pass_ratio,
SkillScore=skill,
)
6. 把准确率从 nRMSE 12% 压到 9% 的工程套路
这是实际项目工程中常见的「卷一卷」诉求,按 ROI 排序:
- 换更好的 NWP(最有效):在实际项目工程样本中,ECMWF-HRES 通常能改善中纬度 24h 辐射场 RMSE,但提升幅度必须以目标场站回测确认
- 集成预报:把 ECMWF + GFS + 区域中尺度模式做加权融合,nRMSE 再降 0.5-1pp
- 本地观测同化:场站实测 GHI / 气温反馈进入预测链路,4h 内预测 RMSE 显著下降
- 机器学习偏差订正:LightGBM / XGBoost 把 NWP → 实测的系统偏差吃掉,别指望深度学习(除非样本量 ≥ 3 年 / 装机 ≥ 100 MW)
- 多时间尺度融合:超短期用云图外推 + 短期用 NWP,按时长加权
7. 常见误区
误区 1:「RMSE 越低越好」 — 不对。RMSE 在限电 / 弃光的电站上会虚低,因为实测被压平了。 误区 2:「用 MAPE 比 RMSE 更直观」 — 在功率序列里 MAPE 在低出力时段会发散,只在日间样本上算。 误区 3:「准确率指标越多越好」 — 业务报告里报 nRMSE + 合格率两个就够,加 SkillScore 防止「看起来准但其实没跑赢持续法」。
常见问题
光伏功率预测准确率怎么算?用哪个指标? 没有单一指标。工程上最常用 RMSE(对大误差敏感)、MAE(更稳健)、归一化到装机容量的 nRMSE,以及衡量是否跑赢持续法的 Skill Score。业务报告通常报 nRMSE + 两个细则合格率即可,必要时加 Skill Score。
光伏功率预测的准确率一般能做到多少? 按本文实际项目工程脱敏样本,nRMSE 中位数大致为:超短期 4h 约 6.5%、短期 24h 约 9.0%、中期 72h 约 12.0%。这些数字受站点区域、限电/检修样本剔除、天气年份和时间分辨率影响,只能作经验参考,不是行业通用基线。
为什么光伏功率预测的误差总是降不下来? 因为误差的最主要来源是数值天气预报(NWP):在我们的脱敏复盘样本中,约 70%-80% 的误差可归因到 NWP/辐照预报(占比随站点与天气条件大幅波动,并非固定区间)。换言之,气象预报精度在很大程度上决定了功率预测精度的上限,限电、检修、积灰等机理外扰动则更难被算法覆盖。
两个细则的光伏预测合格率怎么考核? 以华北/华东为例,按 15 min 时段统计日合格率 = (|ŷ − y| / C ≤ 25% 的样本数) / 总日间样本数 × 100%;日合格率 < 80% 会触发分档考核电费。各省细则略有差异,以当地电力公司发布口径为准。
为什么不能直接用 MAPE 评估光伏功率? 因为 MAPE 在功率趋近 0 的夜间、清晨、阴雨时段会爆炸发散。行业实践是只取日间样本(如 GHI > 50 W·m⁻²)算 MAPE,否则数值毫无意义。
8. 参考与延伸阅读
- 国家能源局.《电力并网运行管理规定》(国能发监管规〔2021〕60 号)与《电力辅助服务管理办法》(国能发监管规〔2021〕61 号)及各区域"两个细则"实施细则。
- GB/T 40607—2021《调度侧风电或光伏发电功率预测系统技术要求》。
- Faiman, D. (2008). Assessing the outdoor operating temperature of photovoltaic modules. Progress in Photovoltaics, 16(4), 307–315. DOI: 10.1002/pip.813
- 组件 NOCT 与温度系数测试可参考 IEC 61215 / IEC 61853 系列标准。
- 注:本文 §4 表格与关键要点中的 nRMSE 等数字均为脱敏工程样本经验范围,非公共行业基准。