-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathCalcErrorStats.py
More file actions
executable file
·45 lines (32 loc) · 1.03 KB
/
Copy pathCalcErrorStats.py
File metadata and controls
executable file
·45 lines (32 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Jun 12 16:21:06 2020
@author: mtd
"""
from numpy import mean,sqrt,log,std
from MetroManVariables import ErrorStats
def CalcErrorStats(AllTruth,E,DAll):
Qt=mean(AllTruth.Q,axis=0)
QhatAvg=mean(E.AllQ,axis=0)
Stats=ErrorStats()
Stats.RMSE=sqrt(mean( (Qt-QhatAvg)**2 ) )
Stats.rRMSE=sqrt(mean( ( (Qt-QhatAvg)/Qt )**2 ) )
Stats.nRMSE=Stats.RMSE/mean(Qt)
print('Discharge RMSE: %.6f' %Stats.RMSE)
print('Discharge nRMSE: %.6f' %Stats.nRMSE)
r=QhatAvg-Qt
logr=log(QhatAvg)-log(Qt)
Stats.NSE=1-sum(r**2)/sum( (Qt-mean(Qt))**2 )
Stats.VE=1- sum(abs(r))/sum(Qt)
Stats.bias=mean(r)
Stats.stdresid=std(r)
Stats.nbias = Stats.bias/mean(Qt)
Stats.MSC=log( sum((Qt-mean(Qt))**2)/sum(r**2) -2*2 / DAll.nt )
Stats.meanLogRes=mean(logr)
Stats.stdLogRes=std(logr)
Stats.meanRelRes=mean(r/Qt)
Stats.stdRelRes=std(r/Qt)
Stats.Qbart=mean(Qt)
Stats.Stats=Stats
return Stats