pyemu.utils.metrics

Module Contents

Functions

_NSE(obs, mod)

Calculate the Nash-Sutcliffe Efficiency

_NNSE(obs, mod)

Calculate the Normalized Nash-Sutcliffe Efficiency

_MAE(mod, obs)

Calculate the Mean Absolute Error

_STANDARD_ERROR(mod, obs)

Calculate Standard Error as defined in TSPROC manual

_RELATIVE_STANDARD_ERROR(mod, obs)

Calculate Relative Standard Error as defined in TSPROC manual

_VOLUMETRIC_EFFICIENCY(mod, obs)

Calculate Volumetric Efficiency as defined in TSPROC manual

_MSE(mod, obs)

Calculate the Mean Squared Error

_RMSE(mod, obs)

Calculate the Root Mean Squared Error

_NRMSE_SD(mod, obs)

Calculate the Normalized Root Mean Squared Error

_NRMSE_MEAN(mod, obs)

Calculate the Normalized Root Mean Squared Error

_NRMSE_IQ(mod, obs)

Calculate the Normalized Root Mean Squared Error

_NRMSE_MAXMIN(mod, obs)

Calculate the Normalized Root Mean Squared Error

_PBIAS(mod, obs)

Calculate the percent bias

_BIAS(mod, obs)

Calculate Bias as defined in TSPROC manual

_RELATIVE_BIAS(mod, obs)

Calculate Relative Bias as defined in TSPROC manual

_KGE(mod, obs)

Calculate the Kling-Gupta Efficiency (KGE)

calc_metric_res(res[, metric, bygroups, drop_zero_weight])

Calculates unweighted metrics to quantify fit to observations for residuals

calc_metric_ensemble(ens, pst[, metric, bygroups, ...])

Calculates unweighted metrics to quantify fit to observations for ensemble members

Attributes

ALLMETRICS

pyemu.utils.metrics._NSE(obs, mod)

Calculate the Nash-Sutcliffe Efficiency (https://www.sciencedirect.com/science/article/pii/0022169470902556?via%3Dihub) :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Nash-Sutcliffe Efficiency

Return type:

NSE

pyemu.utils.metrics._NNSE(obs, mod)

Calculate the Normalized Nash-Sutcliffe Efficiency (https://meetingorganizer.copernicus.org/EGU2012/EGU2012-237.pdf) :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Nash-Sutcliffe Efficiency

Return type:

NSE

pyemu.utils.metrics._MAE(mod, obs)

Calculate the Mean Absolute Error :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Mean Absolute Error

Return type:

MAE

pyemu.utils.metrics._STANDARD_ERROR(mod, obs)

Calculate Standard Error as defined in TSPROC manual https://pubs.usgs.gov/tm/tm7c7/pdf/TM7_C7_112712.pdf

Parameters:
  • obs – numpy array of observed values

  • mod – numpy array of modeled values

pyemu.utils.metrics._RELATIVE_STANDARD_ERROR(mod, obs)

Calculate Relative Standard Error as defined in TSPROC manual https://pubs.usgs.gov/tm/tm7c7/pdf/TM7_C7_112712.pdf

Parameters:
  • obs – numpy array of observed values

  • mod – numpy array of modeled values

pyemu.utils.metrics._VOLUMETRIC_EFFICIENCY(mod, obs)

Calculate Volumetric Efficiency as defined in TSPROC manual https://pubs.usgs.gov/tm/tm7c7/pdf/TM7_C7_112712.pdf

Parameters:
  • obs – numpy array of observed values

  • mod – numpy array of modeled values

pyemu.utils.metrics._MSE(mod, obs)

Calculate the Mean Squared Error :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Mean Squared Error

Return type:

MSE

pyemu.utils.metrics._RMSE(mod, obs)

Calculate the Root Mean Squared Error :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Root Mean Squared Error

Return type:

RMSE

pyemu.utils.metrics._NRMSE_SD(mod, obs)

Calculate the Normalized Root Mean Squared Error normalized by observation standard deviation https://www.marinedatascience.co/blog/2019/01/07/normalizing-the-rmse/ :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Root Mean Squared Error normalized by observation standard deviation

Return type:

NRMSE_SD

pyemu.utils.metrics._NRMSE_MEAN(mod, obs)

Calculate the Normalized Root Mean Squared Error normalized by observation mean https://www.marinedatascience.co/blog/2019/01/07/normalizing-the-rmse/ :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Root Mean Squared Error normalized by observation mean

Return type:

NRMSE_SD

pyemu.utils.metrics._NRMSE_IQ(mod, obs)

Calculate the Normalized Root Mean Squared Error normalized by observation interquartile range https://www.marinedatascience.co/blog/2019/01/07/normalizing-the-rmse/ :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Root Mean Squared Error normalized by observation interquartile range

Return type:

NRMSE_SD

pyemu.utils.metrics._NRMSE_MAXMIN(mod, obs)

Calculate the Normalized Root Mean Squared Error normalized by observation max - min https://www.marinedatascience.co/blog/2019/01/07/normalizing-the-rmse/ :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Root Mean Squared Error normalized by observation max - min

Return type:

NRMSE_SD

pyemu.utils.metrics._PBIAS(mod, obs)

Calculate the percent bias :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Percent Bias

Return type:

PBIAS

pyemu.utils.metrics._BIAS(mod, obs)

Calculate Bias as defined in TSPROC manual https://pubs.usgs.gov/tm/tm7c7/pdf/TM7_C7_112712.pdf

Parameters:
  • obs – numpy array of observed values

  • mod – numpy array of modeled values

pyemu.utils.metrics._RELATIVE_BIAS(mod, obs)

Calculate Relative Bias as defined in TSPROC manual https://pubs.usgs.gov/tm/tm7c7/pdf/TM7_C7_112712.pdf

Parameters:
  • obs – numpy array of observed values

  • mod – numpy array of modeled values

pyemu.utils.metrics._KGE(mod, obs)

Calculate the Kling-Gupta Efficiency (KGE) (https://www.sciencedirect.com/science/article/pii/S0022169409004843) :param obs: numpy array of observed values :param mod: numpy array of modeled values

Returns:

Kling-Gupta Efficiency

Return type:

KGE

pyemu.utils.metrics.ALLMETRICS
pyemu.utils.metrics.calc_metric_res(res, metric='all', bygroups=True, drop_zero_weight=True)

Calculates unweighted metrics to quantify fit to observations for residuals

Parameters:
  • res (pandas DataFrame or filename) – DataFrame read from a residuals file or filename

  • metric (list of str) – metric to calculate (PBIAS, RMSE, MSE, NSE, MAE, NRMSE_SD, NRMSE_MEAN, NRMSE_IQ, NRMSE_MAXMIN) case insensitive Defaults to ‘all’ which calculates all available metrics

  • bygroups (Bool) – Flag to summarize by groups or not. Defaults to True.

  • drop_zero_weight (Bool) – flag to exclude zero-weighted observations

Returns:

single row. Columns are groups. Content is requested metrics

Return type:

pandas.DataFrame

pyemu.utils.metrics.calc_metric_ensemble(ens, pst, metric='all', bygroups=True, subset_realizations=None, drop_zero_weight=True)

Calculates unweighted metrics to quantify fit to observations for ensemble members

Parameters:
  • ens (pandas DataFrame) – DataFrame read from an observation

  • pst (pyemu.Pst object) – needed to obtain observation values and weights

  • metric (list of str) – metric to calculate (PBIAS, RMSE, MSE, NSE, MAE, NRMSE_SD, NRMSE_MEAN, NRMSE_IQ, NRMSE_MAXMIN) case insensitive Defaults to ‘all’ which calculates all available metrics

  • bygroups (Bool) – Flag to summarize by groups or not. Defaults to True.

  • subset_realizations (iterable, optional) – Subset of realizations for which to report metric. Defaults to None which returns all realizations.

  • drop_zero_weight (Bool) – flag to exclude zero-weighted observations

Returns:

rows are realizations. Columns are groups. Content is requested metrics

Return type:

pandas.DataFrame