ErrorCrit_KGE2: Error criterion based on the KGE' formula

View source: R/ErrorCrit_KGE2.R

ErrorCrit_KGE2R Documentation

Error criterion based on the KGE' formula

Description

Function which computes an error criterion based on the KGE' formula proposed by Kling et al. (2012).

Usage

ErrorCrit_KGE2(InputsCrit, OutputsModel, warnings = TRUE, verbose = TRUE)

Arguments

InputsCrit

[object of class InputsCrit] see CreateInputsCrit for details

OutputsModel

[object of class OutputsModel] see RunModel_GR4J or RunModel_CemaNeigeGR4J for details

warnings

(optional) [boolean] boolean indicating if the warning messages are shown, default = TRUE

verbose

(optional) [boolean] boolean indicating if the function is run in verbose mode or not, default = TRUE

Details

In addition to the criterion value, the function outputs include a multiplier (-1 or +1) which allows the use of the function for model calibration: the product CritValue \times Multiplier is the criterion to be minimised (Multiplier = -1 for KGE2).

The KGE' formula is

KGE' = 1 - \sqrt{(r - 1)^2 + (\gamma - 1)^2 + (\beta - 1)^2}

with the following sub-criteria:

r = \mathrm{the\: linear\ correlation\: coefficient\: between\:} sim\: \mathrm{and\:} obs

\gamma = \frac{CV_{sim}}{CV_{obs}}

\beta = \frac{\mu_{sim}}{\mu_{obs}}

Value

[list] list containing the function outputs organised as follows:

$CritValue [numeric] value of the criterion
$CritName [character] name of the criterion
$SubCritValues [numeric] values of the sub-criteria
$SubCritNames [character] names of the components of the criterion
$CritBestValue [numeric] theoretical best criterion value
$Multiplier [numeric] integer indicating whether the criterion is indeed an error (+1) or an efficiency (-1)
$Ind_notcomputed [numeric] indices of the time steps where InputsCrit$BoolCrit = FALSE or no data is available

Author(s)

Laurent Coron, Olivier Delaigue

References

Gupta, H. V., Kling, H., Yilmaz, K. K. and Martinez, G. F. (2009). Decomposition of the mean squared error and NSE performance criteria: Implications for improving hydrological modelling. Journal of Hydrology, 377(1-2), 80-91, \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.jhydrol.2009.08.003")}.

Kling, H., Fuchs, M. and Paulin, M. (2012). Runoff conditions in the upper Danube basin under an ensemble of climate change scenarios. Journal of Hydrology, 424-425, 264-277, \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.jhydrol.2012.01.011")}.

See Also

ErrorCrit, ErrorCrit_RMSE, ErrorCrit_NSE, ErrorCrit_KGE

Examples

library(airGR)

## loading catchment data
data(L0123001)

## preparation of the InputsModel object
InputsModel <- CreateInputsModel(FUN_MOD = RunModel_GR4J, DatesR = BasinObs$DatesR,
                                 Precip = BasinObs$P, PotEvap = BasinObs$E)

## run period selection
Ind_Run <- seq(which(format(BasinObs$DatesR, format = "%Y-%m-%d")=="1990-01-01"),
               which(format(BasinObs$DatesR, format = "%Y-%m-%d")=="1999-12-31"))

## preparation of the RunOptions object
RunOptions <- CreateRunOptions(FUN_MOD = RunModel_GR4J,
                               InputsModel = InputsModel, IndPeriod_Run = Ind_Run)

## simulation
Param <- c(X1 = 734.568, X2 = -0.840, X3 = 109.809, X4 = 1.971)
OutputsModel <- RunModel(InputsModel = InputsModel, RunOptions = RunOptions,
                         Param = Param, FUN = RunModel_GR4J)

## efficiency criterion: Kling-Gupta Efficiency
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_KGE2, InputsModel = InputsModel,
                               RunOptions = RunOptions, Obs = BasinObs$Qmm[Ind_Run])
OutputsCrit <- ErrorCrit_KGE2(InputsCrit = InputsCrit, OutputsModel = OutputsModel)

## efficiency criterion: Kling-Gupta Efficiency on square-root-transformed flows
transfo <- "sqrt"
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_KGE2, InputsModel = InputsModel,
                               RunOptions = RunOptions, Obs = BasinObs$Qmm[Ind_Run],
                               transfo = transfo)
OutputsCrit <- ErrorCrit_KGE2(InputsCrit = InputsCrit, OutputsModel = OutputsModel)

## efficiency criterion: Kling-Gupta Efficiency above a threshold (quant. 75 %)
BoolCrit <- BasinObs$Qmm[Ind_Run] >= quantile(BasinObs$Qmm[Ind_Run], 0.75, na.rm = TRUE)
InputsCrit <- CreateInputsCrit(FUN_CRIT = ErrorCrit_KGE2, InputsModel = InputsModel,
                               RunOptions = RunOptions, Obs = BasinObs$Qmm[Ind_Run],
                               BoolCrit = BoolCrit)
OutputsCrit <- ErrorCrit_KGE2(InputsCrit = InputsCrit, OutputsModel = OutputsModel)

airGR documentation built on Oct. 26, 2023, 9:07 a.m.