:如果说一个随机变量的分布函数(累计分布或概率密度分布)是对该随机变量最完整,最具体的描述,那么随机变量的数字特征就是对该随机变量的部分特征的描述。分布函数就像是一个人的全身像,而数字特征就像是一个人的局部特写。

0. 为什么要研究随机变量的数字特征

很多情况下,可能由于数据不完整或是采集数据的代价过高,我们只能得到一个随机变量的部分信息而无法得到具体的分布函数。这个时候,我们可以根据有限的数据,利用该随机变量的某些数字特征对其进行局部的研究。这样的研究,虽然无法从根本上解决数据有限的问题,但还是可以让我们对所研究的随机变量有一个概括的认识,了解它的一些基本性质。最常见的数字特征只要包括以下几种:

  • 协方差和相关系数
  • 前面三个数字特征都是单个随机变量自身的特征,第四个数字特征则用来表示两个随机变量之间的关系。其他数字特征还有中位数,众数等。

    1. 数学期望(Mathematical Expectation)

    一个随机变量$X$的数学期望,简称期望,也叫作均值(Mean),记为$E(X)$。常见随机变量的定义中,都直接或间接包含了“期望”这个参数,该参数一般与分布在坐标轴上的位置有关。期望与我们平时说的平均值差不多,体现的是随机变量中的“大多数”的取值情况或趋势。

    在计算时,随机变量$X$的平均值$E(X)$并不等同于一个具体样本集$x$的均值$E(x)$ —— 计算一个具体样本集的均值时,是将所有的值求和然后除以样本个数,因为此时的$x$已经是一个具体的数列,而不再具有随机性 —— 随机变量$X$的均值是加权平均数。

    例如,一个离散型随机变量$X$的概率质量分布列如下:

    图1-1, 概率质量分布函数

    那么根据定义,$E(X) = \displaystyle \sum_{ i = 1 }^{ n } x_i p_i = 0 \times 0.15 + 1 \times 0.3 + 2 \times 0.25 + 3 \times 0.2 + 4 \times 0.1 = 1.8$;如果我们从该随机变量中取1个样本集$x1 = {1, 1, 2, 4, 4}$,那么$E(x1) = (1 + 1 + 2 + 4 + 4)/5 = 2.4$.

    此外,正式定义中对期望存在与否给出了明确的判断。在求离散型随机变量的期望时,需要其和式构成的级数是收敛的;在连续型随机变量期望的定义中,也有类似的要求。一个典型的例外,连续型随机变量柯西分布因为不满足此条件,因此不具有均值,具体解释可以参考 Comparing the Cauchy and Gaussian (Normal) density functions Why does the Cauchy distribution have no mean? .

    1.1 期望的起源

    期望这个名字听起来,并不是那么直白。但是如果知道这个名字的起源,那么就会觉得这个名字是名副其实的。

    图1-2,“期望”的由来

    1.2 数学期望的性质

    (1). 设$c$是常数,则有$E(c) = c$;

    (2). 设$X$是一个随机变量,c是常数,则有$E(cX) = cE(X)$;

    (3). 设$X$, $Y$是两个随机变量,则有$E(X + Y) = E(X) + E(Y)$;

    将上面三点结合起来,则有$E(aX + bY + c) = aE(X) + bE(Y) + c$,可以推广到任意有限个随机变量线性组合的情况;

    (4). 设$X$, $Y$是相互独立的两个随机变量,则有$E(XY) = E(X)E(Y)$,可以推广到任意有限个相互独立的随机变量之积的情况。

    1.3 常见分布的期望

    下面这些分布的期望指的是随机变量的期望,而不是某个随机变量抽样得到的样本集的期望。在离散型随机变量中,数学期望的物理意义是“一维离散质点系的重心坐标”;在连续型随机变量中,数学期望的物理意义是“一维连续质点系的重心坐标”,

  • 0-1分布,$X \sim B(1, p)$,则$E(X)=p$;
  • 二项分布,$X \sim B(n, p)$,则$E(X)=np$;
  • 泊松分布,$X \sim P(\lambda)$,则$E(X)=\lambda$;
  • 几何分布,$X \sim G(p)$,则$E(X)=1/p$;
  • 均匀分布,$X \sim U[a, b]$,则$E(X)=(a+b)/2$;
  • 正态分布,$X \sim N(\mu, \sigma^2)$,则$E(X)=\mu$;
  • 指数分布,$X \sim E(\lambda)$,则$E(X)=1/\lambda$;
  • 1.4 样本均值的计算

    在实际的应用中,我们一般都是已知某个分布的一组样本,需要求这组样本的均值。在计算时,定义中的平均值是算术平均值;还有一种计算平均值的方法是几何平均值,及所有样本值相乘后开N次方,N为样本数。

    算术平均值和几何平均值最大的区别在于:如果样本中有$0$存在,几何平均值就等于$0$;如果样本中不包括$0$,通常算术平均值 ≥ 几何平均值。下面是Python实现的方法:

     1 import numpy as np
     2 from scipy import stats
     3 import matplotlib.pyplot as plt
     5 ## 计算平均值
     6 x = np.arange(1, 11)
     7 print(x)  # [ 1  2  3  4  5  6  7  8  9 10]
     8 mean = np.mean(x)
     9 print(mean)  # 5.5
    11 # 对空值的处理,nan stands for 'Not-A-Number'
    12 x_with_nan = np.hstack((x, np.nan))
    13 print(x_with_nan)  # [  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.  nan]
    14 mean2 = np.mean(x_with_nan)
    15 print(mean2)  # nan,直接计算没有结果
    16 mean3 = np.nanmean(x_with_nan)
    17 print(mean3)  # 5.5
    19 ## 计算几何平均值
    20 x2 = np.arange(1, 11)
    21 print(x2)  # [ 1  2  3  4  5  6  7  8  9 10]
    22 geometric_mean = stats.gmean(x2)
    23 print(geometric_mean)  # 4.52872868812,几何平均值小于等于算数平均值

    2. 方差(Variance)

    一个随机变量$X$的方差,刻画了$X$取值的波动性,是衡量该随机变量取值分散程度的数字特征。方差越大,就表示该随机变量越分散;方差越小,就表示该随机变量越集中。在实际应用中,例如常见的关于“射击”的例子中,如果一个运动员打靶得分的方差大,就表示该运动员打在靶上的位置比较分散,成绩不稳定;相反则表示打在靶上的位置比较集中,成绩稳定。

    定义 :设$X$是一个随机变量,若$E{[X - E(X)]^2}$存在,就称其为$X$的方差,记为$D(X)$或$Var(X)$,即

    $$D(X) = Var(X) = E{[X - E(X)]^2}.$$

    将$\sqrt{D(X})$记为$\sigma(X)$,称为$X$的标准差(Standard Deviation)或均方差(Mean Square Error)。

    2.1 方差的性质

    (1). 设$c$是常数,则有$D(c) = 0$;

    (2). 设$X$是一个随机变量,c是常数,则有$D(cX) = c^2D(X)$;

    特例,$D(-X) = D(X)$

    (3). 设$X$, $Y$是两个随机变量,则有$D(X + Y) = D(X) + D(Y) + 2 \cdot tail$,其中,$tail = E{[X - E(X)][Y - E(Y)]}$. 特别,若$X$, $Y$相互独立,则有$D(X + Y) = D(X) + D(Y)$;

    将上面三点结合起来,设$X$, $Y$相互独立,a, b, c是常数,则有$D(aX + bY + c) = a^2D(X) + b^2D(Y)$,可以推广到任意有限个独立随机变量线性组合的情况;

    (4). $D(X) = 0 <=> P(X=c) = 1,且 c = E(X)$;

    (5). 当$X$, $Y$相互独立时,$D(XY) = D(X)D(Y) + D(X)[E(Y)]^2 + D(Y)[E(X)]^2$.

    还有一个常用的计算方差的公式:$D(X) = E(X^2) - [E(X)]^2$

    2.2 常见分布的方差

  • 0-1分布,$X \sim B(1, p)$,则$D(X)=p(1-p)$;
  • 二项分布,$X \sim B(n, p)$,则$D(X)=np(1-p)$;
  • 泊松分布,$X \sim P(\lambda)$,则$D(X)=\lambda, (\lambda > 0)$,与$E(X)$相同;
  • 几何分布,$X \sim G(p)$,则$D(X)=(1-p)/p^2$;
  • 均匀分布,$X \sim U[a, b]$,则$D(X)=(b-a)^2/12$;
  • 正态分布,$X \sim N(\mu, \sigma^2)$,则$D(X)=\sigma^2, (\sigma > 0)$;
  • 指数分布,$X \sim E(\lambda)$,则$D(X)=1/\lambda^2, (\lambda > 0)$,$E(X)$的平方;
  • 2.3 样本方差的计算

    就像计算均值一样,通常我们计算的都是从某个分布中抽样得到的一组样本的方差,样本方差一般用$S^2$表示。按照方差的定义,

    $$D(X) = Var(X) = E{[X - E(X)]^2} = \frac{1}{n} \displaystyle \sum_{i=1}^{n}(X_i - \bar{X})^2$$,

    其中$\bar{X} = E(X)$。如果直接用上面的公式计算$S^2$,等同于使用样本的二阶中心距(矩的概念在下面介绍)。但是样本的二阶中心距并不是随机变量$X$这个总体分布的无偏估计,将上式中的$n$换成$n-1$就得到了样本方差的计算公式,这也是总体方差的无偏估计。

    $$S^2 = \frac{1}{n - 1} \displaystyle \sum_{i=1}^{n}(X_i - \bar{X})^2$$.

    从直观上来理解,由于样本方差中多了一个约束条件 —— 样本的均值是固定的,$E(X) = \bar{X}$ —— 如果已知 $n-1$ 样本,那么根据均值可以直接计算出第 $n$ 个样本的值,因此自由度比计算总体方差的时候减小了1个。具体的证明过程可以参考wiki, Sample variance

    下面是如何在Python中计算方差的实现,使用参数ddof(Delta Degrees of Freedom,自由度偏移量)来设置分母的大小。

     1 import numpy as np
     3 # 参考
     4 # https://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html
     5 # https://docs.scipy.org/doc/numpy/reference/generated/numpy.var.html
     8 data = np.arange(7, 14)
     9 print(data)  # [ 7  8  9 10 11 12 13]
    11 ## 计算方差
    12 # 直接使用样本二阶中心距计算方差,分母为n
    13 var_n = np.var(data)  # 默认,ddof=0
    14 print(var_n) # 4.0
    15 # 使用总体方差的无偏估计计算方差,分母为n-1
    16 var_n_1 = np.var(data, ddof=1)  # 使用ddof设置自由度的偏移量
    17 print(var_n_1) # 4.67
    20 ## 计算标准差
    21 std_n = np.std(data, ddof=0)
    22 std_n_minus_1 = np.std(data, ddof=1)  # 使用ddof设置自由度的偏移量
    23 print(std_n, std_n_minus_1)  # 2.0, 2.16
    24 print(std_n**2, std_n_minus_1**2)  # 4.0, 4.67

    矩是一个非常广泛的概念,期望和方差都是矩的特例。

    定义 :若$E(X^k), k=1, 2, ...$存在,则称$E(X^k)$为$X$的k阶原点矩,记为$\alpha_k = E(X^k)$;

    若$E[X - E(X)]^k, k=1, 2, ...$存在,则称$E[X - E(X)]^k$为$X$的k阶中心距,记为$\beta_k = E[X - E(X)]^k$

    根据定义,期望$E(X)$是1阶原点矩,方差$D(X)$是2阶中心距。需要注意的是,就像上面提到过的,样本的2阶中心矩并不是总体方差的无偏估计,样本方差$S^2$的实际计算公式中分母为$n-1$,而不是样本2阶中心距中的$n$。

    符号说明: 没有查到专门表示矩的符号(就像用$\mu$表示总体均值那样),参考的几个地方用的符号也不一致。 但是一般都用小写希腊字母表示总体矩,用大写字母表示样本矩。我就在这里约定一下,后面都统一使用以下符号。

  • 总体k阶原点矩:$\alpha_k$;
  • 总体k阶中心矩:$\beta_k$;
  • 样本k阶原点矩:$A_k$;
  • 样本k阶中心矩:$B_k$.
  • 4. 协方差和相关系数

    上面几种随机变量的数字特征都是描述单个随机变量局部性质的量,协方差和相关系数则是用来度量两个不同的随机变量之间的相关程度。

    4.1 协方差

    如上面介绍方差的性质时,第(3)条提到的那样:

    设$X$, $Y$是两个随机变量,则有$D(X + Y) = D(X) + D(Y) + 2 \cdot tail$,其中,$tail = E{[X - E(X)][Y - E(Y)]}$. 特别,若$X$, $Y$相互独立,则有$D(X + Y) = D(X) + D(Y)$;

    若$X$, $Y$相互独立,tail就等于0,那么tail不等于0时,就表示$X$, $Y$这两个随机变量不相互独立。tail就是$X$与$Y$的协方差。

    定义 :数值 $E{[X - E(X)][Y - E(Y)]}$ 为随机变量$X$与$Y$的协方差,记为$Cov(X, Y)$,即

    $$ Cov(X, Y) = E{[X - E(X)][Y - E(Y)]} $$

    此时,$D(X + Y) = D(X) + D(Y) + 2Cov(X, Y)$,协方差 $Cov(X, Y)$ 反映了随机变量$X$与$Y$的 线性相关性

  • 当$Cov(X, Y) > 0$时,称$X$与$Y$正相关;
  • 当$Cov(X, Y) < 0$时,称$X$与$Y$负相关;
  • 当$Cov(X, Y) = 0$时,称$X$与$Y$不相关;
  • 协方差的计算公式可以化简为:$ Cov(X, Y) = E(XY) - E(X)E(Y)$

    注:两个随机变量相互独立或不相关时,协方差为0;但是两个随机变量的协方差等于0的时候,不一定相互独立(只能说明没有线性相关性)。

    4.2 相关系数

    协方差是有量纲的数字特征,为了消除其量纲的影响,引入了相关系数。在平时的数据分析中,协方差很少出现,相关系数出现的频率非常高。

    定义 :数值

    $$\rho_{XY} = \frac{Cov(X, Y)}{\sqrt{D(X)D(Y)}}$$

    称为随机变量$X$与$Y$的相关系数。

    相关系数的性质

  • $|\rho_{XY}| \le 1$(相关系数的值位于区间$[-1, 1]$);
  • $|\rho_{XY}| = 1$ <=> 存在常数a, b,使得$P(Y = a + bX) = 1$. 特别的,$\rho_{XY} = 1$时,$b > 0$; $\rho_{XY} = -1$时,$b < 0$.
  • 与协方差相同,相关系数也是用来表征两个随机变量之间线性关系密切程度的特征数,有时也称为“线性相关系数”。

    5. 样本均值的期望和方差

    设随机变量$X$的一组样本为$x$,则样本的均值$\bar{x} = \frac{1}{n} \displaystyle \sum_{i=1}^{n}x_i$。此时的样本$x$与样本均值$\bar{x}$都是确定的数值,不具有随机性。但是,如果我们取了很多组样本:$x^{(1)}, x^{(2)}, ...$,那么这些样本的均值$\bar{x}^{(1)}, \bar{x}^{(2)}, ...$就可以组成一个新的随机变量,可以记为$\bar{X}$,每一个样本均值也可以看做是从该随机变量中抽样所得。

    样本均值$\bar{X}$这个随机变量是随机变量$X$的函数。根据期望和方差的定义,我们可以求出样本均值的期望和方差。

    假设随机变量$X$的期望和方差分别为:$\mu$和$\sigma^2$

  • $E(\bar{X}) = \mu$,样本均值的期望与原随机变量的期望相同;
  • $D(\bar{X}) = \frac{\sigma^2}{n}$, 其中n为样本组数, 其中n为每次取样的样本量,这里的n不表示样本组数,而是单组中的样本量;样本组数在这里并没有体现。这是因为 $\bar{X}$的随机性是在获取单组样本时体现出来的 (即结果的不确定性),跟组数无关(当每组样本获得之后,数据就不再具有随机性了)。由此可见,每次采样的样本量越多,得到的样本均值的方差也越小也就表示更加准确,但是取样所用的时间和成本也同时增加了。这就需要在准确性和成本之间有一个权衡。
  • 下面用程序做一个测试,测试的是样本均值的标准差随着样本量的变化而发生的变化,如果方差缩小$n$倍,那么理论上标准差会缩小$\sqrt{n}$倍。

     1 import numpy as np
     2 from scipy import stats
     4 def mean_and_std_of_sample_mean(ss=[], group_n=100):
     5     """
     6     不同大小样本均值的均值以及标准差
     7     """
     8     norm_dis = stats.norm(0, 2)  # 定义一个均值为0,标准差为2的正态分布
     9     for n in ss:
    10         sample_mean = []  # 收集每次取样的样本均值
    11         for i in range(group_n):
    12             sample = norm_dis.rvs(n)  # 取样本量为n的样本
    13             sample_mean.append(np.mean(sample))  # 计算该组样本的均值
    14         print(np.std(sample_mean), np.mean(sample_mean))
    16 sample_size = [1, 4, 9, 16, 100]  # 每组试验的样本量
    17 group_num = 10000
    18 mean_and_std_of_sample_mean(ss=sample_size, group_n=group_num)

    输出结果:

    2.00614271575 -0.00979778829056
    0.996748016078 0.0047888141445
    0.676831265367 0.00227958796225
    0.506174086576 -8.2820165177e-05
    0.199323757392 0.000441907648398

    上面的测试中,从一个均值为0,标准差为2的正态分布中抽样。便于理解,可以将 样本组数 看做是参与试验的人数,这里固定为10000;可以将不同的 样本量 看做是每个人做实验时需要遵守的试验条件,这里的试验条件分别为1, 4, 9, 16, 100,即每次从总体中抽样的个数。整个试验流程是:1万个人都参与了5次不同试验条件的试验,每次做完试验每个人先计算自己所得样本集的均值,然后汇总1万个人的结果计算这10000个值的标准差和均值。

    参考上面的输出结果:

    第一次试验,每个人从总体中抽取1个样本,标准差近似等于2(只存在少量误差);

    第二次试验,每个人从总体中抽取4个样本,标准差近似等于1,减少了$\sqrt{4}$倍,与理论值相同;

    第三次试验,每个人从总体中抽取9个样本,标准差近似等于2/3,减少了$\sqrt{9}$倍,与理论值相同;

    第四次试验,每个人从总体中抽取16个样本,标准差近似等于1/2,减少了$\sqrt{16}$倍,与理论值相同;

    第五次试验,每个人从总体中抽取100个样本,标准差近似等于1/5,减少了$\sqrt{100}$倍,与理论值相同。

    改变组数,即参与试验的人数,对试验结果影响不大。

    具体的证明过程,可参考 Mean and Variance of Sample Mean

    欢迎阅读“ 概率论与数理统计及Python实现 ”系列文章

    修改记录:

    2020.5.21 fix typo,添加两个随机变量的协方差与它们是否相互独立之间的关系说明

    2020.6.4 fix typo

    Reference

    中国大学MOOC:浙江大学&哈工大,概率论与数理统计

    http://web.ipac.caltech.edu/staff/fmasci/home/mystats/CauchyVsGaussian.pdf

    https://stats.stackexchange.com/questions/36027/why-does-the-cauchy-distribution-have-no-mean

    https://en.wikipedia.org/wiki/Bias_of_an_estimator#Sample_variance

    https://onlinecourses.science.psu.edu/stat414/node/167