ocmw.core.statsTools module

A set of functions for generating validation statistics based on timeseries of modelled and observed values.

The circ_ functions apply the metrics to circular parameters, e.g. heading or wave direction.

corr_coef

Validation Metric: Correlation Coefficient

bias

Validation Metric: Bias

mean_bias

Validation Metric: Mean Bias

norm_mean_bias

Validation Metric: Normalised mean bias

mean_norm_bias

Validation Metric: Mean normalised bias

mean_absolute_error

Validation Metric: Mean absolute error

norm_ma_error

Validation Metric: Normalised mean absolute error

rms_error

Validation Metric: Root-mean-square error

norm_rmse

Validation Metric: Normalised root-mean-square error

goodness_of_fit

Validation Metric: Goodness-of-fit

scatter_index

Validation Metric: Scatter index

reliability_index

Validation Metric: Reliability index

skill_score

Validation Metric: Skill score

model_efficiency

Validation Metric: Model efficiency

circ_mod_pi

Fix angular range in radians to -pi <= theta <= pi

circ_mean

Calculate mean of angular data for range (-180 to 180)

circ_std

Calculate standard deviation of angular data for range (-180 to 180)

circ_corr

Validation Metric (Circular): Correlation Coefficient

circ_mean_bias

Validation Metric (Circular): Mean Bias

circ_norm_mean_bias

Validation Metric (Circular): Normalised mean Bias

circ_mean_abs_error

Validation Metric (Circular): Mean absolute error

circ_norm_ma_error

Validation Metric (Circular): Normalised mean absolute error

circ_rms_error

Validation Metric (Circular): Root-mean-square error

circ_norm_rmse

Validation Metric (Circular): Normalised root-mean-square error

circ_goodness_of_fit

Validation Metric (Circular): Goodness-of-fit

circ_scatter_index

Validation Metric (Circular): Scatter index

stats_metrics_circular

Calculate circlar validation metrics for a pair of modelled and observation time series

stats_metrics

Calculate standard validation metrics for a pair of modelled and observation time series

initialize_results

Initialise a dictionary for collecting validation results

store_results

Store validation results record in the results dictionary

save_results

Save tabulated validation results as an ASCII file

display_metrics

Display validation results as a table on the standard output

display_results_metrics

Display validation results as a table on the standard output

Functions for generating validation statistics based on timeseries of modelled and observed values.

ocmw.core.statsTools.corr_coef(model, obs)[source]

Validation Metric: Correlation Coefficient

Parameters:
  • model (numpy.array, float) – model data time series

  • floatobs (numpy.array,) – observation time series mapped onto model time stamps

Returns:

correlation coefficient (R)

Return type:

float

ocmw.core.statsTools.bias(model, obs)[source]

Validation Metric: Bias

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

bias (b)

Return type:

float

ocmw.core.statsTools.mean_bias(model, obs)[source]

Validation Metric: Mean Bias

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

mb

Return type:

float

ocmw.core.statsTools.norm_mean_bias(model, obs)[source]

Validation Metric: Normalised mean bias

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

nmb

Return type:

float

ocmw.core.statsTools.mean_norm_bias(model, obs)[source]

Validation Metric: Mean normalised bias

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

mnb

Return type:

float

ocmw.core.statsTools.mean_absolute_error(model, obs)[source]

Validation Metric: Mean absolute error

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

mae

Return type:

float

ocmw.core.statsTools.norm_ma_error(model, obs)[source]

Validation Metric: Normalised mean absolute error

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

nmae

Return type:

float

ocmw.core.statsTools.rms_error(model, obs)[source]

Validation Metric: Root-mean-square error

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

rmse

Return type:

float

ocmw.core.statsTools.norm_rmse(model, obs)[source]

Validation Metric: Normalised root-mean-square error

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

nrmse

Return type:

float

ocmw.core.statsTools.goodness_of_fit(model, obs)[source]

Validation Metric: Goodness-of-fit

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

R2

Return type:

float

ocmw.core.statsTools.scatter_index(model, obs)[source]

Validation Metric: Scatter index

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

si

Return type:

float

ocmw.core.statsTools.reliability_index(model, obs)[source]

Validation Metric: Reliability index

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

ri

Return type:

float

ocmw.core.statsTools.skill_score(model, obs)[source]

Validation Metric: Skill score

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

ss

Return type:

float

ocmw.core.statsTools.model_efficiency(model, obs)[source]

Validation Metric: Model efficiency

Parameters:
  • model (numpy.array, float) – model data time series

  • obs (numpy.array, float) – observation time series mapped onto model time stamps

Returns:

mef

Return type:

float

ocmw.core.statsTools.circ_mod_pi(theta)[source]

Fix angular range in radians to -pi <= theta <= pi

Parameters:

theta (numpy.array, float) – vector of angular values in radians

Returns:

theta in range -pi to pi

Return type:

numpy.array, float

ocmw.core.statsTools.circ_mean(theta, degrees=True)[source]

Calculate mean of angular data for range (-180 to 180)

Parameters:
  • theta (numpy.array, float) – vector of angular values.

  • degrees (bool, optional) – angular data units flag. The default is degrees = True.

Returns:

mean_theta (float) – mean of the angular data in same units as passed in.

ocmw.core.statsTools.circ_std(theta, degrees=True)[source]

Calculate standard deviation of angular data for range (-180 to 180)

Parameters:
  • theta (numpy.array, float) – vector of angular values.

  • degrees (bool, optional) – angular data units flag. The default is degrees = True.

Returns:

std_theta (float) – stanadrd deviation of the angular data in same units as passed in.

ocmw.core.statsTools.circ_corr(theta1, theta2, degrees=True)[source]

Validation Metric (Circular): Correlation Coefficient

Parameters:
  • theta1 (numpy.array,float) – vector of angular data (modelled)

  • theta1 – vector of angualr data (observed)

  • degrees (bool) – angular data units flag. The default is degrees = True

Returns:

circular correlation coefficient (c_corr)

Return type:

float

ocmw.core.statsTools.circ_mean_bias(theta1, theta2, degrees=True)[source]

Validation Metric (Circular): Mean Bias

Parameters:
  • theta1 (numpy.array,float) – vector of angular data (modelled)

  • theta1 – vector of angualr data (observed)

  • degrees (bool) – angular data units flag. The default is degrees = True

Returns:

circular mean bias (mb)

Return type:

float

ocmw.core.statsTools.circ_norm_mean_bias(theta1, theta2, degrees=True)[source]

Validation Metric (Circular): Normalised mean Bias

Parameters:
  • theta1 (numpy.array,float) – vector of angular data (modelled)

  • theta1 – vector of angualr data (observed)

  • degrees (bool) – angular data units flag. The default is degrees = True

Returns:

circular normalised mean bias (nmb) as a percentage

Return type:

float

ocmw.core.statsTools.circ_mean_abs_error(theta1, theta2, degrees=True)[source]

Validation Metric (Circular): Mean absolute error

Parameters:
  • theta1 (numpy.array,float) – vector of angular data (modelled)

  • theta1 – vector of angualr data (observed)

  • degrees (bool) – angular data units flag. The default is degrees = True

Returns:

circular mean absolute error (mae)

Return type:

float

ocmw.core.statsTools.circ_norm_ma_error(theta1, theta2, degrees=True)[source]

Validation Metric (Circular): Normalised mean absolute error

Parameters:
  • theta1 (numpy.array,float) – vector of angular data (modelled)

  • theta1 – vector of angualr data (observed)

  • degrees (bool) – angular data units flag. The default is degrees = True

Returns:

circular normalised mean absolute error (mae) as a percentage.

Return type:

float

ocmw.core.statsTools.circ_rms_error(theta1, theta2, degrees=True)[source]

Validation Metric (Circular): Root-mean-square error

Parameters:
  • theta1 (numpy.array,float) – vector of angular data (modelled)

  • theta1 – vector of angualr data (observed)

  • degrees (bool) – angular data units flag. The default is degrees = True

Returns:

circular RMS error (circ_rmse)

Return type:

float

ocmw.core.statsTools.circ_norm_rmse(theta1, theta2, degrees=True)[source]

Validation Metric (Circular): Normalised root-mean-square error

Parameters:
  • theta1 (numpy.array,float) – vector of angular data (modelled)

  • theta1 – vector of angualr data (observed)

  • degrees (bool) – angular data units flag. The default is degrees = True

Returns:

circular normalised RMS error (circ)nrmse as a percentage

Return type:

float

ocmw.core.statsTools.circ_goodness_of_fit(theta1, theta2, degrees=True)[source]

Validation Metric (Circular): Goodness-of-fit

Parameters:
  • theta1 (numpy.array,float) – vector of angular data (modelled)

  • theta1 – vector of angualr data (observed)

  • degrees (bool) – angular data units flag. The default is degrees = True

Returns:

circular goodness-of-fit R2

Return type:

float

ocmw.core.statsTools.circ_scatter_index(theta1, theta2, degrees=True)[source]

Validation Metric (Circular): Scatter index

Parameters:
  • theta1 (numpy.array,float) – vector of angular data (modelled)

  • theta1 – vector of angualr data (observed)

  • degrees (bool) – angular data units flag. The default is degrees = True

Returns:

circular scatter index (circ_si)

Return type:

float

ocmw.core.statsTools.stats_metrics_circular(model, obs, varName, degrees=True)[source]

Calculate circlar validation metrics for a pair of modelled and observation time series

ocmw.core.statsTools.stats_metrics(model, obs, varName)[source]

Calculate standard validation metrics for a pair of modelled and observation time series

ocmw.core.statsTools.initialize_results()[source]

Initialise a dictionary for collecting validation results

ocmw.core.statsTools.store_results(store, results)[source]

Store validation results record in the results dictionary

ocmw.core.statsTools.save_results(store, prefix, paramName, outpath)[source]

Save tabulated validation results as an ASCII file

ocmw.core.statsTools.display_metrics(metrics, paramName, testName=None)[source]

Display validation results as a table on the standard output

ocmw.core.statsTools.display_results_metrics(metrics, paramName, testName=None)[source]

Display validation results as a table on the standard output