算法指标

通用指标

二值准确率

对于二值化的预报要素(例如晴雨),可以通过对预报和真值的匹配程度来统计准确率。

二值准确率是对于预报和真值完全一致的样本计为“预报准确”,然后计算“预报准确”样本数与预报总样本数之间的比值。公式如下:

\[ACC_{b} = \frac{C_{b}}{N} \times 100\%\]

式中:

\(ACC_{b}\)——二值预报准确率。

\(C_{b}\)——预报与真值之间匹配一致的样本个数。

\(N\)——预报的总样本个数。

代码示例:

>>> import numpy as np
>>> from cyeva import calc_binary_accuracy_ratio
>>> from cyeva import Comparison

>>> obs = np.array([False, True, True, False])
>>> fct = np.array([False, False, True, True])

>>> calc_binary_accuracy_ratio(obs, fct)
50.0

>>> cp = Comparison(observation=obs, forecast=fct)
>>> cp.calc_binary_accuracy_ratio()
50.0

误差准确率

对于非二值化的预报要素,可以通过误差阈值过滤的方式来定义“准确”与“不准确”,进而再进行准确率的统计计算。

误差准确率是对于误差在允许范围内计为“预报准确”,然后计算“预报准确”样本数与预报总样本数之间的比值。公式如下:

\[ACC_{e} = \frac{C_{e}}{N} \times 100\%\]

式中:

\(ACC_{e}\)——预报与真值之间误差范围在 \(e\) 以内的准确率。

\(C_{e}\)——预报与真值之间误差范围在 \(e\) 以内的样本个数。

\(N\)——预报的总样本个数。

代码示例:

>>> import numpy as np
>>> from cyeva import calc_diff_accuracy_ratio
>>> from cyeva import Comparison

>>> obs = np.array([1, 2, 3, 4, 5])
>>> fct = np.array([1.5, 2.4, 3.1, 4.4, 6])

>>> calc_diff_accuracy_ratio(obs, fct, limit=0.5)
80.0

>>> cp = Comparison(observation=obs, forecast=fct)
>>> cp.calc_diff_accuracy_ratio(limit=0.5)
80.0

均方根误差(RMSE)

均方根误差是预测值与真实值偏差的平方与观测次数比值的平方根,可用于衡量预测值与真值的偏离程度。公式如下:

\[RMSE = \sqrt{\frac{\sum_{k=1}^n (O_{k} - F_{k})^2}{n}}\]

式中:

\(RMSE\)——均方根误差。

\(O_{k}\)——第 \(k\) 个观测值。

\(F_{k}\)——第 \(k\) 个预报值。

\(n\)——总样本数量

平均绝对误差(MAE)

平均绝对误差MAE是绝对误差的平均值,它其实是更一般形式的误差平均值。公式如下:

\[MAE = \frac{\sum_{k=1}^n |O_{k} - F_{k}|}{n}\]

式中:

\(MAE\)——平均绝对误差。

\(O_{k}\)——第 \(k\) 个观测值。

\(F_{k}\)——第 \(k\) 个预报值。

\(n\)——总样本数量

剩余平方和(RSS)

剩余平方和是统计学术语,也称作残差平方和,是实际值与估计值之差的平方的总和,也就是误差项平方的总和,利用剩余平方和可以很好地表示剩余的总和。公式如下:

\[RSS = \sum_{k=1}^n (O_{k} - F_{k})^2\]

式中:

\(RSS\)——剩余平方和。

\(O_{k}\)——第 \(k\) 个观测值。

\(F_{k}\)——第 \(k\) 个预报值。

线性回归参数

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。

斜率和截距

斜率表示直线的陡峭程度,截距表示直线与轴相交的位置。斜率和截距定义两个变量之间的线性关系,并可以用于估计变化的平均速度。斜率的量值越大,则直线越陡峭,且变化速度越大。通常,此关系可以由方程 \(y = ax + b\) 表示,其中 \(b\) 是截距,\(a\) 是斜率。

皮尔逊相关系数 r

皮尔逊相关系数(Pearson correlation coefficient),是用于度量两个变量 x 和 y 之间的相关程度(线性相关),其值介于 -1 与 1 之间,公式如下:

\[r = \frac{\sum(F - \bar{F})(O - \bar{O})}{\sqrt{\sum(F-\bar{F})^2}\sqrt{\sum(O - \bar{O})^2}}\]

式中:

\(r\)——皮尔逊相关系数。

\(O\)——观测值。

\(\bar{O}\)——观测平均值。

\(F\)——预报值。

\(\bar{F}\)——预报平均值。

皮尔逊相关系数 r 的值在 -1 到 1 之间,若 r = 1,则为完美正相关,若 r = -1 则为完美负相关,若 r = 0 则完全不相关。

P值

P值是t检验用于检测效果的一个衡量度,p值小于0.05就说明该变量前面的系数显著。

卡方(χ2)

皮尔逊卡方检验是对分类数据的统计检验。它用于确定数据是否与预期的数据有显著差异。其公式如下:

\[\chi^2 = \sum \frac{(O - F)^2}{F}\]

式中:

\(\chi^2\)——卡方值。

\(O\)——观测值。

\(F\)——预报值。

降水指标

降水分级规则

对于降水等级的划分,目前行业上有两个国家标准对12小时和24小时的等级判断阈值做了定义:

  1. 《中华人民共和国气象行业标准——降水量等级 GB/T 28592——2012》

  2. 《中华人民共和国气象行业标准——降雨过程等级 QX/T 489——2019》

具体如下:

等级

12h降水量 (mm)

24h降水量 (mm)

小雨

0.1 ~ 4.9

0.1 ~ 9.9

中雨

5.0 ~ 14.9

10.0 ~ 24.9

大雨

15.0 ~ 29.9

25.0 ~ 49.9

暴雨

30.0 ~ 69.9

50.0 ~ 99.9

大暴雨

70.0 ~ 139.9

100.0 ~ 249.9

特大暴雨

>=140.0

>=250.0

常见的模式预报的预报间隔为1小时和3小时,因此对于1小时和3小时降水等级的划分是非常有必要的,但是对于此类间隔的预报,目前并没有国家标准对其进行明确定义。我们基于实践的经验,对1小时和3小时按以下阈值进行划分:

等级

1h降水量 (mm)

3h降水量 (mm)

小雨

0.1 ~ 1.9

0.1 ~ 2.9

中雨

2.0 ~ 4.9

3.0 ~ 9.9

大雨

5.0 ~ 9.9

10.0 ~ 19.9

暴雨

10.0 ~ 19.9

20.0 ~ 49.9

大暴雨

>=20.0

50.0 ~ 69.9

特大暴雨

>=70.0

综上,在cyeva中,降水等级降遵循以下这张表:

编号

等级

1h降水量 (mm)

3h降水量 (mm)

12h降水量 (mm)

24h降水量 (mm)

0

无雨

<0.1

<0.1

<0.1

<0.1

1

小雨

0.1 ~ 1.9

0.1 ~ 2.9

0.1 ~ 4.9

0.1 ~ 9.9

2

中雨

2.0 ~ 4.9

3.0 ~ 9.9

5.0 ~ 14.9

10.0 ~ 24.9

3

大雨

5.0 ~ 9.9

10.0 ~ 19.9

15.0 ~ 29.9

25.0 ~ 49.9

4

暴雨

10.0 ~ 19.9

20.0 ~ 49.9

30.0 ~ 69.9

50.0 ~ 99.9

5

大暴雨

>=20.0

50.0 ~ 69.9

70.0 ~ 139.9

100.0 ~ 249.9

6

特大暴雨

>=70.0

>=140.0

>=250.0

备注

上表同时收录于 降水等级表

基于上表,我们定义 降水量值落在降水等级表中某个等级上下阈值之内的降水即为对应等级的降水等级 ,各级别之间是互斥的,也就是同一个降水量不会同时属于两个降水等级。

例如:

  • 1小时降水量为 0.10 mm,则对应为小雨级别。

  • 3小时降水量为 15 mm,则对应为大雨级别。

  • 12小时降水量为 120 mm,则对应为大暴雨级别。

  • 24小时降水量为 280 mm,则对应为特大暴雨级别。

备注

1小时降水未设置特大暴雨级别

累积降水分级规则

在降水等级的基础上,我们定义累积降水等级为: 降水量值落在降水等级表中某个等级下阈值之上的降水即属于对应等级的累积降水等级 ,各级别之间不是互斥的,也就是同一个降水量可能会同时属于多个降水等级,其阈值参考下表:

编号

等级

1h降水量 (mm)

3h降水量 (mm)

12h降水量 (mm)

24h降水量 (mm)

0

无雨

<0.1

<0.1

<0.1

<0.1

1

小雨

>=0.1

>=0.1

>=0.1

>=0.1

2

中雨

>=2.0

>=3.0

>=5.0

>=10.0

3

大雨

>=5.0

>=10.0

>=15.0

>=25.0

4

暴雨

>=10.0

>=20.0

>=30.0

>=50.0

5

大暴雨

>=20.0

>=50.0

>=70.0

>=100.0

6

特大暴雨

>=70.0

>=140.0

>=250.0

备注

上表同时收录于 累积降水等级表

例如:

  • 1小时降水量为 0.10 mm,则对应为小雨级别。

  • 3小时降水量为 15 mm,则该次降水量最大达到大雨级别,但同时也达到了小雨和中雨级别的阈值,因此可以认为该降水量同时属于小雨、中雨和大雨。

  • 12小时降水量为 120 mm,则该次降水量达到了大暴雨级别,但同时也达到了小雨、中雨、大雨和暴雨级别的阈值,因此可以认为该降水量同时属于小雨、中雨、大雨、暴雨和大暴雨。

  • 以此类推

备注

累积降水等级相对于降水等级来说对等级的划分更加宽容,在相同算法下按照累积降水等级计算的评分会更高。

晴雨准确率

晴雨准确率,是指根据一定阈值对降水量进行“晴雨”识别,识别出“晴天”或“雨天”,然后将预报和观测同为“晴天”和同为“雨天”的计为“准确”,二者不一致的计为“不准确”,然后对该结果进行准确率评估的比例值。公式如下:

\[ACC_{rs} = \frac{C_{rs}}{N} \times 100\%\]

式中:

\(ACC_{rs}\)——晴雨预报准确率。

\(C_{rs}\)——晴雨预报与真值之间匹配一致的样本个数。

\(N\)——晴雨预报的总样本个数。

备注

晴雨准确率就是一种有物理意义的 二值准确率

降水量误差准确率

降水量误差准确率,是指预报与观测之间的偏差在指定范围内计为“准确”,而偏差超出范围的值计为“不准确”,然后对该结果进行准确率评估的比例值。公示如下:

\[ACC_{re} = \frac{C_{e}}{N} \times 100\%\]

式中:

\(ACC_{re}\)——降水量预报与真值之间误差范围在 \(re\) 以内的准确率。

\(C_{re}\)——降水预报与真值之间误差范围在 \(re\) 以内的样本个数。

\(N\)——降水预报的总样本个数。

备注

降水量误差准确率就是 误差准确率 对降水要素的套用。

晴雨命中率/空报率/漏报率

对于晴雨来说,我们通常会计算命中率、空报率、漏报率等直观的指标来评估预报的准确性,在计算这些指标之前,我们需要先知道 命中空报漏报正确否定 的概念。

观测

预报

总计

命中

空报

预报“是”

漏报

正确否定

预报“否”

总计

观测“是”

观测“否”

总计

  • 命中(hits) 即为观测和预报都认为 (例如预报下雨观测也下雨)的次数;

  • 漏报(misses) 即为预报认为 而观测得到 (例如预报无雨而观测到下雨)的次数;

  • 空报(false alarms) 即为预报认为 而观测认为 (例如预报下雨而观测无雨)的次数。

  • 正确否定(correct negatives) 即为预报认为 而观测认为 (例如预报无雨且观测也无雨)的次数。

命中率

命中率是命中次数与观测为 事件次数的比值。公式如下:

\[HR = \frac{hits}{hits + misses} \times 100\%\]

空报率

空报率是空报次数与预报为 事件次数的比值。公式如下:

\[FAR = \frac{false\ alarms}{hits + false\ alarms} \times 100\%\]

漏报率

漏报率是命中次数与观测为 事件次数的比值。公式如下:

\[MR = \frac{misses}{hits + misses} \times 100\%\]

晴雨BIAS评分

倾向评分,是指测量预报事件频率与观测事件频率的比率。指示预报系统是否倾向于预报不足或预报过度事件。不测量预报与观测的对应程度,只测量相对频率。公式如下:

\[BIAS = \frac{hits + false\ alarms}{hits + misses}\]

BIAS评分在 0 到 ∞ 之间,BIAS > 1 时表示预报过度,BIAS < 1 时表示预报不足,BIAS = 1 时表示完美预报。

晴雨TS评分

TS评分(Threat score)是一种衡量二值化预报与观测之间准确程度的指标,它可以视为将正确否定排除以后的准确率指标。TS评分只考虑预报的数量,对命中数量敏感,对漏报和空报施加处罚。对于晴雨这种二值化预报来说,TS 是一种普遍使用的评价指标。

TS 评分的计算也依赖于上述命中率/空报率/漏报率的表格,具体如下:

\[TS = \frac{hits}{hits + misses + false\ alarms}\]

TS 评分的范围在 0 到 1 之间,数值越大则表示预报效果越好。

晴雨ETS评分

ETS 评分(Equitable threat score)是对 TS 评分的一种改进,它结合了降水随机概率以平衡由于气候区别而导致的评分不公平的情况(例如在降水较多的区域比降水稀少的区域更容易预报准确)。ETS 评分通常用于数值预报,因为它能够在对不同区域的评分中表现得更公证,它的公式如下:

\[ETS = \frac{hits - hits_{random}}{hits + misses + false\ alarms - hits_{random}}\]

式中:

\[hits_{random} = \frac{(hits + misses)(hits + false\ alarms)}{total}\]

ETS 评分的范围在 -1/3 到 1 之间,数值越大则表示预报效果越好。

降水分级命中率/空报率/漏报率

降水分级命中率/空报率/漏报率与晴雨命中率/空报率/漏报率类似,只是在计算指标之前,需要先用降水分级的阈值对降水量进行二值化,将阈值限制之内的降水样本标记为 True,在阈值范围之外的样本设为 False,对于降水等级为 n 的降水事件,可以基于下表进行一系列指标的计算。

观测

预报

\(雨级_0\)

\(雨级_{n-1}\)

\(雨级_n\)

\(雨级_{n+1}\)

\(雨级_{max}\)

\(雨级_0\)

正确否定

正确否定

空报

正确否定

正确否定

正确否定

正确否定

空报

正确否定

正确否定

\(雨级_{n-1}\)

正确否定

正确否定

空报

正确否定

正确否定

\(雨级_n\)

漏报

漏报

命中

漏报

漏报

\(雨级_{n+1}\)

正确否定

正确否定

空报

正确否定

正确否定

正确否定

正确否定

空报

正确否定

正确否定

\(雨级_{max}\)

正确否定

正确否定

空报

正确否定

正确否定

  • 命中(hits) 即为观测和预报都落在同一个雨级的次数;

  • 漏报(misses) 即为预报未采纳的雨级被观测采纳的次数;

  • 空报(false alarms) 即为预报采纳的雨级未被观测采纳的次数。

  • 正确否定(correct negatives) 即为预报和观测均为采纳的雨级的次数。

备注

降水分级规则可以采用 降水分级规则累积降水分级规则

命中率

降水分级命中率基于降水分级的二值化逻辑后套用前述 命中率 公式即可。

空报率

降水分级空报率基于降水分级的二值化逻辑后套用前述 空报率 公式即可。

漏报率

降水分级漏报率基于降水分级的二值化逻辑后套用前述 漏报率 公式即可。

降水分级TS评分

降水分级 TS 评分对单一等级降水的中间量套用 晴雨TS评分 公式即可。

降水分级ETS评分

降水分级 ETS 评分对单一等级降水的中间量套用 晴雨ETS评分 公式即可。

降水分级BIAS评分

降水分级 ETS 评分对单一等级降水的中间量套用 晴雨ETS评分 公式即可。

风指标

本项目对于风的预报的针对性检验评分,主要参考了《中华人民共和国国家标准:天气预报检验 风预报》(GB/T37302—2019)中的相关指标定义。当然,除了国标中列出的指标以外,我们还额外增加了一些自定义的实用指标。

风速均方根误差

风速均方根误差是预报风速与观测风速之间的均方根误差,均方根误差的定义及计算方法请参考 均方根误差(RMSE) 章节。

风速平均绝对误差

风速平均绝对误差是预报风速雨观测风速之间的平均绝对误差,平均绝对误差的定义及计算方法请参考 平均绝对误差(MAE) 章节。

风级准确率

风级准确率为风力等级预报正确次数与风力等级预报总次数的百分比。预报风力和实况风力在同一风力等级,则为风力等级预报正确。公式如下:

\[S_{AC,k} = \frac{R_{s,k}}{N_{s,k}} \times 100\%\]

式中:

\(S_{AC,k}\)——风力等级预报准确率,下角标 \(k\) 为规定的某个风力检验等级标识;

\(R_{s,k}\) ——风力等级预报正确次数。

\(N_{s,k}\) ——风力等级预报总次数。

备注

本项目的风力等级采用 《中华人民共和国国家标准:风力等级 GB/T 28591-2012》 表一中的风力等级划分,下同。具体等级表见附录 风力等级表

风级偏强/偏弱率

风级偏强为风力等级预报偏强次数与风力等级预报总次数的百分比。预报风力所在的检验等级大于实况风力所在的检验等级,则为风力等级预报偏强。 同理,风级偏弱率为风力等级预报偏弱次数与风力等级预报总次数的百分比。预报风力所在的检验等级小于实况风力所在的检验等级,则为风力等级预报偏弱。公式如下:

\[ \begin{align}\begin{aligned}S_{FS,k} = \frac{S_{s,k}}{N_{s,k}} \times 100\%\\S_{FW,k} = \frac{W_{s,k}}{N_{s,k}} \times 100\%\end{aligned}\end{align} \]

式中:

\(S_{FS,k}\)——风力等级预报偏强率,下角标 \(k\) 为规定的某个风力检验等级标识;

\(S_{s,k}\) ——风力等级预报偏强次数。

\(S_{FW,k}\)——风力等级预报偏弱率,下角标 \(k\) 为规定的某个风力检验等级标识;

\(W_{s,k}\) ——风力等级预报偏弱次数。

\(N_{s,k}\) ——风力等级预报总次数。

风速评分

风速评分是衡量预报风级与观测风级之间匹配程度的分值。其算法为:若预报与观测处于同一风级,则记1分;若二者为相邻风级,则记0.6分;若二者风级相差2级,则记0.4分;其余情况不得分,累加所有样本的评分后取算数平均值即为样本的风速评分。风速评分表请见: 风速评分表

风向方位准确率

风向方位准确率为预报风向方位与观测风向方位一致样本书与总样本数之间的比值,可分为 8 分位风向准确率和 16 分位风向准确率。其公式如下:

\[ACC_{d} = \frac{C_{d}}{N} \times 100\%\]

式中:

\(ACC_{d}\)——风向方位准确率。

\(C_{d}\)——风向预报与真值之间匹配一致的样本个数。

\(N\)——预报的总样本个数。

备注

本项目的风向采用 《中华人民共和国国家标准:地面气象观测规范 风向和风速 GB/T 35227-2017》 表1中的风向方位和符号,下同。具体等级表见附录 风向方位符号表

风向角度均方根误差

风向角度均方根误差,是对以°作为单位的风向角度计算的预报风向角度与观测风向角度的 均方根误差(RMSE) 。对于风向来说特殊的是,需要取两个角度之间最小扇形的角度作为差值进行计算。

风向角度平均绝对误差

风向角度平均绝对误差,是对以°作为单位的风向角度计算的预报风向角度与观测风向角度的 平均绝对误差(MAE) 。对于风向来说特殊的是,需要取两个角度之间最小扇形的角度作为差值进行计算。

风向角度误差准确率

风向角度误差准确率,是对以°作为单位的风向角度计算的预报风向角度与观测风向角度的 误差准确率 。对于风向来说特殊的是,需要取两个角度之间最小扇形的角度作为差值进行计算。

风向评分

风向评分是衡量风向准确率的一个指标,风向评分使用风向方位(而非风向角度)作为基准进行评估。

  • 对于 8 分位风向,预报和观测风向方位完全匹配得 1 分,二者风向方位相差 1 个方位得 0.6 分,其余情况得 0 分。

  • 对于 16 分位风向,预报和观测风向方位完全匹配得 1 分,二者风向方位相差 1 个方位得 0.8 分,相差 2 个方位得 0.6 分,其余情况得 0 分。

风向方位采用:风向方位符号表