Skip to contents

\(pBIAS\) is the deviation of data being evaluated, expressed as a percentage. It measures the average tendency of the simulated data to be larger or smaller than their observed counterparts (Moriasi et al., 2015). The optimal value of \(pBIAS\) is 0.0, with low-magnitude values indicating accurate mode simulation. Positive values indicate model underestimation bias, and negative values indicate model overestimation bias (Gupta et al., 1999).

Usage

pbias(data, ...)

# S3 method for class 'data.frame'
pbias(data, truth, estimate, na_rm = TRUE, performance = FALSE, ...)

pbias_vec(truth, estimate, na_rm = TRUE, performance = FALSE, ...)

Arguments

data

A data.frame containing the columns specified by the truth and estimate arguments.

...

Not currently used.

truth

The column identifier for the true results (that is numeric). This should be an unquoted column name although this argument is passed by expression and supports quasiquotation (you can unquote column names). For _vec() functions, a numeric vector.

estimate

The column identifier for the predicted results (that is also numeric). As with truth this can be specified different ways but the primary method is to use an unquoted variable name. For _vec() functions, a numeric vector.

na_rm

A logical value indicating whether NA values should be stripped before the computation proceeds.

performance

The optional column, indicating should the pbias() return metric interpretation. See details.

Value

A tibble with columns .metric, .estimator, and .estimate and 1 row of values.

For grouped data frames, the number of rows returned will be the same as the number of groups.

For pbias_vec(), a single numeric value (or NA).

Details

The formula for \(pBIAS\) is:

$$ pBIAS = 100 \times \frac{\sum_{i=1}^{n}{(sim_i - obs_i)}} {\sum_{i=1}^{n}{obs_i}} $$

where:

  • \(sim\) defines model simulations at time step \(i\)

  • \(obs\) defines model observations at time step \(i\)

According to Moriasi et al. (2015) the metric interpretation can be as follows:

  • Excellent/Very Goodpbias() < ±5.0

  • Good – ±5.0 <= pbias() < ±10.0

  • Satisfactory – ±10.0 <= pbias() < ±15.0

  • Poorpbias() >= ±15.0

References

Moriasi, D. N., Gitau, M. W., Pai, N., & Daggupati, P. (2015). Hydrologic and Water Quality Models: Performance Measures and Evaluation Criteria. Transactions of the ASABE, 58(6), 1763–1785. doi:10.13031/trans.58.10715

Gupta, H. V., S. Sorooshian, and P. O. Yapo. (1999). Status of automatic calibration for hydrologic models: Comparison with multilevel expert calibration. J. Hydrologic Eng. 4(2): 135-143 doi:10.1061/(ASCE)1084-0699(1999)4:2(135)

See also

Other numeric metrics: kge(), kge2012(), mse(), nse(), press(), sfe()

Other accuracy metrics: kge(), kge2012(), mse(), nse(), press(), sfe()

Examples

library(tidyhydro)
data(avacha)

# Supply truth and predictions as bare column names
pbias(avacha, obs, sim)
#> # A tibble: 1 × 3
#>   .metric .estimator .estimate
#>   <chr>   <chr>          <dbl>
#> 1 pbias   standard      0.0540

# Or as numeric vectors
pbias_vec(avacha$obs, avacha$sim)
#> [1] 0.0539719