注:如果說一個隨機變量的分布函數(累計分布或概率密度分布)是對該隨機變量最完整,最具體的描述,那么隨機變量的數字特征就是對該隨機變量的部分特征的描述。分布函數就像是一個人的全身像,而數字特征就像是一個人的局部特寫。
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 4 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 10 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 18 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 2 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 6 7 8 data = np.arange(7, 14) 9 print(data) # [ 7 8 9 10 11 12 13] 10 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 18 19 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
3. 矩
矩是一個非常廣泛的概念,期望和方差都是矩的特例。
定義:若$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 3 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)) 15 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