【水文模型】评价指标


模型模拟结果的评价主要通过有些评价指标结合时间序列曲线图来进行。常用的评价指标包括均方根差(Root Mean Square Error, RMSE)、均方误差(Mean Square Error, RSE)、平均绝对误差(Mean Abosolute Error, MSE)、相关系数(Correlation Coefficient, CC)、纳什效率系数(Nash-Sutcliffe efficiency coefficient, NSE)和偏差百分比(Percent bias, Pbias)等,用于检测模型的系统误差和随机误差以及实测值与模拟值之间的关系或偏差程度。

1 皮尔逊相关系数(Pearson’s correlation coefficient, PCC)

1.1 简介

在这里插入图片描述

1.2 MATLAB实现代码

MATLAB实现代码如下:

function PCC = GetPCC(Qs, Qo)
% 输入变量
% Qs    模拟径流
% Qo   实测径流
% 输出变量
% PCC       皮尔逊相关系数(Pearson’s correlation coefficient, PCC)

if length(Qs)==length(Qo)
    COV = cov(Qs, Qo);
    PCC = COV(1,2)/std(Qs)/std(Qo);
else
    error("实测径流和模拟径流长度不等");
end

end

2 百分比偏差(Percent bias, Pbias)

2.1 简介

百分比偏差Pbias(%),又称相对误差,表示测量模拟的水流的百分比偏差大于或小于相应的推断的自然水流,越接近0模型效果越好:
在这里插入图片描述
说明: 体现模拟值和实测值的累积偏差,当模拟水文过程与实际趋势贴合情况良好时,PBIAS可更加精确地评估模型总水量平衡的效果。最优值为0,表示模型模拟准确,正值表示模型低估观测值的偏差,负值表示模型高估观测值的偏差。

2.2 MATLAB实现代码

MATLAB实现代码如下:

function Pbias = GetPbias(Qs, Qo)
% 输入变量
% Qs    模拟径流
% Qo   实测径流
% 输出变量
% Pbias     百分比偏差/相对误差(Percent bias, Pbias)

if length(Qs)==length(Qo)
    Qs_avg = mean( Qs );
    Qo_avg = mean( Qo );
    Pbias = (Qs_avg -Qo_avg )/Qo_avg *100;
else
    error("实测径流和模拟径流长度不等");
end

end

3 纳什效率系数(the Nash-Sutcliffe efficiency coefficient, NSE)

3.1 简介

在这里插入图片描述
说明: 体现模拟径流和实测径流的拟合程度,但会赋予洪峰段更高的计算权重,容易忽视平水期或枯水期的拟合情况

3.2 MATLAB实现代码

MATLAB实现代码如下:

function NSE = GetNSE(Qs, Qo)
% 输入变量
% Qs    模拟径流
% Qo   实测径流
% 输出变量
% NSE       纳什效率系数(Nash-Sutcliffe efficiency coefficient, NSE)

if length(Qs)==length(Qo)
    QoAve = mean(Qo);
    NSE = 1- sum( (Qs-Qo).^2 )/sum( (Qo-QoAve).^2 );
else
    error("实测径流和模拟径流长度不等");
end

end

4 克林-古普塔效率系数(Kling-Gupta efficiency coefficient, KGE)

4.1 简介

KGE测量的是一个点到最优点的欧几里得距离,相关系数(correlation coefficient, PCC)、偏置比(bias ration, BR)和相对变化率(relative variablity, RV)等于1:
取值范围:(-∞,1)
在这里插入图片描述

4.2 MATLAB实现代码

MATLAB实现代码如下:

function KGE = GetKGE(Qs, Qo)
% 输入变量
% Qs    模拟径流
% Qo   实测径流
% 输出变量
% KGE       克林-古普塔效率系数(Kling-Gupta efficiency coefficient, KGE)

if length(Qs)==length(Qo)
    QsAve = mean(Qs);
    QoAve = mean(Qo);
    COV = cov(Qs, Qo);
    CC = COV(1,2)/std(Qs)/std(Qo);
    BR = QsAve/QoAve;
    RV = ( std(Qs)/QsAve )/ ( std(Qo)/QoAve );
    KGE = 1- ( (CC-1)^2+(BR-1)^2+(RV-1)^2 )^0.5;
else
    error("实测径流和模拟径流长度不等");
end

end

5 决定系数R^2(Coefficient of Determination)

5.1 简介

在这里插入图片描述

说明: 模拟值与实测值的线性相关程度,弊端是R2对模拟值整体偏高或偏低的偏差响应不明显

5.2 MATLAB实现代码

MATLAB实现代码如下:

function R2 = GetR2(Qs, Qo)
% 输入变量
% Qs    模拟径流
% Qo   实测径流
% 输出变量
% R2         决定/相关系数R2(Coefficient of Determination)

if length(Qs)==length(Qo)
    QsAve = mean(Qs);
    QoAve = mean(Qo);
    tempX = sum( (Qo-QoAve).*(Qs-QsAve));
    tempY = sum( (Qo-QoAve).^2 )^0.5 * sum( (Qs-QsAve).^2)^0.5 ;
    R2 = tempX/tempY;
else
    error("实测径流和模拟径流长度不等");
end

end

6 归一化均方根误差(NRMSE)

6.1 简介

6.2 MATLAB实现代码

7 均方根误差与观测值标准差的比率(RSR)

7.1 简介

在这里插入图片描述
说明: RSR从最优值0变化到较大的正值,该值越小,表示模型性能越好。

7.2 MATLAB实现代码

MATLAB实现代码如下:

function RSR = GetRSR(Qs, Qo)
% 输入变量
% Qs    模拟径流
% Qo   实测径流
% 输出变量
% RSR       均方根误差与观测值标准差的比率(RSR)

if length(Qs)==length(Qo)
    QoAve = mean(Qo);
    RSR = ( sum(Qo-Qs).^2 )^0.5/( sum(Qo-QoAve).^2 )^0.5;
else
    error("实测径流和模拟径流长度不等");
end

end

模型评价

一般认为,当R2>0.6,NSE>0.5,PBIAS≤±15%以及RSR<0.7时,模型的模拟结果是可信的。
根据 Moriasi et al.(2007)径流模拟评价,RSR、NSE以及PBIAS的建议取值及相应的模型评价等级如下表所示:
在这里插入图片描述

参考

1.论文-J2022-High-quality reconstruction of China’s natural streamflow-缪驰远
2.论文-D2022-气候变化下长江流域未来径流与旱涝变化特征研究-岳艳琳

  • 23
    点赞
  • 142
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WW、forever

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值