# Documentation

Mean or median absolute deviation

## Syntax

`y = mad(X)Y = mad(X,1)Y = mad(X,0)`

## Description

`y = mad(X)` returns the mean absolute deviation of the values in `X`. For vector input, `y` is `mean(abs(X-mean(X)))`. For a matrix input, `y` is a row vector containing the mean absolute deviation of each column of `X`. For N-dimensional arrays, `mad` operates along the first nonsingleton dimension of `X`.

`Y = mad(X,1)` returns the median absolute deviation of the values in `X`. For vector input, `y` is `median(abs(X-median(X)))`. For a matrix input, `y` is a row vector containing the median absolute deviation of each column of `X`. For N-dimensional arrays, `mad` operates along the first nonsingleton dimension of `X`.

`Y = mad(X,0)` is the same as `mad(X)`, and returns the mean absolute deviation of the values in `X`.

`mad(X,flag,dim)` computes absolute deviations along the dimension `dim` of `X`. `flag` is `0` or `1` to indicate mean or median absolute deviation, respectively.

`mad` treats `NaNs` as missing values and removes them.

For normally distributed data, multiply `mad` by one of the following factors to obtain an estimate of the normal scale parameter σ:

• `sigma = 1.253*mad(X,0)` — For mean absolute deviation

• `sigma = 1.4826*mad(X,1)` — For median absolute deviation

## Examples

The following compares the robustness of different scale estimates for normally distributed data in the presence of outliers:

```x = normrnd(0,1,1,50); xo = [x 10]; % Add outlier r1 = std(xo)/std(x) r1 = 1.7385 r2 = mad(xo,0)/mad(x,0) r2 = 1.2306 r3 = mad(xo,1)/mad(x,1) r3 = 1.0602```

## References

[1] Mosteller, F., and J. Tukey. Data Analysis and Regression. Upper Saddle River, NJ: Addison-Wesley, 1977.

[2] Sachs, L. Applied Statistics: A Handbook of Techniques. New York: Springer-Verlag, 1984, p. 253.