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.
MAD(x, weights = NULL, center = Median, constant = 1.4826,
na.rm = FALSE, low = FALSE, high = FALSE)x |
a numeric vector. |
weights |
a numerical vector of weights the same length as |
center |
the centre given either as numeric value or as a function to be applied to |
constant |
scale factor (default is |
na.rm |
if |
low |
if |
high |
if |
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/ Φ^(-1)(3/4) = 1/qnorm(3/4))
ensures consistency, i.e.,
E[mad(X_1,…,X_n)] = σ
for X_i distributed as N(μ, σ^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.
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))
# use weights
x <- sample(20, 30, replace = TRUE)
z <- as.numeric(names(w <- table(x)))
(m1 <- MAD(z, weights=w))
(m2 <- MAD(x))
stopifnot(identical(m1, m2))Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.