R/calc_nrmse.R
calc_nrmse.Rd
calc_nrmse
is a wrapper function that applies the nrmse
function to a
list of models given the input indicator and pressure observations. The function calculates
first the predicted values for each model, which are then used for the NRMSE
computation. The normalization method and transformation types required for
nrmse
can be set for all models the same or individually.
calc_nrmse( press, ind, model, method = "sd", transformation = "none", trans_function = "none" )
press | A list of vectors containing the pressure values. |
---|---|
ind | A list of vectors containing the indicator values. |
model | A list containing the models. |
method | A character string or vector of the same length as the model list
indicating the value(s) to be used for the normalization of the RMSE. The default is
the standard deviation, alternative methods are the |
transformation | A character string or vector of the same length as the model list
indicating the type of transformation applied to the observations
prior to the analysis. Choose one of the following: |
trans_function | If |
The function returns a numerical vector of the same length then the input lists, with one NRMSE value for each model.
NOTE: If NA is returned for some models it means that either no model is available or that not enough observations with both indicator and pressure values are available (minimum of 2 required).
This wrapper function is used within the model_gam
and
model_gamm
functions with the default "sd"
method and no transformation.
If another normalization is required or indicators where standardized prior to the analysis,
this wrapper function should be applied to the final model output tibble to compute
NRMSE that are based on the original indicator scale (advised for cross-indicator
comparisons).
The more common transformation types applied to the indicator can be simply specified in the
transformation
argument, which will invoke the respective back-transformation of the
observed and predicted indicator values before the NRMSE calculation. Any other transformation
applied should be indicated with transformation = "other"
and the respective
back-transformation (simply the inverse of the original transformation)
specified under trans_function
, e.g. e.g. "5^x" if observations log(x, base = 5)
transformed or "exp(x) - 0.001" if observations log(x + 0.001) transformed.
Missing values in obs and pred are removed before the computation proceeds, and only those positions with non-missing values in both pred and obs are considered in the computation.
nrmse
, model_gam
and model_gamm
# Calculate NRMSE for the indicators TZA (~Fcod), which was let's say # log(x+ 0.001)-transformed, and MS (~TSum), which was not transformed: calc_nrmse(press = ind_init_ex$press_test[7:8], ind = ind_init_ex$ind_test[7:8], model = model_gam_ex$model[7:8], method = "sd", transformation = c("other", "none"), trans_function = c("exp(x) - 0.001", "none") )#> [1] 1.315925 1.300468