hydroGOF (version 0.4-0)

nrmse: Normalized Root Mean Square Error

Description

Normalized root mean square error (NRMSE) between sim and obs, with treatment of missing values.

Usage

nrmse(sim, obs, ...)

# S3 method for default nrmse(sim, obs, na.rm=TRUE, norm="sd", ...)

# S3 method for data.frame nrmse(sim, obs, na.rm=TRUE, norm="sd", ...)

# S3 method for matrix nrmse(sim, obs, na.rm=TRUE, norm="sd", ...)

# S3 method for zoo nrmse(sim, obs, na.rm=TRUE, norm="sd", ...)

Arguments

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. When an 'NA' value is found at the i-th position in obs OR sim, the i-th value of obs AND sim are removed before the computation.

norm

character, indicating the value to be used for normalising the root mean square error (RMSE). Valid values are: -) sd : standard deviation of observations (default). -) maxmin: difference between the maximum and minimum observed values

further arguments passed to or from other methods.

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.

Details

$$ nrmse = 100 \frac {\sqrt{ \frac{1}{N} \sum_{i=1}^N { \left( S_i - O_i \right)^2 } } } {nval} $$ $$nval= \left\{ \begin{array}{cl} sd(O_i) & , \: \textrm{norm="sd"} \\ O_{max} - O_{min} & , \: \textrm{norm="maxmin"} \end{array} \right.$$

See Also

rmse, ssq, gof, ggof

Examples

Run this code
# NOT RUN {
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)
# }

Run the code above in your browser using DataLab