Skip to content
Snippets Groups Projects

Resolve "add metric MNMB"

Merged Ghost User requested to merge lukas_issue380_feat_add-metric-mnmb into develop
2 files
+ 54
3
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -225,14 +225,28 @@ def index_of_agreement(a, b, dim=None):
return 1 - frac
def modified_normalized_mean_bias(a, b, dim=None):
"""Calculate modified normalized mean bias (MNMB) where a is the forecast and b the reference (e.g. observation)."""
N = np.count_nonzero(a) if len(a.shape) == 1 else a.notnull().sum(dim)
return 2 * ((a - b) / (a + b)).sum(dim) / N
def calculate_error_metrics(a, b, dim):
"""Calculate MSE, RMSE, MAE, and IOA. Aditionally, return number of used values for calculation."""
"""Calculate MSE, RMSE, MAE, IOA, and MNMB. Additionally, return number of used values for calculation.
:param a: forecast data to calculate metrics for
:param b: reference (e.g. observation)
:param dim: dimension to calculate metrics along
:returns: dict with results for all metrics indicated by lowercase metric short name
"""
mse = mean_squared_error(a, b, dim)
rmse = np.sqrt(mse)
mae = mean_absolute_error(a, b, dim)
ioa = index_of_agreement(a, b, dim)
mnmb = modified_normalized_mean_bias(a, b, dim)
n = (a - b).notnull().sum(dim)
return {"mse": mse, "rmse": rmse, "mae": mae, "ioa": ioa, "n": n}
return {"mse": mse, "rmse": rmse, "mae": mae, "ioa": ioa, "mnmb": mnmb, "n": n}
def mann_whitney_u_test(data: pd.DataFrame, reference_col_name: str, **kwargs):
Loading