This function computes the mean-absolute deviation (MAD) – "the average of the magnitudes of the errors or deviations."

1 |

`observed` |
numeric vector, matrix, data.frame, or data.table that contains the observed data points. |

`na.rm` |
logical vector that determines whether the missing values should be removed or not. |

MAD is expressed as

*n^{-1} ∑ \limits_{i=1}^n{ ≤ft| O_i - \bar{O} \right|}*

*n*the number of observations

*O*the "pairwise-matched observations that are judged to be reliable"

*\bar{O}*the "true" mean of the observations

Reference 1 fully discusses MAD, while Reference 2 provides the formula used to calculate the MAD.

mean-absolute deviation (MAD) as a numeric `vector`

or a named
numeric vector if using a named object (`matrix`

, `data.frame`

, or `data.table`

). MAD has the
same units as the observed values. The default choice is that any NA values
will be kept (`na.rm = FALSE`

). This can be changed by specifying `na.rm = TRUE`

, such as `madstat(obs, na.rm = TRUE)`

.

`kurtosis`

for use of na.rm for numeric vector, matrix, and data.frame objects

Cort J. Willmott, Kenji Matsuura, and Scott M. Robeson, "Ambiguities inherent in sums-of-squares-based error statistics",

*Atmospheric Environment*, vol. 43, no. 3, pp. 749-752, 2009, http://www.sciencedirect.com/science/article/pii/S1352231008009564.Cort J. Willmott, Scott M. Robeson, and Kenji Matsuura, "Short Communication: A refined index of model performance",

*International Journal of Climatology*, Volume 32, Issue 13, pages 2088-2094, 15 November 2012, http://onlinelibrary.wiley.com/doi/10.1002/joc.2419/pdf.Nathabandu T. Kottegoda and Renzo Rosso,

*Statistics, Probability, and Reliability for Civil and Environmental Engineers*, New York City, New York: The McGraw-Hill Companies, Inc., 1997, page 15.

`mad`

for median absolute deviation (MAD)

`mape`

for mean absolute percent error (MAPE), `mae`

for
mean-absolute error (MAE), `dr`

for "index of agreement (dr)", `vnse`

for Nash-Sutcliffe model efficiency (NSE), and `rmse`

for
root mean square error (RMSE).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | ```
library(ie2misc)
# Example 1.18 from Kottegoda (page 15)
obs <- c(50, 56, 42, 53, 49) # annual rainfall in cm
madstat(obs)
require(stats)
set.seed(100) # makes the example reproducible
obs1 <- rnorm(100) # observed
# using the numeric vector obs1
madstat(obs1)
# using a matrix of the numeric vector obs1
mat1 <- matrix(data = obs1, nrow = length(obs1), ncol = 1, byrow = FALSE,
dimnames = list(c(rep("", length(obs1))), "Observed"))
madstat(mat1)
# using a data.frame of the numeric vector obs1
df1 <- data.frame(obs1)
madstat(df1)
# using a data.table of the numeric vector obs1
df2 <- data.table(obs1)
madstat(df2)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.