kge¶
Kling-Gupta Efficiency¶
- de.kge.calc_kge(obs, sim, r='pearson', var='std')[source]¶
Calculate Kling-Gupta-Efficiency (KGE).
- Parameters
obs ((N,)array_like) – Observed time series as 1-D array
sim ((N,)array_like) – Simulated time series as 1-D array
r (str, optional) – Either Spearman correlation coefficient (‘spearman’; Pool et al. 2018) or Pearson correlation coefficient (‘pearson’; Gupta et al. 2009) can be used to describe the temporal correlation. The default is to calculate the Pearson correlation.
var (str, optional) – Either coefficient of variation (‘cv’; Kling et al. 2012) or standard deviation (‘std’; Gupta et al. 2009, Pool et al. 2018) to describe the gamma term. The default is to calculate the standard deviation.
- Returns
eff – Kling-Gupta-Efficiency
- Return type
Examples
Provide arrays with equal length
>>> from de import de >>> import numpy as np >>> obs = np.array([1.5, 1, 0.8, 0.85, 1.5, 2]) >>> sim = np.array([1.6, 1.3, 1, 0.8, 1.2, 2.5]) >>> kge.calc_kge(obs, sim) 0.683901305466148
Notes
\[ \begin{align}\begin{aligned}KGE = 1 - \sqrt{(\beta - 1)^2 + (\alpha - 1)^2 + (r - 1)^2}\\KGE = 1 - \sqrt{(\frac{\mu_{sim}}{\mu_{obs}} - 1)^2 + (\frac{\sigma_{sim}}{\sigma_{obs}} - 1)^2 + (r - 1)^2}\\KGE = 1 - \sqrt{(\beta - 1)^2 + (\gamma - 1)^2 + (r - 1)^2}\\KGE = 1 - \sqrt{(\frac{\mu_{sim}}{\mu_{obs}} - 1)^2 + (\frac{CV_{sim}}{CV_{obs}} - 1)^2 + (r - 1)^2}\end{aligned}\end{align} \]References
Gupta, H. V., Kling, H., Yilmaz, K. K., and Martinez, G. F.: Decomposition of the mean squared error and NSE performance criteria: Implications for improving hydrological modelling, Journal of Hydrology, 377, 80-91, 10.1016/j.jhydrol.2009.08.003, 2009.
Kling, H., Fuchs, M., and Paulin, M.: Runoff conditions in the upper Danube basin under an ensemble of climate change scenarios, Journal of Hydrology, 424-425, 264-277, 10.1016/j.jhydrol.2012.01.011, 2012.
Pool, S., Vis, M., and Seibert, J.: Evaluating model performance: towards a non-parametric variant of the Kling-Gupta efficiency, Hydrological Sciences Journal, 63, 1941-1953, 10.1080/02626667.2018.1552002, 2018.
Bias term¶
- de.kge.calc_kge_beta(obs, sim)[source]¶
Calculate the beta term of Kling-Gupta-Efficiency (KGE).
- Parameters
obs ((N,)array_like) – Observed time series as 1-D array
sim ((N,)array_like) – Simulated time series as 1-D array
- Returns
kge_beta – alpha value
- Return type
Notes
\[\beta = \frac{\mu_{sim}}{\mu_{obs}}\]Examples
Provide arrays with equal length
>>> from de import de >>> import numpy as np >>> obs = np.array([1.5, 1, 0.8, 0.85, 1.5, 2]) >>> sim = np.array([1.6, 1.3, 1, 0.8, 1.2, 2.5]) >>> de.calc_kge_beta(obs, sim) 1.0980392156862746
References
Gupta, H. V., Kling, H., Yilmaz, K. K., and Martinez, G. F.: Decomposition of the mean squared error and NSE performance criteria: Implications for improving hydrological modelling, Journal of Hydrology, 377, 80-91, 10.1016/j.jhydrol.2009.08.003, 2009.
Kling, H., Fuchs, M., and Paulin, M.: Runoff conditions in the upper Danube basin under an ensemble of climate change scenarios, Journal of Hydrology, 424-425, 264-277, 10.1016/j.jhydrol.2012.01.011, 2012.
Pool, S., Vis, M., and Seibert, J.: Evaluating model performance: towards a non-parametric variant of the Kling-Gupta efficiency, Hydrological Sciences Journal, 63, 1941-1953, 10.1080/02626667.2018.1552002, 2018.
Variability term¶
- de.kge.calc_kge_alpha(obs, sim)[source]¶
Calculate the alpha term of the Kling-Gupta-Efficiency (KGE).
- Parameters
obs ((N,)array_like) – Observed time series as 1-D array
sim ((N,)array_like) – Simulated time series
- Returns
kge_alpha – alpha value
- Return type
Notes
\[\alpha = \frac{\sigma_{sim}}{\sigma_{obs}}\]Examples
Provide arrays with equal length
>>> from de import de >>> import numpy as np >>> obs = np.array([1.5, 1, 0.8, 0.85, 1.5, 2]) >>> sim = np.array([1.6, 1.3, 1, 0.8, 1.2, 2.5]) >>> kge.calc_kge_alpha(obs, sim) 1.2812057455166919
References
Gupta, H. V., Kling, H., Yilmaz, K. K., and Martinez, G. F.: Decomposition of the mean squared error and NSE performance criteria: Implications for improving hydrological modelling, Journal of Hydrology, 377, 80-91, 10.1016/j.jhydrol.2009.08.003, 2009.
Kling, H., Fuchs, M., and Paulin, M.: Runoff conditions in the upper Danube basin under an ensemble of climate change scenarios, Journal of Hydrology, 424-425, 264-277, 10.1016/j.jhydrol.2012.01.011, 2012.
Pool, S., Vis, M., and Seibert, J.: Evaluating model performance: towards a non-parametric variant of the Kling-Gupta efficiency, Hydrological Sciences Journal, 63, 1941-1953, 10.1080/02626667.2018.1552002, 2018.
- de.kge.calc_kge_gamma(obs, sim)[source]¶
Calculate the gamma term of Kling-Gupta-Efficiency (KGE).
- Parameters
obs ((N,)array_like) – Observed time series as 1-D array
sim ((N,)array_like) – Simulated time series as 1-D array
- Returns
kge_gamma – gamma value
- Return type
Notes
\[\gamma = \frac{CV_{sim}}{CV_{obs}}\]Examples
Provide arrays with equal length
>>> from de import de >>> import numpy as np >>> obs = np.array([1.5, 1, 0.8, 0.85, 1.5, 2]) >>> sim = np.array([1.6, 1.3, 1, 0.8, 1.2, 2.5]) >>> kge.calc_kge_gamma(obs, sim) 1.166812375381273
References
Gupta, H. V., Kling, H., Yilmaz, K. K., and Martinez, G. F.: Decomposition of the mean squared error and NSE performance criteria: Implications for improving hydrological modelling, Journal of Hydrology, 377, 80-91, 10.1016/j.jhydrol.2009.08.003, 2009.
Kling, H., Fuchs, M., and Paulin, M.: Runoff conditions in the upper Danube basin under an ensemble of climate change scenarios, Journal of Hydrology, 424-425, 264-277, 10.1016/j.jhydrol.2012.01.011, 2012.
Pool, S., Vis, M., and Seibert, J.: Evaluating model performance: towards a non-parametric variant of the Kling-Gupta efficiency, Hydrological Sciences Journal, 63, 1941-1953, 10.1080/02626667.2018.1552002, 2018.
Correlation term¶
- de.kge.calc_temp_cor(obs, sim, r='pearson')[source]¶
Calculate temporal correlation between observed and simulated time series.
- Parameters
obs ((N,)array_like) – Observed time series as 1-D array
sim ((N,)array_like) – Simulated time series
r (str, optional) – Either Spearman correlation coefficient (‘spearman’) or Pearson correlation coefficient (‘pearson’) can be used to describe the temporalcorrelation. The default is to calculate the Pearson correlation.
- Returns
temp_cor – correlation between observed and simulated time series
- Return type
Examples
Provide arrays with equal length
>>> from de import de >>> import numpy as np >>> obs = np.array([1.5, 1, 0.8, 0.85, 1.5, 2]) >>> sim = np.array([1.6, 1.3, 1, 0.8, 1.2, 2.5]) >>> de.calc_temp_cor(obs, sim) 0.8940281850583509
Polar Plot¶
- de.kge.polar_plot(obs, sim, r='pearson', var='std')[source]¶
Polar plot of Diagnostic efficiency (KGE) for a single evaluation.
- Parameters
obs ((N,)array_like) – Observed time series as 1-D array
sim ((N,)array_like) – Simulated time series as 1-D array
r (str, optional) – Either Spearman correlation coefficient (‘spearman’) or Pearson correlation coefficient (‘pearson’) can be used to describe the temporal correlation. The default calculates the Pearson correlation.
var (str, optional) – Either coefficient of variation (‘cv’) or standard deviation (‘std’) to describe the gamma term. The default calculates the standard deviation.
- Returns
fig – diagnostic polar plot
- Return type
Figure
Examples
Provide arrays with equal length
>>> from de import de >>> import numpy as np >>> obs = np.array([1.5, 1, 0.8, 0.85, 1.5, 2]) >>> sim = np.array([1.6, 1.3, 1, 0.8, 1.2, 2.5]) >>> kge.diag_polar_plot_kge(obs, sim)