气象数据

电力负荷预测里的气象输入与温度敏感度

· 南京运梦科技算法团队 · 评审 算法负责人

电力负荷预测里的气象输入与温度敏感度 封面

做电力负荷预测的人,迟早会发现一件事:决定预测精度上限的,往往不是模型多花哨,而是气温这个输入用得对不对。负荷曲线在夏冬两季的形状,几乎是被空调和采暖负荷"画"出来的;而空调采暖又被气温、湿度、甚至前几个小时的累积热量牵着走。对新能源从业者来说,负荷预测看似在电网侧,其实和功率预测共享同一套气象数据底座:你为光伏取的辐照、为风电取的风速,和为负荷取的气温,来自同一份再分析或数值预报。把温度敏感度这件事讲清楚,既能直接提升负荷预测,也能反过来帮你理解为什么气象输入的质量是整条预测链的命门。这篇文章以一篇被反复引用的综述为锚,讲透温度与负荷的非线性关系、度日方法的边界,以及滞后温度为什么重要。

关键要点

  • 负荷与气温是近 U/V 形的非线性关系,在高温与低温两端最陡;把温度当线性输入会在极端温度下系统性失准。
  • 度日(HDD/CDD)按美国 EIA 口径取 65 华氏度(约 18.3 摄氏度)为基准,把"冷热程度"压成两个标量;但基准是经验值,小时级精细预测常需放弃度日、直接用气温曲线。
  • 滞后温度(recency effect)反映建筑热惯性:Wang、Liu 与 Hong 报告在聚合负荷序列上,引入滞后温度相比 vanilla 基准模型可降低误差约 18% 至 21%。
  • 概率口径优于点预测:GEFCom2014 用 99 分位 pinball loss 评分,确立了以全分布而非单点衡量预测好坏的范式。
  • 在运梦气象 API 上,历史回测取 era5、未来预报取 ger(德国气象局)拉同一点位气温 tas,字段命名一致,可无缝衔接曲线标定与上线预测。

背景与定位

本文主要参考 Tao Hong 与 Shu Fan 的综述 Probabilistic electric load forecasting: A tutorial review,发表于 International Journal of Forecasting 2016 年第 32 卷第 3 期(914–938 页)。Tao Hong 是负荷预测领域绕不开的名字,他主导的全球能源预测竞赛(GEFCom)把负荷、电价、风电、光伏四个赛道的概率预测方法系统性地推到了行业面前。这篇综述的权威性在于,它不是某一个模型的论文,而是把概率负荷预测这一整个子领域的方法、评价口径和研究空白做了梳理,因此被学术界与工业界共同当作入门与对标的参照。

围绕温度敏感度,本文还引用同一作者群的两篇关键工作:一是 Wang、Liu 与 Hong 的 Electric load forecasting with recency effect: A big data approach(同卷 585–597 页),专门讲滞后温度;二是 Hong 等人对 GEFCom2014 的总结 Probabilistic energy forecasting: Global Energy Forecasting Competition 2014 and beyond(同卷 896–913 页),给出了概率预测的评价范式。

方法 / 它做了什么

负荷预测的核心难点,是负荷与气温之间不是一条直线,而是一条近似 "U" 形或 "V" 形的曲线。气温很低时,采暖负荷把用电拉高;气温很高时,制冷负荷又把用电拉高;中间存在一个舒适区,负荷对温度最不敏感。综述强调,任何把温度当成线性输入的模型,都会在两端系统性失准,因此主流做法是用分段或多项式的方式刻画这条非线性曲线,并让它随月份、星期、小时变化——同样是 30 摄氏度,工作日午后和周末凌晨的负荷响应完全不同。

度日(degree days)是工程上把这条曲线"线性化"的经典近似。它选一个基准温度,按美国能源信息署(EIA)的通行口径取 65 华氏度(约 18.3 摄氏度):当日平均气温低于基准,差值累计为采暖度日 HDD;高于基准,差值累计为制冷度日 CDD;日平均气温由当日最高与最低的均值近似。HDD/CDD 把"冷了多少、热了多少"压缩成两个标量,便于做月度、季度的能耗估算与回归。但综述也提醒,度日只是近似:基准温度因地区、建筑、用电结构而异,固定 65 华氏度未必最优,精细的小时级负荷预测往往需要回到原始气温曲线而非度日聚合。

第三个关键机制是滞后温度,也就是 Hong 命名的 "recency effect"(近时效应):当前小时的负荷不只受当前气温影响,还受前几个小时乃至前一天累积温度的影响——建筑有热惯性,热量是慢慢积累与释放的。Wang、Liu 与 Hong 的工作系统地把滞后小时温度与移动平均温度加进基准回归模型,用大数据方式筛选最优滞后阶数。

概率化是最后一层。综述指出,只给一个点预测已不够,电网规划与运行需要的是负荷的分布或区间。GEFCom2014 用分位数回归等方法输出 99 个分位点,并以 pinball loss(分位数损失)对全分布打分,这套口径已成为概率负荷与功率预测的事实标准。

关键结论

  • 负荷-温度关系是显著非线性的近 U/V 形曲线,在高温和低温两端最陡。把温度当线性项会在极端温度下系统性失准,这是综述反复强调的建模前提,而非个别数据集的偶然现象。
  • 度日的通用基准在美国口径下取 65 华氏度(约 18.3 摄氏度),HDD 为基准减日均温的正差值累计、CDD 为日均温减基准的正差值累计,日均温用最高最低之均值近似。需要边界限定的是:该基准是经验值,跨地区与跨建筑并非最优,小时级精细预测常需放弃度日、直接用气温曲线。
  • 滞后温度(recency effect)能带来实打实的增益。Wang、Liu 与 Hong 报告,在聚合层级的负荷序列上,引入滞后温度的模型相比 Hong 经典的 vanilla 基准模型可降低误差约 18% 至 21%(在其评测数据与口径下)。这说明"只用同一时刻气温"会丢掉建筑热惯性这块信息。
  • 概率比点预测更被强调。GEFCom2014 共吸引 61 个国家约 581 名参赛者、历时 16 周,覆盖负荷/电价/风电/光伏四个赛道,统一用 99 分位的 pinball loss 评分——这确立了用全分布而非单点来衡量预测好坏的范式。

对新能源 / 运梦平台的意义

第一,气象输入的质量决定上限。负荷预测对气温的敏感,与光伏对辐照、风电对风速的敏感是同构问题:气象字段的偏差、缺测、时空插值误差,会被非线性曲线放大到两端。把气温、辐照、风速放在同一套数据治理流程里,是新能源团队同时做功率预测与负荷/电量预测时的自然选择。

第二,非线性与滞后的思路可平移到功率侧。光伏组件温度影响出力效率,风机出力对风速也是高度非线性的功率曲线;滞后温度的"热惯性"直觉,对应到组件温度、地表蓄热同样成立。把单时刻输入升级为带滞后窗口的特征,是低成本的精度增量。

第三,概率口径统一了考核语言。无论负荷、风电还是光伏,用 P10/P50/P90 区间和 pinball loss 来表达不确定性,能让交易、调度、检修在"可能范围"而非"虚假精确"上做决策。这与运梦在功率预测里坚持的"诚实表达不确定性"是一致的。

需要说明的是:运梦气象 API 提供的是高质量气象输入(历史再分析与未来预报),负荷预测、温度敏感度建模、度日计算等下游建模工作由你的团队完成,我们不替代你的负荷模型,而是把输入这一环做扎实。

在运梦气象 API 上手

负荷预测最核心的气象输入就是气温 tas(2 米气温)。下面用同步下载端点演示"历史回测取 era5、未来预报取 ger(德国气象局)"的取数姿势,拉同一点位的气温,既可用于标定温度敏感度曲线,也可作为预报期输入。

import requests

URL = "https://console.yun-meng.top/api/energy-weather/search/weather/action/downloadSync"
HEADERS = {
    "Authorization": "Bearer sk-your-api-key",
    "Content-Type": "application/json",
}

def download(data_source_id, stime, etime, fields, lat=32.03253, lon=117.35184):
    body = {
        "dataSourceId": data_source_id,  # 历史回测用 era5,预报用 ger
        "lat": lat,
        "lon": lon,
        "stime": stime,                  # 格式 "yyyy-MM-dd HH:mm"
        "etime": etime,
        "timezone": "8",                 # 必填,东八区时区偏移
        "fields": fields,                # CF 命名,气温为 tas
    }
    resp = requests.post(URL, headers=HEADERS, json=body, timeout=60)
    result = resp.json()                 # 统一 JSON envelope,无 CSV/NetCDF
    if not result.get("success"):
        raise RuntimeError(f"下载失败: {result.get('msg')} (errorCode={result.get('errorCode')})")
    return result["data"]                # data.timeList / data.tas ... 数组

# 1) 历史 era5:拉去年夏季逐时气温,用于拟合负荷-温度曲线与度日标定
hist = download("era5", "2024-07-01 00:00", "2024-07-31 23:00", ["tas"])

# 2) 预报 ger(德国气象局):取未来逐时气温,作为短期负荷预测输入
fcst = download("ger", "2026-04-09 00:00", "2026-04-15 23:00", ["tas"])

# tas 通常为开尔文,建模前转摄氏度再计算 HDD/CDD
def to_celsius(k):
    return [round(v - 273.15, 2) for v in k]

print("历史样本数:", len(hist["timeList"]))
print("预报首日气温(℃):", to_celsius(fcst["tas"])[:24])

拿到逐时气温后,把它聚合成日均温即可按 65 华氏度(约 18.3 摄氏度)基准计算 HDD/CDD;若做小时级负荷模型,则直接用气温曲线并加入滞后特征(如前 3–6 小时与前一日的移动平均),复现 recency effect 的增益思路。era5 适合拉多年历史做回测与曲线标定,ger 提供未来约一周的逐时预报用于上线预测,两者字段命名一致,可无缝衔接训练与应用。

常见问题

温度对电力负荷预测到底有多重要? 负荷曲线在夏冬两季的形状几乎由空调和采暖负荷决定,而它们被气温牵着走,因此气温输入用得对不对,往往决定了负荷预测精度的上限,比模型是否花哨更关键。

HDD 和 CDD 是怎么计算的?基准温度取多少? 按美国 EIA 通行口径取 65 华氏度(约 18.3 摄氏度)为基准:日均温低于基准时,差值累计为采暖度日 HDD;高于基准时,差值累计为制冷度日 CDD;日均温用当日最高与最低的均值近似。该基准是经验值,跨地区与跨建筑并非最优。

什么是滞后温度(recency effect),它能带来多少精度提升? 当前小时负荷不只受当前气温影响,还受前几个小时乃至前一天累积温度的影响,这源于建筑热惯性。Wang、Liu 与 Hong 报告,在聚合负荷序列上引入滞后温度,相比 vanilla 基准模型可降低误差约 18% 至 21%。

做小时级负荷预测应该用度日还是原始气温曲线? 度日是把负荷-温度曲线线性化的经典近似,适合月度、季度的能耗估算与回归;精细的小时级负荷预测往往需要回到原始气温曲线,并加入滞后特征,而非使用度日聚合。

在运梦气象 API 上历史和预报气温应该分别取哪个数据源? 历史回测取 era5 拉多年逐时气温做曲线标定与度日计算,未来预报取 ger(德国气象局)拉未来约一周的逐时气温作为上线预测输入;两者字段命名一致(气温为 tas),可无缝衔接训练与应用。

引用与原文