pastas.stats.metrics.nnse ========================= .. py:function:: pastas.stats.metrics.nnse(obs: pandas.Series, sim: pandas.Series | None = None, res: pandas.Series | None = None, missing: str = 'drop', weighted: bool = False, max_gap: int = 30) -> float Compute the (weighted) Normalized Nash-Sutcliffe Efficiency (NNSE). :param obs: Series with the observed values. :type obs: pandas.Series :param sim: The Series with the simulated values. :type sim: pandas.Series, optional :param res: The Series with the residual values. If time series for the residuals are provided, the sim and obs arguments are ignored. Note that the residuals must be computed as `obs - sim` here. :type res: pandas.Series, optional :param missing: string with the rule to deal with missing values. Only "drop" is supported now. :type missing: str, optional :param weighted: If weighted is True, the variances are computed using the time step between observations as weights. Default is False. :type weighted: bool, optional :param max_gap: maximum allowed gap period in days to use for the computation of the weights. All time steps larger than max_gap are replace with the max_gap value. Default value is 30 days. :type max_gap: int, optional .. rubric:: Notes NNSE computed according to :cite:t:`mathevet_bounded_2006` .. math:: \text{NNSE} = 1 / (2 - NSE) This metric normalizes the NSE between ~0 and 1 instead of -infinity and 1. So the optimal value for NNSE is 1, same as the NSE. However, an NNSE value of 0.5 corresponds to an NSE of 0, while the worst possible NNSE value is ~0. .. !! processed by numpydoc !!