概率基礎——多元正態分布
介紹
多元正態分布是統計學中一種重要的多維概率分布,描述了多個隨機變量的聯合分布。在多元正態分布中,每個隨機變量都服從正態分布,且不同隨機變量之間可能存在相關性。本文將以二元標準正態分布為例,介紹多元正態分布的理論和公式。
理論及公式
對于二元標準正態分布,假設隨機變量 X X X和 Y Y Y都服從均值為0,方差為1的標準正態分布,并且隨機變量 X X X和 Y Y Y之間的協方差為0。這意味著 X X X和 Y Y Y是相互獨立的。其概率密度函數(PDF)為:
f ( x , y ) = 1 2 π e ? x 2 + y 2 2 f(x,y) = \frac{1}{2\pi} e^{-\frac{x^2+y^2}{2}} f(x,y)=2π1?e?2x2+y2?
其中, ( x , y ) (x, y) (x,y)表示二維平面上的一個點, π \pi π是圓周率。
對于 n n n 元標準正態分布,如果向量 Z Z Z由若干個遵從標準正態分布的獨立通分布隨機變量 Z 1 , Z 2 , … , Z n Z_1, Z_2, \ldots, Z_n Z1?,Z2?,…,Zn?組成,則向量 Z Z Z服從 n n n 元標準正態分布。
參數說明
在二元標準正態分布中,參數已經確定為均值為0,方差為1,并且協方差為0。這意味著隨機變量 X X X和 Y Y Y之間不存在線性相關性,即它們是相互獨立的。這些參數的設置使得二元標準正態分布的形狀符合常見的二維高斯分布的特征。
Python實現
下面是使用Python繪制二元標準正態分布的示例代碼:
import numpy as np
import matplotlib.pyplot as pltmean = np.array([0, 0])
conv = np.array([[1, 0], [0, 1]])x, y = np.random.multivariate_normal(mean, conv, size=5000).Tplt.figure(figsize=(10, 10))
plt.plot(x, y, 'bo', alpha=0.5)
plt.gca().axes.set_xlim(-4, 4)
plt.gca().axes.set_ylim(-4, 4)
plt.grid(ls='--')
plt.show()
在代碼中,生成了均值為0,方差為1,隨機變量間協方差為0的二元正態分布,隨機變量X和Y,
一共生成了5000組樣本,結果如圖所示。
從圖中可以發現,在均值點(此處對應原點)附近,樣本出現的概率較高,遠離均值點的地方樣本出現的概率較低(此處設置的樣本點透明度為0.2,顏色越深表示樣本點個數越多),在中心附近概率密度最高,隨著離中心點的距離增加,概率密度逐漸減小。
import numpy as np
import matplotlib.pyplot as pltmean = np.array([0, 0])
conv_1 = np.array([[1, 0], [0, 1]])
conv_2 = np.array([[4, 0], [0, 0.25]])x_1, y_1 = np.random.multivariate_normal(mean, conv_1, size=5000).T
x_2, y_2 = np.random.multivariate_normal(mean, conv_2, size=5000).Tplt.figure(figsize=(10, 10))
plt.plot(x_1, y_1, 'bo', alpha=0.05)
plt.plot(x_2, y_2, 'ro', alpha=0.05)
plt.gca().axes.set_xlim(-6, 6)
plt.gca().axes.set_ylim(-6, 6)
plt.grid(ls='--')
plt.show()
通過調整參數,可以逐漸將二元正態分布變換為二元一般正態分布,可以調整的參數主要由3個方面:
- 調整多個隨機變量自身的均值,讓樣本整體在二維平面上進行平移;
- 調整隨機變量X和Y的方差,當然此時還是保留它們互相之間彼此獨立的關系,以下先觀察一下樣本圖像的特點。
與標準正態分布對照,
- 保持隨機變量的方差不變,通過改變協方差的值,來觀察協方差的變換給隨機變量間的相關特性帶來的影響以及圖像上的變換。
import numpy as np
import matplotlib.pyplot as pltfig, ax = plt.subplots(2, 2, figsize=(10, 5))
mean = np.array([0, 0])conv_1 = np.array([[1, 0], [0, 1]])
conv_2 = np.array([[1, 0.3], [0.3, 1]])
conv_3 = np.array([[1, 0.85], [0.85, 1]])
conv_4 = np.array([[1, -0.85], [-0.85, 1]])x_1, y_1 = np.random.multivariate_normal(mean, conv_1, size=5000).T
x_2, y_2 = np.random.multivariate_normal(mean, conv_2, size=5000).T
x_3, y_3 = np.random.multivariate_normal(mean, conv_3, size=5000).T
x_4, y_4 = np.random.multivariate_normal(mean, conv_4, size=5000).Tax[0][0].plot(x_1, y_1, 'bo', alpha=0.5)
ax[0][1].plot(x_2, y_2, 'bo', alpha=0.5)
ax[1][0].plot(x_3, y_3, 'bo', alpha=0.5)
ax[1][1].plot(x_4, y_4, 'bo', alpha=0.5)ax[0][0].grid(ls='--')
ax[0][1].grid(ls='--')
ax[1][0].grid(ls='--')
ax[1][1].grid(ls='--')plt.show()
在代碼中,生成了4組二元正態分布,其中第一組是作為對比的二元標準正態分布,第二組的協方差為0.3,第三組的協方差為0.85,第四組的協方差為-0.85。
與二元標準正態分布呈圓形相比,協方差不為0的二元正態分布呈現一定斜率的橢圓,且協方差越大,橢圓越窄;協方差為正和為負,橢圓的方向是相反的,對應于隨機變量之間的正相關和負相關。
總結
本文介紹了多元正態分布及Python實現,敘述了每個隨機變量都服從正態分布,且不同隨機變量之間可能存在相關性的多元正態分布理論,并通過調整參數,將二元正態分布變換為二元一般正態分布。