Learn R Programming

hydroGOF (version 0.2-2)

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 class 'default': 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", ...)

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 ar
norm
character, indicating the value to be used to normalise the RMS. Valid values are: -) 'sd' : standard deviation of observations. -) 'maxmin': difference between 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 } } } {O_{max} - O_{min}}$$

See Also

rmse, ssq

Examples

Run this code
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
require(zoo)
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