新能源资源年际变率与长期代表性评估

做风电、光伏项目的人都背过一个数字:年均风速的年际标准差,行业里习惯填 6%。这个 6% 不是随便来的,它直接进 P90 计算、进融资模型、进收益率测算。可一旦把它当成放之四海皆准的常数,麻烦就来了——它会系统性地把不确定度做大,把 P90 压低,让一个本来财务可行的项目在尽调里显得比实际更"险"。年际变率(Interannual Variability,IAV)有多大、用几年数据才能把它估准、它和 P50/P90 到底是什么关系,是资源评估里最容易被一笔带过、却又最影响结论的一环。本文围绕两篇 Wind Energy Science 上的实证论文,把这件事讲透,并给出在运梦气象 API 上用 ERA5 多年序列亲手验证的路径。
关键要点
- 风资源年际变率的实测离散明显小于行业惯用的 6%:年均风速归一化四分位距在 96% 的网格里小于 6%,数据支持把经验值下调到 4% 量级。
- 度量指标要选对:稳健变异系数 RCoV 与真实风电场出力波动的皮尔逊相关约 0.856,远高于裸标准差的约 0.2,应优先用 RCoV。
- 数据要够长:在 90% 置信度下可靠估出风速 RCoV 大致需要 10±3 年的逐月均值序列,一两年实测不足以支撑 P90。
- 光伏的年际变率天然更小,GHI 单年年际变率约 1.3%~3.8% 且随年限快速收敛,所以光伏 P90 通常比风电更贴近 P50。
- 落地路径:用长序列 ERA5 实算变率,按 P90 = P50 × (1 − 1.282 × CV_total) 合成保证率,并用 MCP 把短期实测订正到长期水平。
背景与定位
第一篇核心文献是 Sara C. Pryor、Tristan J. Shepherd、Rebecca J. Barthelmie 三人 2018 年发表于 Wind Energy Science 的 Interannual variability of wind climates and wind turbine annual energy production(卷 3,651–665 页,DOI: 10.5194/wes-3-651-2018)。Pryor 与 Barthelmie 是康奈尔大学风能气候方向的资深团队,长期研究气候变率对风电出力的影响,这篇文章是少数用长序列网格数据直接量化"年际变率到底多大"的实证工作,权威性在于它没有沿用经验值,而是把假设拿到数据上检验。
第二篇是 Joseph C. Y. Lee、M. Jason Fields、Julie K. Lundquist 同年发表于 Wind Energy Science 的 Assessing variability of wind speed: comparison and validation of 27 methodologies(卷 3,845–868 页,DOI: 10.5194/wes-3-845-2018)。Lundquist 是美国科罗拉多大学与 NREL 的边界层与风能专家,这篇文章把 27 种刻画风速变率的指标放在真实风电场出力数据上做横评,回答了"该用哪个指标、需要多长数据"这个工程问题。两篇合在一起,正好覆盖年际变率的"量级"与"度量"两面。
方法 / 它做了什么
Pryor 等人的做法,是用一套长期、空间连续的网格风场,逐网格计算年均风速的逐年分布,再把风速通过典型风机功率曲线映射成逐年的年发电量(AEP),从而直接观测两件事:年均风速的年际离散有多大、它放大到 AEP 后又有多大。关键在于他们不假设分布形态,而是用**归一化四分位距(IQR/P50)**这种对异常年稳健的统计量去刻画离散,再和行业惯用的"正态、标准差 6%"做对照。这等于把一个被反复引用的经验常数,第一次摆到大样本网格上做体检。
Lee 等人的思路是横评。年际变率可以用很多种指标度量:标准差、变异系数 CV、稳健变异系数 RCoV(中位绝对偏差除以中位数)、年距、各种归一化与非归一化的组合,他们一口气列了 27 种。判据是"哪种指标算出来的变率,最能解释真实风电场年发电量的波动"。这是个非常工程的提问——指标不是越复杂越好,而是要和你最终关心的电量波动对得上号。同时他们还回答了样本量问题:要把变率估到给定置信度,到底需要多少年的数据。
理解这两套方法,工程上要抓住一个区分:年际变率(自然界气象的逐年波动)不等于总不确定度。 总不确定度里还包括测量误差、模型偏差、风速到电量的转换误差、可用率波动等。年际变率只是其中一块,而且常常被高估的也正是这一块。
关键结论
- 行业惯用的 6% 偏保守,实测离散明显更小。 Pryor 等人发现,年均风速的归一化四分位距(IQR/P50)在近 60% 的风机网格里小于 4%,在 83% 的网格里小于 5%,在 96% 的网格里小于 6%。换言之,把 6% 当成放之四海的标准差,对绝大多数站点是偏大的,他们的数据支持把这个经验值下调到 4% 量级。需要限定:这是在美国东部(北美东部)范围、用长序列网格数据、以网格而非具体项目为单元的评测口径下得到的结论。
- 放大到发电量后,离散并没有想象中那么夸张。 同一研究里,年发电量 AEP 的归一化四分位距中位数约为 3.4%,且 P90(AEP) 与 P50(AEP) 之差在 90% 的网格里低于 4.6%。再换一个说法:十年里有九年,年均风速会落在长期均值的 ±5.5% 以内(对 90% 的网格成立)。这给"P90 该压多少"提供了一个可对标的上界感。
- 度量指标选错,会把变率算偏。 Lee 等人的横评显示,稳健变异系数 RCoV 与真实风电场出力波动的相关性最强(皮尔逊相关约 0.856),而直接用标准差的相关性弱得多(约 0.2)。结论是:评估年际变率优先用 RCoV 这类稳健、归一化的指标,别只看标准差,尤其是在样本里混进了极端年的时候。
- 数据太短,变率根本估不准。 同一文献给出,要在 90% 置信度下可靠地算出风速 RCoV,大致需要 10±3 年的逐月均值记录;而仅用年均值序列会随数据变长反而相关性走弱,不适合直接拿来刻画年际变率。这条直接否定了"拿一两年实测就敢报 P90"的做法。
- 光伏的年际变率天然比风小。 以行业资源数据库的口径,年累计水平面总辐照(GHI)的单年年际变率通常落在约 1.3%~3.8%,且随评估年限拉长会快速收敛(十年尺度可降到零点几个百分点)。这与风资源 4%~6% 量级的离散形成对照,也解释了为什么光伏 P90 通常比风电更贴近 P50。
对新能源 / 运梦平台的意义
把上面的结论落到实际工作,有几条可直接用的指引。
风电资源评估与融资。 别把 6% 当默认填进 P90 模型。能拿到长序列就用长序列实算年际变率,用 RCoV 而非裸标准差,并把它和测量、模型、转换等其他不确定度按平方和诚实合成成总不确定度,再用 P90 = P50 × (1 − 1.282 × CV_total) 算保证率(1.282 是标准正态 90% 分位的 z 值)。实算往往会得到比经验值更紧、也更有说服力的 P90,对融资尽调反而有利。
光伏资源评估。 光伏的年际变率小、收敛快,意味着代表性年限的要求相对宽松,但火山气溶胶年、强厄尔尼诺年仍会让单年明显偏离,长期均值仍需多年序列锚定。把风、光放在同一套历史数据底座上算,口径才可比。
功率预测与电网侧。 年际变率刻画的是"长期能发多少"的离散,是容量配置、电量保证、并网消纳测算的输入;它不直接等于短期功率预测的精度,但决定了你训练与回测所依赖的历史样本是否覆盖了足够的气候年型。样本年限不足,回测出来的"好成绩"可能只是赶上了好年。
长期代表性订正。 实测短、再分析长,是资源评估的常态。用实测-相关-外推(MCP,Measure-Correlate-Predict)把测风塔的短期实测,借助 ERA5 这样的长期参考序列订正到长期水平,是把年际变率讲清楚的标准工序。再分析负责"长期分布与逐年波动",实测负责"局地绝对水平",两者结合才稳。
在运梦气象 API 上手
下面用历史数据源(dataSourceId="era5")按年切片拉取一个站点的多年 100m 风分量,逐年聚合后用稳健指标 RCoV 估计年际变率,再合成 P90。历史回测用 era5,未来预报请把 dataSourceId 换成 ger(德国气象局,覆盖未来约 7 天),字段口径一致,业务侧不必维护两套换名逻辑。
import os, time, requests
import numpy as np
API = "https://console.yun-meng.top/api/energy-weather/search/weather/action/downloadSync"
TOKEN = os.environ["YUNMENG_TOKEN"]
def fetch_year(year, lat, lon):
payload = {
"dataSourceId": "era5", # 历史回测用 ERA5;预报请用 "ger"(德国气象局)
"lat": lat, "lon": lon,
"stime": f"{year}-01-01 00:00",
"etime": f"{year}-12-31 23:00",
"timezone": "8", # 必填,东八区
"fields": ["u100", "v100", "ws"],
}
r = requests.post(API, headers={"Authorization": f"Bearer {TOKEN}"},
json=payload, timeout=600)
r.raise_for_status()
res = r.json() # 统一 JSON envelope
if not res.get("success"):
raise RuntimeError(res.get("msg", "查询失败"))
return res["data"]
lat, lon = 31.5, 118.5
annual_ws = [] # 逐年年均 100m 风速
for y in range(2004, 2024): # 20 年序列,远超 10±3 年的最低要求
d = fetch_year(y, lat, lon)
u = np.asarray(d["u100"], float)
v = np.asarray(d["v100"], float)
annual_ws.append(np.hypot(u, v).mean())
print(f"{y}: 小时数={len(d['timeList'])}, 年均100m风速={annual_ws[-1]:.2f} m/s")
time.sleep(0.5) # 友好限速
a = np.asarray(annual_ws)
median = np.median(a)
mad = np.median(np.abs(a - median)) # 中位绝对偏差
rcov = mad / median # 稳健变异系数(优先于裸标准差)
cv_std = a.std(ddof=1) / a.mean() # 传统 CV 作对照
# 仅含气象年际波动;实际 P90 须再叠加测量/模型/转换不确定度
p90_factor = 1 - 1.282 * cv_std
print(f"RCoV={rcov*100:.1f}%, 传统CV={cv_std*100:.1f}%, P90/P50(仅气象)={p90_factor:.3f}")
把序列拉到 20 年,远超 10±3 年的最低样本要求,RCoV 与传统 CV 都会比短序列稳得多。两个指标若差距大,往往是序列里混进了极端年,这时更应信 RCoV。
常见问题
风资源评估里年际变率到底取多少合适? 不要默认填 6%。Pryor 等人的实测显示,年均风速归一化四分位距在 96% 的网格里小于 6%、83% 的网格里小于 5%,数据支持把这个经验值下调到 4% 量级。最稳妥的做法是用长序列数据对你的站点实算。
评估年际变率该用标准差还是 RCoV? 优先用稳健变异系数 RCoV(中位绝对偏差除以中位数)。Lee 等人的横评中,RCoV 与真实风电场出力波动的皮尔逊相关约 0.856,而裸标准差只有约 0.2,尤其当样本里混进极端年时,标准差会把变率算偏。
需要多少年数据才能把年际变率估准? 在 90% 置信度下可靠估出风速 RCoV,大致需要 10±3 年的逐月均值记录。仅靠一两年实测就报 P90 是不可靠的;本文示例直接拉了 20 年 ERA5 序列以远超这个最低要求。
P90 应该怎么从 P50 算出来? 本文给出的口径是 P90 = P50 × (1 − 1.282 × CV_total),其中 1.282 是标准正态 90% 分位的 z 值,CV_total 是把年际变率与测量、模型、转换等其他不确定度按平方和诚实合成后的总变异系数。年际变率只是总不确定度的一块。
为什么光伏的 P90 通常比风电更贴近 P50? 因为光伏的年际变率天然更小。年累计水平面总辐照 GHI 的单年年际变率通常约 1.3%~3.8%,且随评估年限拉长会快速收敛,因此光伏的代表性年限要求相对宽松,P90 离 P50 更近。
引用与原文
Pryor, S. C., Shepherd, T. J., & Barthelmie, R. J. (2018). Interannual variability of wind climates and wind turbine annual energy production. Wind Energy Science, 3, 651–665. DOI: 10.5194/wes-3-651-2018
Lee, J. C. Y., Fields, M. J., & Lundquist, J. K. (2018). Assessing variability of wind speed: comparison and validation of 27 methodologies. Wind Energy Science, 3, 845–868. DOI: 10.5194/wes-3-845-2018