多項分布
簡介
多項分布是二項分布的推廣,它描述了在 n 次獨立試驗中,k 種不同事件分別出現次數的離散概率分布。與二項分布只能有兩種結果(例如成功/失敗)不同,多項分布可以有 k 種(k ≥ 2)及以上的不同結果。
參數
多項分布用三個參數來定義:
n:試驗次數,表示重復相同實驗的次數。
pvals:一個長度為 k 的列表,其中每個元素表示對應結果出現的概率。pvals 的元素之和必須為 1。
size:輸出數組的形狀。
公式
多項分布的概率質量函數 (PMF) 給出了在 n 次試驗中,k 種結果分別出現 k1、k2、…、kk 次的概率,計算公式為:
P(k1, k2, ..., kk) = n! / (k1! * k2! * ... * kk!) * (p1 ^ k1) * (p2 ^ k2) * ... * (pk ^ kk)
其中:
P(k1, k2, ..., kk)
:表示 k 種結果分別出現 k1、k2、…、kk 次的概率。
n!
:n 的階乘,即 n × (n - 1) × (n - 2) × … × 2 × 1。
k1!
、k2!
、…、kk!
:k1、k2、…、kk 的階乘,分別表示對應結果出現的次數的階乘。
p1
、p2
、…、pk
:對應結果出現的概率,分別為 pvals 列表中的元素。
生成多項分布數據
NumPy 提供了 random.multinomial()
函數來生成服從多項分布的隨機數。該函數接受以下參數:
n
:試驗次數。
pvals
:結果的概率列表。
size
:輸出數組的形狀。
示例:生成擲骰子 10 次的結果,其中每個結果出現的概率相等:
import numpy as npdata = np.random.multinomial(n=10, pvals=[1/6] 6, size=1000)
print(data)
可視化多項分布
由于多項分布可以表示多種結果的出現次數,因此其可視化方式通常取決于結果的個數和想要展示的信息。
條形圖:如果結果個數較少,可以使用條形圖來直觀地顯示每個結果出現的次數。
堆積條形圖:如果結果個數較多,可以使用堆積條形圖來顯示不同試驗次數下每個結果出現的次數分布。
折線圖:如果需要比較不同試驗次數下每個結果出現的概率分布,可以使用折線圖來繪制每個結果出現的概率隨試驗次數的變化情況。
練習
- 模擬 100 次擲骰子的結果,并繪制每個結果出現的次數分布圖。
- 比較不同試驗次數下擲骰子結果的分布變化。
- 模擬一個具有 3 種結果的抽獎活動,每個結果出現的概率分別為 1/3、1/2 和 1/6,并計算每種結果出現 1 次的概率。
解決方案
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt# 1. 模擬擲骰子結果并繪制分布圖
data = np.random.multinomial(n=10, pvals=[1/6] 6, size=1000)
result_counts = data.sum(axis=0) # 計算每個結果出現的總次數
sns.barplot(x=np.arange(len(result_counts)), y=result_counts)
plt.xlabel("Result")
plt.ylabel("Count")
plt.title("Distribution of Dice Rolls (1000 trials)")
plt.show()# 2. 比較不同試驗次數下分布變化
n_values = [10, 50, 100, 500]
for n in n_values:data = np.random.multinomial(n=n, pvals=[1/6] 6, size=1000)result_counts = data.sum(axis=0)sns.barplot(x=np.arange(len))
最后
為了方便其他設備和平臺的小伙伴觀看往期文章:
微信公眾號搜索:Let us Coding
,關注后即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關注