主要内容

mad

均值或中位数绝对偏差

说明

y = mad(X) 返回 X 中值的均值绝对偏差。

  • 如果 X 是向量,则 mad 返回 X 中值的均值或中位数绝对偏差。

  • 如果 X 是矩阵,则 mad 返回行向量,其中包含 X 中每列的均值或中位数绝对偏差。

  • 如果 X 是多维数组,则 mad 沿 X 的第一个非单一维度执行运算。

示例

y = mad(X,flag) 指定是计算均值绝对偏差(flag = 0,默认值)还是中位数绝对偏差 (flag = 1)。

示例

y = mad(X,flag,'all') 返回 X 中所有元素的均值或中位数绝对偏差。

示例

y = mad(X,flag,dim) 返回沿 X 的运算维度 dim 的均值或中位数绝对偏差。

示例

y = mad(X,flag,vecdim) 返回向量 vecdim 中指定的维度上的均值或中位数绝对偏差。例如,如果 X 是 2×3×4 数组,则 mad(X,0,[1 2]) 返回 1×1×4 数组。输出数组的每个元素均为 X 的对应页上的元素的均值绝对偏差。

示例

示例

全部折叠

比较存在离群值时标准差、均值绝对偏差和中位数绝对偏差的稳健性。

创建一个由正态分布数据组成的数据集 x。创建另一个数据集 xo,其中包含 x 的元素和一个额外的离群值。

rng('default') % For reproducibility
x = normrnd(0,1,1,50);
xo = [x 10];

计算两个数据集标准差的比率。

r1 = std(xo)/std(x)
r1 = 
1.4633

计算两个数据集均值绝对偏差的比率。

r2 = mad(xo)/mad(x)
r2 = 
1.1833

计算两个数据集中位数绝对偏差的比率。

r3 = mad(xo,1)/mad(x,1)
r3 = 
1.0336

在这种情况下,与其他两个尺度估计相比,中位数绝对偏差受离群值的影响较小。

查找数组中所有值的均值和中位数绝对偏差。

创建一个 3×5×2 数组 X 并添加一个离群值。

X = reshape(1:30,[3 5 2]);
X(6) = 100
X = 
X(:,:,1) =

     1     4     7    10    13
     2     5     8    11    14
     3   100     9    12    15


X(:,:,2) =

    16    19    22    25    28
    17    20    23    26    29
    18    21    24    27    30

X 中元素的均值和中位数绝对偏差。

meandev = mad(X,0,'all')
meandev = 
10.1178
mediandev = mad(X,1,'all')
mediandev = 
7.5000

meandevX 中所有元素的均值绝对偏差,mediandevX 中所有元素的中位数绝对偏差。

求多维数组沿不同维度的中位数绝对偏差。

设置随机种子以实现结果的可再现性。

rng('default') 

创建一个 1×3×2 随机数数组。

X = randn([1,3,2])
X = 
X(:,:,1) =

    0.5377    1.8339   -2.2588


X(:,:,2) =

    0.8622    0.3188   -1.3077

X 的沿默认维度的中位数绝对偏差。

Y2 = mad(X,1) % Flag is set to 1 for the median absolute deviation
Y2 = 
Y2(:,:,1) =

    1.2962


Y2(:,:,2) =

    0.5434

默认情况下,mad 沿 X 的大小不等于 1 的第一个维度进行运算。在本例中,此维度是 X 的第二个维度。因此,Y2 是一个 1×1×2 数组。

求沿 X 的第三个维度的中位数绝对偏差。

Y3 = mad(X,1,3)
Y3 = 1×3

    0.1623    0.7576    0.4756

Y3 是一个 1×3 矩阵。

使用 vecdim 输入参量求多个维度上的均值绝对偏差。

设置随机种子以实现结果的可再现性。

rng('default')

创建一个 4×3×2 随机数数组。

X = randn([4 3 2])
X = 
X(:,:,1) =

    0.5377    0.3188    3.5784
    1.8339   -1.3077    2.7694
   -2.2588   -0.4336   -1.3499
    0.8622    0.3426    3.0349


X(:,:,2) =

    0.7254   -0.1241    0.6715
   -0.0631    1.4897   -1.2075
    0.7147    1.4090    0.7172
   -0.2050    1.4172    1.6302

通过指定第一和第二个维度,求 X 的每页的均值绝对偏差。

ypage = mad(X,0,[1 2])
ypage = 
ypage(:,:,1) =

    1.4626


ypage(:,:,2) =

    0.6652

例如,ypage(:,:,2)X(:,:,2) 中所有元素的均值绝对偏差,并且等效于指定 mad(X(:,:,2),0,'all')

通过指定第一个和第三个维度,求每个 X(:,i,:) 切片中元素的均值绝对偏差。

ycol = mad(X,0,[1 3])
ycol = 1×3

    0.8330    0.7872    1.5227

例如,ycol(3)X(:,3,:) 中所有元素的均值绝对偏差,并且等效于指定 mad(X(:,3,:),0,'all')

输入参数

全部折叠

输入数据(表示来自总体的一个样本),指定为向量、矩阵或多维数组。

  • 如果 X 是向量,则 mad 返回 X 中值的均值或中位数绝对偏差。

  • 如果 X 是矩阵,则 mad 返回行向量,其中包含 X 中每列的均值或中位数绝对偏差。

  • 如果 X 是多维数组,则 mad 沿 X 的第一个非单一维度执行运算。

要在 X 是矩阵或数组时指定运算维度,请使用 dim 输入参量。

madNaNs 视为缺失值并将其删除。

数据类型: single | double

偏差类型的指示符,指定为 01

  • 如果 flag0(默认值),则 mad 计算均值绝对偏差,mean(abs(X – mean(X)))

  • 如果 flag1,则 mad 计算中位数绝对偏差,median(abs(X – median(X)))

数据类型: single | double | logical

沿其运算的维度,指定为正整数。如果不指定 dim 的值,则默认值是 X 的大小不等于 1 的第一个维度。

以矩阵 X 的均值绝对偏差为例:

  • 如果 dim 等于 1,则 mad(X) 返回一个行向量,其中包含 X 中每列的均值绝对偏差。

  • 如果 dim 等于 2,则 mad(X) 返回一个列向量,其中包含 X 中每行的均值绝对偏差。

数据类型: single | double

维度向量,指定为正整数向量。vecdim 的每个元素表示输入数组 X 的一个维度。输出 y 在指定运算维度中的长度为 1。Xy 的其他维度长度相同。

例如,如果 X 为 2×3×3 数组,则 mad(X,0,[1 2]) 返回 1×1×3 数组。输出数组的每个元素均为 X 的对应页上的元素的均值绝对偏差。

Mapping of input dimension of 2-by-3-by-3 to output dimension of 1-by-1-by-3

数据类型: single | double

输出参量

全部折叠

均值或中位数绝对偏差,以标量、向量、矩阵或多维数组形式返回。如果 flag 为 0(默认值),则 yX 中值的均值绝对偏差,即 mean(abs(X – mean(X)))。如果 flag 为 1,则 yX 中值的中位数绝对偏差,即 median(abs(X – median(X)))

提示

  • 对于正态分布数据,请将 mad 乘以以下因子之一以获得正态尺度参数 σ 的估计值:

    • sigma = 1.253 * mad(X,0) - 用于均值绝对偏差

    • sigma = 1.4826 * mad(X,1) - 用于中位数绝对偏差

算法

全部折叠

参考

[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.

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

另请参阅

| |