madstat | R Documentation |
This function computes the mean-absolute deviation (MAD) – "the average of the magnitudes of the errors or deviations."
madstat(observed, na.rm = FALSE)
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|}
the number of observations
the "pairwise-matched observations that are judged to be reliable"
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)
.
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, https://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, https://rmets.onlinelibrary.wiley.com/doi/10.1002/joc.2419.
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).
library("ie2misc") # Example 1.18 from Kottegoda (page 15) obs <- c(50, 56, 42, 53, 49) # annual rainfall in cm madstat(obs) library("rando") set_n(100) # makes the example reproducible obs1 <- r_norm(.seed = 300) # 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) library("data.table") # using a data.table of the numeric vector obs1 df2 <- data.table(obs1) madstat(df2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.