0th

Percentile

##### Median Absolute Deviation

Compute the median absolute deviation, i.e., the (lo-/hi-) median of the absolute deviations from the median, and (by default) adjust by a factor for asymptotically normal consistency.

Keywords
robust, univar
##### Usage
mad(x, center = median(x), constant = 1.4826, na.rm = FALSE,
low = FALSE, high = FALSE)
##### Arguments
x
a numeric vector.
center
Optionally, the centre: defaults to the median.
constant
scale factor.
na.rm
if TRUE then NA values are stripped from x before computation takes place.
low
if TRUE, compute the ‘lo-median’, i.e., for even sample size, do not average the two middle values, but take the smaller one.
high
if TRUE, compute the ‘hi-median’, i.e., take the larger of the two middle values for even sample size.
##### Details

The actual value calculated is constant * cMedian(abs(x - center)) with the default value of center being median(x), and cMedian being the usual, the ‘low’ or ‘high’ median, see the arguments description for low and high above. The default constant = 1.4826 (approximately $1/\Phi^{-1}(\frac 3 4)$ = 1/qnorm(3/4)) ensures consistency, i.e., $$E[mad(X_1,\dots,X_n)] = \sigma$$ for $X_i$ distributed as $N(\mu, \sigma^2)$ and large $n$. If na.rm is TRUE then NA values are stripped from x before computation takes place. If this is not done then an NA value in x will cause mad to return NA.

IQR which is simpler but less robust, median, var.
library(stats) mad(c(1:9)) print(mad(c(1:9), constant = 1)) == mad(c(1:8, 100), constant = 1) # = 2 ; TRUE x <- c(1,2,3,5,7,8) sort(abs(x - median(x))) c(mad(x, constant = 1), mad(x, constant = 1, low = TRUE), mad(x, constant = 1, high = TRUE))