离散趋势

描述离散趋势的统计量包括内均值绝对差、极差、方差和标准差等。[大谦MATLAB,dqmatlab点com]

均值绝对差

用mad函数可以计算数据样本的均值或中值绝对差(MAD)。

y = mad(X):计算X中数据的均值绝对差。如果X为向量,则y用mean(abs(X-mean(X)))计算;如果X为矩阵,则y为包含X中每列数据均值绝对差的行向量;如果X为N维数组,则mad函数计算第1个非单独(non-singleton)维。

当数据为正态分布时,均值绝对差用于数据范围估计的有效性比标准差要差一些。可以用均值标准差乘以1.3来估计(正态分布的第2个参数)。

mad(X,0):与mad(X)相同,使用均值。

mad(X,1):基于中值计算y,即median(abs(X-median(X)))。

该函数将NaN视为缺失值并删除。

用蒙特卡罗法可以模拟演示正态数据的均值绝对差相对于标准差的有效性。

code.matlab
>> x = normrnd(0,1,100,100);
>> s = std(x);
>> s_MAD = 1.3 * mad(x);
>> efficiency = (norm(s - 1)./norm(s_MAD - 1)).^2
efficiency =
    0.5972

结果小于1,说明在正态条件下用标准差衡量数据范围比均值绝对差更有效。

极差

极差指的是样本中最小值与最大值的差值。用range函数可以计算样本的极差。

y = range(X):返回极差。对向量而言,range(X)为X中元素的极差。对矩阵而言,range(X)为包含X中列中元素极差的行向量。

用极差估计样本数据的范围的优点是计算简便,缺点是异常值对它的影响较大,因此它是一个不可靠的估计值。

大样本标准正态分布随机数的极差近似为6。下面首先生成5个包含1000个服从标准正态分布的随机数的样本,然后进行求极差运算。

code.matlab
>> rv = normrnd(0,1,1000,5);
>> near6 = range(rv)
near6 =
    6.1451    6.4986    6.2909    5.8894    7.0002

方差

用var函数可以计算样本的方差。其语法格式和描述为:

y = var(X):计算X中数据的方差。对向量而言,var(X)为X中元素的方差。对于矩阵,var(X)是包含X中每一列元素方差的行向量,通过除以n-1来达到标称化,其中 n 为样本大小。对于正态分布数据,这使得var(x)成为 2的最小方差无偏估计量。

y = var(X, 1):通过除以n来标称化并生成样本数据的二阶矩。

y = var(X, w):使用权重向量w计算方差。w中元素的个数必须等于矩阵X的行数。对于向量X,w和X必须在长度上匹配。w的每一个元素必须为正。

注意:令SS为X向量中元素与其均值的离差平方和,则var(X) = SS/(n-1)为 2的最小方差无偏估计量,var(X, 1) = SS/n 为 2的最大似然估计量。

在命令窗口中输入

code.matlab
>> x = [-1 1];
>> w = [1 3];
>> v1 = var(x)
v1 =
     2
>> v2 = var(x,1)
v2 =
     1
>> v3 = var(x,w)
v3 =
    0.7500

标准差

样本数据\({x}_{1},{x}_{2},\cdots,{x}_{n}\)的标准差可以定义为

\[s={\left( \frac{1}{n-1}\sum_{i=1}^{n} {({x}_{i}-\bar{x}{)}^{2}} \right)}^{\frac{1}{2}}\]

其中,样本均值为

\[\bar{x}=\frac{1}{n}\sum {{x}_{i}}\]

用std函数可以计算样本的标准差。

y = std(X):计算X中数据样本的标准差。对于向量X,std(X) 为X中元素的标准差。对于矩阵,std(X)为包含X中每一列标准差的行向量。std(X)通过除以n1来实现标称化,其中n为样本大小。对于正态分布数据,标准差的平方是 2的最小方差无偏估计量。

下面首先生成6列服从标准正态分布的随机数,每列有100个数。在每一列中,标准差y的期望值均为1。

code.matlab
>> x = normrnd(0,1,100,6);
>> y = std(x)
y =
    0.9536    1.0628    1.0860    0.9927    0.9605    1.0254