rmsle

HydroErr.HydroErr.rmsle(simulated_array, observed_array, replace_nan=None, replace_inf=None, remove_neg=False, remove_zero=False)

Compute the root mean square log error between the simulated and observed data.

../_images/RMSLE.png

Range: 0 ≤ RMSLE < inf. Smaller is better, and it does not indicate bias.

Notes: Random errors do not cancel while using this metric. This metric limits the impact of outliers by more evenly weighting high and low values. To calculate the log values, each value in the observed and simulated array is increased by one unit in order to avoid run-time errors and nan values (function np.log1p).

Parameters:
  • simulated_array (one dimensional ndarray) – An array of simulated data from the time series.
  • observed_array (one dimensional ndarray) – An array of observed data from the time series.
  • replace_nan (float, optional) – If given, indicates which value to replace NaN values with in the two arrays. If None, when a NaN value is found at the i-th position in the observed OR simulated array, the i-th value of the observed and simulated array are removed before the computation.
  • replace_inf (float, optional) – If given, indicates which value to replace Inf values with in the two arrays. If None, when an inf value is found at the i-th position in the observed OR simulated array, the i-th value of the observed and simulated array are removed before the computation.
  • remove_neg (boolean, optional) – If True, when a negative value is found at the i-th position in the observed OR simulated array, the i-th value of the observed AND simulated array are removed before the computation.
  • remove_zero (boolean, optional) – If true, when a zero value is found at the i-th position in the observed OR simulated array, the i-th value of the observed AND simulated array are removed before the computation.
Returns:

The root mean square log error value.

Return type:

float

Examples

Notice that the value is very small because it is in log space.

>>> import HydroErr as he
>>> import numpy as np
>>> sim = np.array([5, 7, 9, 2, 4.5, 6.7])
>>> obs = np.array([4.7, 6, 10, 2.5, 4, 7])
>>> np.round(he.rmsle(sim, obs), 6)
0.103161

References

  • Tornquist, L., Vartia, P., Vartia, Y.O., 1985. How Should Relative Changes be Measured? The American Statistician 43-46.
  • Willmott, C.J., Matsuura, K., 2005. Advantages of the mean absolute error (MAE) over the root mean square error (RMSE) in assessing average model performance. Climate Research 30(1) 79-82.