Calculate objective function value for a fitted model.
objFunVal(x, objective, ...)
# S3 method for default
objFunVal(x, objective = hydromad.getOption("objective"), ..., nan.ok = FALSE)
# S3 method for hydromad
objFunVal(
x,
objective = hydromad.getOption("objective"),
...,
all = FALSE,
nan.ok = FALSE
)
# S3 method for runlist
objFunVal(x, objective = list(hydromad.getOption("objective"), mean), ...)object from which to calculate stats. For the hydromad
method, this should be a fitted hydromad model object, i.e. it must
have specific parameter values, not ranges. For the default method, this
should be a matrix-like object with named columns Q, X and
optionally U and P.
the objective function, or a list of objective functions. See Details.
For a runlist, either: 1) a function taking a runlist as first
argument or 2) a list with two elements, the first as for hydromad
and default, the second a function that aggregates the objectives to
a single value.
ignored for hydromad and default, passed to
objFunVal.hydromad for runlist
by default, an error is thrown if the result is NaN.
Set this argument to TRUE to suppress the error.
passed to fitted and observed.
the objective function value, or a list of objective function values. They must be numeric and of length one; anything else is an error.
The objective function is given as a function with arguments Q,
X and ...{}, and optionally other arguments. Q and
X represent observed and modelled flow, respectively. It should
return a single numeric value.
For more advanced use it may also refer to arguments U (modelled
effective rainfall), or P (observed rainfall), and more generally it
may refer to model, and so may extract other items of data,
parameters, etc.
The default (unless changed in hydromad.options("objective")) is a
weighted sum of the R Squared (coefficient of determination) of square-root
transformed data, and the relative bias.
See hydromad.stats for examples of how to specify other fit
statistics.
hydromad.stats, hydromad.object
dat <- data.frame(Q = rnorm(10), X = rnorm(10))
objFunVal(dat, hmadstat("RMSE"))
#> [1] 1.560361