论文学习 | HESS2025 | 中亚寒区季节水文预报

从积雪到季节径流:中亚寒区季节水文预报

论文:The value of hydroclimatic teleconnections for snow-based seasonal streamflow forecasting in Central Asia

1. 这篇论文解决了什么问题?

中亚高山流域的春夏径流很大程度上受到冬春积雪及其融化过程控制,但当地存在两个现实困难:

  1. 地面雪观测稀缺,不同 SWE(Snow Water Equivalent,雪水当量)产品之间存在较大不确定性;
  2. 径流样本很少,多数流域 2000--2018 年只有约 18 个季节径流样本,复杂模型很容易过拟合。

因此作者希望回答一个核心问题:

在缺乏地面雪观测、径流样本很少的情况下,能否利用 SWE 与大尺度气候振荡信号,提前数月预测未来暖季径流?

论文的预测目标是每年 4--9 月平均径流 ,并分别在 1 月 1 日、2 月 1 日、3 月 1 日和 4 月 1 日发布预报,用于比较不同提前期下的预报能力。

图1 中亚研究流域及其水文气候特征。来源:原论文 Fig. 1。


2. 作者提出了什么方法?

2.1 用多套 SWE 描述积雪状态

作者没有只选择一种 SWE,而是同时使用四套 SWE:

  • ERA5-Land;
  • FLDAS;
  • GEMS + MSWX;
  • GEMS + GPM IMERG。

图2 不同 SWE 产品与4--9月季节径流的相关关系。来源:原论文 Fig. 3。
这样做的原因是: 某个 SWE 与径流相关性高,并不等于这个 SWE 本身一定最准确。

由于缺少地面 SWE 观测,作者无法判断哪一种产品最接近真实积雪,因此保留多套 SWE 并进入集合预报。


2.2 引入大尺度气候振荡作为"提前信号"

除了 SWE,作者还考虑了多个 climate oscillation(CO)指数,包括:

  • SOI;
  • PDO;
  • EAWR;
  • NAO;
  • SCAN。

图3 不同气候振荡指数与2--7月高降水季降水的遥相关关系。来源:原论文 Fig. 4。
作者首先分析这些气候指数与高降水季降水、季节径流之间的遥相关关系,从而寻找具有预测价值的指数及其最佳月份。

例如,一个最终 predictor set 可能是:

text 复制代码
March SWE
+ November PDO
+ January SCAN
→ April--September seasonal discharge

这里的 November PDO 通常指 前一年 11 月,因此它提供了真正的提前预报信息。


2.3 控制变量数量,避免小样本过拟合

每个流域的 predictor set 最多只有 3 个变量:

text 复制代码
1 个 SWE + 最多 2 个 climate indices

这不是物理规律,而是针对约 18 个样本的主动降维策略。

图4 不同流域和预报发布日期下采用的预测因子组合。来源:原论文 Fig. 5。
作者先进行相关性和遥相关筛选,再逐步加入 climate indices,寻找尽量精简但仍具有预测能力的输入组合。


2.4 多模型集合而不是依赖单一模型

对于每套 SWE,作者分别建立:

  • GLM;
  • GPR;
  • Random Forest;
  • SVM。

因此共有:

text 复制代码
4 套 SWE × 4 种模型 = 16 个 base models

图5 不同 base models 与 meta-learner 的季节径流 LOOCV R²。来源:原论文 Fig. 6。
每个 base model 进行 LOOCV(留一交叉验证),只有:

RLOOCV2>0.2 R^2_{\mathrm{LOOCV}} > 0.2 RLOOCV2>0.2

的模型才进入后续 meta-learner。

最终利用 stacking / meta-learning 融合多个 base model 的结果。


2.5 用 Bootstrap 给出预测不确定性

作者并没有只给一条确定性预测结果,而是进行多次 bootstrap 重采样并重新训练模型。

对于同一年,可以得到大量预测值:

通过 Bootstrap 得到 500 个预测结果:

Q^(1),Q^(2),...,Q^(500) \hat Q^{(1)},\hat Q^{(2)},\ldots,\hat Q^{(500)} Q^(1),Q^(2),...,Q^(500)

将这些预测值从小到大排序,并取第 10 和第 90 百分位:

P10, P90\] \[P_{10},\\,P_{90}\] \[P10,P90

两者之间即构成 80% 预测不确定性区间(80% predictive uncertainty interval)

图6 不同预报发布日期下季节径流预测的80%预测不确定性区间。来源:原论文 Fig. 9。

因此论文不仅回答"预测是多少",还回答:

这个预测到底有多稳定?


3. 论文的主要创新点 / 特色

3.1 把"积雪状态"和"气候遥相关"同时用于季节径流预报

传统雪水文预报往往强调 SWE,而这篇论文进一步加入了 PDO、NAO、SCAN 等大尺度气候信号:

text 复制代码
当前积雪状态
+
大尺度气候背景
→
未来季节径流

SWE 表征流域已经积累下来的水量,而 climate oscillation 则可能提供未来数月降水和水文条件的提前信号。


3.2 用多 SWE + 多模型集合降低单一数据源的不确定性

论文没有直接判断哪套 SWE "最好",而是利用不同 SWE 和不同算法构建 ensemble。

这种思路很适合资料稀缺寒区:

与其押注某一个产品,不如让多个相对独立的信息源共同参与预报。


3.3 针对极小样本设计了简约预测框架

只有约 18 年季节径流样本,却没有直接使用复杂深度学习模型,而是:

text 复制代码
变量筛选
→ 小型 base models
→ LOOCV 筛选
→ stacking
→ bootstrap uncertainty

这是一种典型的"小样本优先保证泛化能力"的思路。


3.4 不仅看变量重要性,还看"增加这个变量是否真的提高预报精度"

论文同时比较:

text 复制代码
SWE-only
vs.
SWE + climate oscillations

并进一步分析各 predictor 的相对重要性。

这说明:

Feature importance 高,不等于加入这个变量后预测一定明显变准。

例如 Murghap 中 SCAN 在模型内部有一定 importance,但加入 climate oscillation 后相对于 SWE-only 模型并没有明显提高预报精度。


4. 作者得到了什么主要结论?

4.1 SWE 是寒区季节径流的重要可预报性来源

总体上,随着预报时间从 1 月逐渐接近 4 月:

text 复制代码
SWE 与 4--9 月径流的相关性增强
→
季节径流预测能力通常也增强

原因很直观:越接近融雪季,冬春积雪积累越完整,当前 SWE 越能代表随后可释放的水量。


4.2 Climate oscillations 能提供额外的长提前期信息

在多数流域中,加入 climate oscillation 后,预报精度优于仅使用 SWE 的模型。

图7 SWE-only 与 SWE+climate oscillations 模型的预测误差比较。来源:原论文 Fig. 7。
这说明: SWE 描述"当前已经存了多少水",

climate oscillation 则可能描述"未来水文气候背景可能往哪个方向发展"。

两类信息具有互补性。

但这种增益具有明显的流域差异,并不是所有流域都同样明显。


4.3 多模型 meta-learner 通常优于单一 base model

作者发现,集合模型能够较好捕捉季节径流的年际变化,并且相对于部分单一模型表现更稳定。

这说明在:

  • SWE 产品不确定;
  • 样本很少;
  • 不同流域主导机制不同

的条件下,ensemble 是一种有效的稳健化方法。


4.4 ERA5-L 和 MSWX SWE 往往与径流相关更高,但不能据此认定它们"更准确"

由于没有地面 SWE 观测,只能说:

ERA5-L / MSWX SWE 对季节径流具有更强的预测信息。

不能直接说:

ERA5-L / MSWX 的 SWE 就一定最接近真实积雪。

这是一个很重要的方法学提醒:

预测相关性 ≠ 变量本身的观测精度


5. 对寒区水文研究有什么启发?

(1) 寒区中长期预报的关键,不一定是预测未来每天的天气

对于季节尺度预报,更重要的是抓住具有"记忆"的慢变量,例如:

  • SWE;
  • 土壤冻结状态;
  • 土壤湿度;
  • 地下水/流域储水;
  • 前期降水和温度累积状态。

这些变量能够保存前期气候信息,并对未来数月径流产生持续影响。


(2) SWE 不应只是一个普通输入变量,而应被视为"水文状态"

寒区的核心过程可以理解为:

text 复制代码
降雪
→ SWE 积累
→ 升温
→ 融雪
→ 冻融状态变化
→ 入渗 / 产流变化
→ 径流

因此未来可以进一步从"直接把 SWE 输入机器学习模型"发展到:

显式模拟 SWE 积累---融化---冻融---径流响应,再用于中长期预报。


(3) 日尺度过程和月尺度预报并不矛盾

即使只有逐月实测径流,也可以:

text 复制代码
逐日气象驱动
→ 日尺度 SWE / 融雪 / 冻融状态演变
→ 聚合或编码当前流域状态
→ 预测未来 1--6 个月径流
→ 用逐月实测径流评价

即:

日尺度描述寒区过程 + 月---季节尺度进行径流预报

但需要注意:如果没有逐日实测径流,就不能声称模型已经准确恢复了未来 3--10 天的日径流过程。


6. 对中长期水文预报有什么启发?

(1)中长期预报要寻找"提前可知"的 predictor

一个变量能解释径流,并不意味着它能用于预报。

真正有价值的是:

在 forecast issue date 之前已经可以获得,同时与未来径流存在稳定关系的变量。

例如:

text 复制代码
前一年 November PDO
+ 当年 January SCAN
+ March SWE
→ April--September discharge

这种时间结构才真正具有 forecast lead time。


(2)应该设置多个预报发布日期

不要只做一个固定提前期,可以像这篇论文一样设置:

text 复制代码
1 Jan
1 Feb
1 Mar
1 Apr

或者在月尺度预报中设置:

text 复制代码
Lead 1
Lead 2
Lead 3
...
Lead 6 months

这样可以直接回答:

随着预见期增加,预报技巧下降了多少?哪些状态变量在长预见期最重要?


(3)相关分析只是"找候选变量",不能代替真正的预报验证

论文中的逻辑非常值得借鉴:

text 复制代码
相关性 / 遥相关分析
→ predictor screening
→ 建立模型
→ LOOCV
→ ensemble
→ uncertainty analysis

高相关只能说明:

这个变量"可能有用"。

真正能证明预报能力的仍然是:

对未参与训练年份的 out-of-sample forecast skill。


7. 总结

这篇论文最值得借鉴的地方,不是某一种具体机器学习算法,而是它建立了一套很清晰的寒区季节预报逻辑:

text 复制代码
大尺度气候遥相关提供"提前信息"
+
SWE 提供"当前积雪状态"
+
多源 SWE 和多模型集合降低不确定性
+
LOOCV 保证小样本下的泛化能力
+
Bootstrap 给出预测区间
→
未来暖季季节径流预报

第二部分:阅读过程中的疑问

《The value of hydroclimatic teleconnections for snow-based seasonal streamflow forecasting in Central Asia》阅读问题简要整理


1. 为什么论文使用 GPM IMERG V06,而不是 V07?

核心原因更可能是数据版本发布时间与研究时间线,而不是作者认为 V06 优于 V07。

  • 论文于 2024-06-07 投稿。
  • IMERG V07B Early/Late Run 于 2024-06-06 才正式开始近实时生产
  • 当时 V07 Late Run 的 2000 年以来历史回溯数据还没有完整处理完成。
  • 论文需要的是 near-real-time 的 Late Run,而不是 Final Run,因为研究目标是业务意义上的季节预报。
  • 因此作者研究开展阶段能够稳定获得、且覆盖 2000--2018 的完整近实时产品主要是 V06 Late Run

因此,新研究若现在复现其方法,可优先考虑 IMERG V07 Late Run;只有严格复现原论文时才有必要继续使用 V06。


2. 为什么定义 4--9 月径流?

论文的 predictand(预测目标) 是每年 4--9 月平均流量。

可以表示为:

Qseason=QApr−Sep Q_{\mathrm{season}} = Q_{\mathrm{Apr-Sep}} Qseason=QApr−Sep

也就是把每年 4--9 月作为一个整体的季节径流目标。

原因是中亚高山流域以积雪和融雪补给为主,4--9 月大致对应:

春季融雪开始 → 夏季高流量期 → 初秋退水期

所以论文不是预测某一天或某一个月,而是预测未来暖季整体径流状态。


3. "peak precipitation season" 和 4--9 月径流不是一回事

论文中有几个不同的时间窗口:

时间窗口 用途
4--9 月 预测目标:季节平均径流
2--6 月 / 2--7 月 peak precipitation season,用于遥相关分析
前一年 8 月--当年 7 月 搜索不同 climate index 的最佳 lead--lag 月份
1 Jan / 1 Feb / 1 Mar / 1 Apr 不同预报发布日期

注意:正文中对 peak precipitation season 出现了 Feb--Jun 与 Feb--Jul 的表述不一致,复现时需要结合代码或补充材料核对。


4. 为什么每组 predictors 是 "1 SWE + 最多 2 个 climate indices"?

作者规定每个 predictor set 最多 3 个变量

其中必须包含:

1 SWE 1\ \mathrm{SWE} 1 SWE

因此气候振荡指数最多再加入两个:

1 SWE+0∼2 COs 1\ \mathrm{SWE} + 0\sim2\ \mathrm{COs} 1 SWE+0∼2 COs

主要原因是:

  • 每个流域只有约 18 个年度样本;
  • predictor 太多容易严重过拟合;
  • climate indices 之间还可能存在信息冗余或共线性。

因此"最多两个 CO"是人为控制模型复杂度的限制,不是物理规律。


5. PDO + SCAN 是怎么选出来的?

不是简单取相关系数最大的两个,而是两阶段筛选。

第一阶段:遥相关预筛选

作者首先分析气候振荡指数与高降水季降水之间的关系,例如:

COm↔PFeb−Jul CO_m \leftrightarrow P_{\mathrm{Feb-Jul}} COm↔PFeb−Jul

同时也分析 climate indices 与季节径流之间的相关性,用于确定:

  • 哪个 climate index 值得考虑;
  • 哪个月份的 index 最有潜在预测价值。
第二阶段:逐步加入模型

从 SWE 开始:

SWE SWE SWE

再测试:

SWE+CO1 SWE + CO_1 SWE+CO1

以及:

SWE+CO1+CO2 SWE + CO_1 + CO_2 SWE+CO1+CO2

寻找能够改善预报、同时尽量精简的组合

因此,某流域最终选 PDO + SCAN,并不意味着这两个指数在所有流域都最好,而是该流域、该 forecast issue date 下的最佳精简组合。


6. 为什么 SWE 与径流相关高,不代表 SWE 产品本身更准确?

论文指出 ERA5-L 和 MSWX SWE 往往与季节径流相关更高,但没有地面 SWE 观测,因此不能判断哪套 SWE 更接近真实积雪。

必须区分下面两个概念。

SWE 与径流之间的相关性:

Corr(SWE,Q) Corr(SWE,Q) Corr(SWE,Q)

SWE 产品相对于真实 SWE 的误差:

Error(SWE,SWEtrue) Error(SWE,SWE_{\mathrm{true}}) Error(SWE,SWEtrue)

前者只能说明:

该 SWE 对径流预测更有用。

不能证明:

该 SWE 本身更准确。

因此作者保留多套 SWE,建立多模型 ensemble,而不是武断选择某一个 SWE 产品。

预测相关性 ≠ 变量本身的观测精度


7. Figure 3 和 Figure 4 分别在分析什么?

Figure 3

计算的是:

Corr(SWE,QApr−Sep) Corr(SWE,Q_{\mathrm{Apr-Sep}}) Corr(SWE,QApr−Sep)

即:

SWE 与未来 4--9 月季节平均径流之间的 Pearson 相关。

Figure 4

计算的是:

Corr(COm,PFeb−Jul) Corr(CO_m,P_{\mathrm{Feb-Jul}}) Corr(COm,PFeb−Jul)

即:

SOI / PDO / EAWR / NAO / SCAN 与 2--7 月降水之间的 Spearman 相关。

所以:

  • Fig. 3:SWE → 径流
  • Fig. 4:气候振荡 → 降水

8. Figure 5 中 November 和 April 是同一年吗?

不是。

例如预测年份为 ttt,1 April 预报 Amu Darya:

PDONov(t−1)+SCANJan(t)+SWEMar(t)→QApr−Sep(t) PDO_{\mathrm{Nov}(t-1)} + SCAN_{\mathrm{Jan}(t)} + SWE_{\mathrm{Mar}(t)} \rightarrow Q_{\mathrm{Apr-Sep}(t)} PDONov(t−1)+SCANJan(t)+SWEMar(t)→QApr−Sep(t)

判断依据:

  1. 方法中明确说明 climate indices 从前一年 8 月搜索到当年 7 月;
  2. 如果 1 Jan 预报使用同年 November,就会用到未来数据,显然不成立。

9. 为什么 Figure 5 和 Figure 6 只列出 1--4 月预报时间?

因为目标是:

QApr−Sep Q_{\mathrm{Apr-Sep}} QApr−Sep

所以作者只研究目标季开始前的季节预报

  • 1 Jan:提前约 3 个月;
  • 1 Feb:提前约 2 个月;
  • 1 Mar:提前约 1 个月;
  • 1 Apr:目标季开始时。

如果到 5--7 月再预测 4--9 月,就已经知道了目标季的一部分,不再是严格意义上的季前 seasonal forecast。


10. Figure 6 的 R2R^2R2 是和降水算的吗?

不是。

Figure 6 的 R2R^2R2 是:

R2(Qpred,Qobs) R^2(Q_{\mathrm{pred}},Q_{\mathrm{obs}}) R2(Qpred,Qobs)

即模型预测的 4--9 月季节平均径流 与实测季节平均径流之间的 LOOCV R2R^2R2。

  • 小点:不同 SWE 产品 × 不同 base model 的结果;
  • 红线:meta-learner / ensemble 的结果。

模型筛选时,作者保留:

RLOOCV2>0.2 R^2_{\mathrm{LOOCV}} > 0.2 RLOOCV2>0.2

的 base models。


11. Figure 9 的 80% predictive uncertainty interval 是怎么得到的?

作者不是只训练一次,而是使用 bootstrap 多次重采样并重新训练模型。

对于某一年,可以得到 500 个预测值:

Q^(1),Q^(2),...,Q^(500) \hat Q^{(1)},\hat Q^{(2)},\ldots,\hat Q^{(500)} Q^(1),Q^(2),...,Q^(500)

将这些预测值排序后,取第 10 和第 90 百分位:

P10,P90\] \[P_{10},P_{90}\] \[P10,P90

两者之间即构成 80% 预测不确定性区间

因为:

90%−10%=80% 90\%-10\%=80\% 90%−10%=80%

所以区间带不是"一次模型天然输出一个区间",而是:

多次 bootstrap 重训 → 多个预测值 → 分位数区间。

这主要反映的是有限样本导致的模型/参数不确定性


12. Figure 7 和 Figure 10 的逻辑有什么区别?

这是论文最容易混淆的地方。

Figure 7:看"加 CO 后有没有变准"

比较:

SWE-only 模型

和:

SWE + climate oscillations 模型

它回答的是:

气候振荡指数有没有 incremental predictive value

Figure 10:看"模型内部有多依赖这个变量"

采用 PDP-based feature importance。

可以简单表示为:

f^j(xj) \hat f_j(x_j) f^j(xj)

如果某变量变化时,PDP 曲线变化很大,则该变量 importance 高;如果 PDP 很平,则 importance 低。

因此应记住:

Feature importance ≠ 新增预测技巧

一个变量可以:

  • 在模型内部很重要;
  • 但删除它后预测精度几乎不下降。

Murghap 的 SCAN 就属于这种情况。


13. 为什么作者说 Murghap 加 CO 没有明显改善,但 Fig. 10 中 SCAN 又很重要?

两者不冲突。

Murghap 最终模型可包含:

SWE+SCAN SWE+SCAN SWE+SCAN

Fig. 10 表明:

SCAN 会明显影响模型输出。

但 Fig. 7 表明:

MAESWE+SCAN≈MAESWE MAE_{SWE+SCAN}\approx MAE_{SWE} MAESWE+SCAN≈MAESWE

所以:

SCAN 在模型中有作用,但没有明显增加 out-of-sample forecast skill。

因此应区分:

  • model importance
  • incremental forecast skill

14. "does not integrate any climate oscillations" 如何理解?

如果严格按最终 Fig. 5,Murghap 的模型实际包含 SCAN,因此:

"does not integrate any climate oscillations"

字面上不够准确。

但 Discussion 的科学意图显然是在解释 Fig. 7:

加入 climate oscillations 并没有明显提高 Murghap 的预测精度。

更准确的写法应是:

integrating COs provides little or no additional predictive skill.


相关推荐
西西弗Sisyphus17 分钟前
模型训练 不同批次大小与学习率下的训练损失对比(1)
学习·batchsize·learning rate
知识分享小能手21 分钟前
概理论与数理统计学习教程,从入门到精通,平稳随机过程(27)
学习·数据挖掘·概率论
2601_9672642833 分钟前
极客时间 AI Agent 全栈工程师训练营,全套学习资源齐全
人工智能·学习
薛定e的猫咪36 分钟前
(NeurIPS 2022)GraphGPS:MPNN 与全局注意力的融合之道
人工智能·深度学习·学习·算法
Z59981784140 分钟前
c#软件开发学习笔记--WPF(Canvas、数据绑定、MVVM模式、值转换器)
笔记·学习·c#
茯苓gao40 分钟前
从零开发 EtherCAT 主站(六):SOEM 初始化流程详解,主站是如何发现所有从站的?
笔记·嵌入式硬件·学习·信息与通信
老当益壮梁奶奶1 小时前
Linux软件编程学习笔记(九):消息队列、共享内存与信号灯详解
linux·c语言·笔记·学习
MartinYeung51 小时前
[论文学习]激活差异揭示后门:SAE架构对比研究
人工智能·学习·架构
小雪崩1 小时前
嵌入式学习 day35:进程间通信-消息队列、共享空间及有名信号量
linux·c语言·学习