nrmse {hydroGOF} | R Documentation |
Normalized root mean square error (NRMSE) between sim
and obs
, with treatment of missing values.
nrmse(sim, obs, ...) ## Default S3 method: nrmse(sim, obs, na.rm=TRUE, norm="sd", ...) ## S3 method for class 'data.frame' nrmse(sim, obs, na.rm=TRUE, norm="sd", ...) ## S3 method for class 'matrix' nrmse(sim, obs, na.rm=TRUE, norm="sd", ...) ## S3 method for class 'zoo' nrmse(sim, obs, na.rm=TRUE, norm="sd", ...)
sim |
numeric, zoo, matrix or data.frame with simulated values |
obs |
numeric, zoo, matrix or data.frame with observed values |
na.rm |
a logical value indicating whether 'NA' should be stripped before the computation proceeds. |
norm |
character, indicating the value to be used for normalising the root mean square error (RMSE). Valid values are: |
... |
further arguments passed to or from other methods. |
nrmse = 100 \frac {√{ \frac{1}{N} ∑_{i=1}^N { ≤ft( S_i - O_i \right)^2 } } } {nval}
nrmse = 100 * [ rmse(sim, obs) / nval ] ; nval= range(obs, na.rm=TRUE) OR nval=sd(obs), depending on the \code{norm} value
Normalized root mean square error (nrmse) between sim
and obs
. The result is given in percentage (%)
If sim
and obs
are matrixes, the returned value is a vector, with the normalized root mean square error between each column of sim
and obs
.
obs
and sim
have to have the same length/dimension
Missing values in obs
and sim
are removed before the computation proceeds, and only those positions with non-missing values in obs
and sim
are considered in the computation
Mauricio Zambrano Bigiarini <mzb.devel@gmail.com>
obs <- 1:10 sim <- 1:10 nrmse(sim, obs) obs <- 1:10 sim <- 2:11 nrmse(sim, obs) ################## # Loading daily streamflows of the Ega River (Spain), from 1961 to 1970 data(EgaEnEstellaQts) obs <- EgaEnEstellaQts # Generating a simulated daily time series, initially equal to the observed series sim <- obs # Computing the normalized root mean squared error for the "best" (unattainable) case nrmse(sim=sim, obs=obs) # Randomly changing the first 2000 elements of 'sim', by using a normal distribution # with mean 10 and standard deviation equal to 1 (default of 'rnorm'). sim[1:2000] <- obs[1:2000] + rnorm(2000, mean=10) # Computing the new normalized root mean squared error nrmse(sim=sim, obs=obs)