br2 {hydroGOF} R Documentation

## br2

### Description

Coefficient of determination (r2) multiplied by the slope of the regression line between `sim` and `obs`, with treatment of missing values.

### Usage

```br2(sim, obs, ...)

## Default S3 method:
br2(sim, obs, na.rm=TRUE, ...)

## S3 method for class 'data.frame'
br2(sim, obs, na.rm=TRUE, ...)

## S3 method for class 'matrix'
br2(sim, obs, na.rm=TRUE, ...)

## S3 method for class 'zoo'
br2(sim, obs, na.rm=TRUE, ...)
```

### 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. `...` further arguments passed to or from other methods.

### Details

br2 = abs(b)*R2, abs(b) <= 1; br2= R2/abs(b), abs(b) > 1

A model that systematically over or under-predicts all the time will still result in "good" `r2` (close to 1), even if all predictions were wrong (Krause et al., 2005). The `br2` coefficient allows accounting for the discrepancy in the magnitude of two signals (depicted by 'b') as well as their dynamics (depicted by `r2`)

### Value

br2 between `sim` and `obs`.

If `sim` and `obs` are matrixes, the returned value is a vector, with the `br2` between each column of `sim` and `obs`.

### Note

`obs` and `sim` has to have the same length/dimension

The 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

The slope `b` is computed as the coefficient of the linear regression between `sim` and `obs`, forcing the intercept be equal to zero.

### Author(s)

Mauricio Zambrano Bigiarini <mzb.devel@gmail.com>

### References

Krause, P., Boyle, D. P., and Base, F.: Comparison of different efficiency criteria for hydrological model assessment, Adv. Geosci., 5, 89-97, 2005

`cor`, `lm`, `gof`, `ggof`

### Examples

```# Looking at the difference between r2 and br2 for a case with systematic
# over-prediction of observed values
obs <- 1:10
sim1 <- 2*obs + 5
sim2 <- 2*obs + 25

# The coefficient of determination is equal to 1 even if there is no one single
# simulated value equal to its corresponding observed counterpart
r2 <- (cor(sim1, obs, method="pearson"))^2 # r2=1

# 'br2' effectively penalises the systematic over-estimation
br2(sim1, obs) # br2 = 0.3684211
br2(sim2, obs) # br2 = 0.1794872

ggof(sim1, obs)
ggof(sim2, obs)

# Computing 'br2' without forcing the intercept be equal to zero
br2.2 <- r2/2 # br2 = 0.5

##################
# 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 'br2' for the "best" (unattainable) case
br2(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  'br2'
br2(sim=sim, obs=obs)

```

[Package hydroGOF version 0.3-10 Index]