Python计算二项分布教程
二項(xiàng)實(shí)驗(yàn)需滿足下列性質(zhì):
- 實(shí)驗(yàn)有n個(gè)重復(fù)實(shí)驗(yàn)組成
- 每個(gè)實(shí)驗(yàn)僅有兩種結(jié)果
- 成功的概率用p表示,且每次實(shí)驗(yàn)概率都相同
- 每次實(shí)驗(yàn)都是獨(dú)立的
最常用二項(xiàng)實(shí)驗(yàn)為拋硬幣實(shí)驗(yàn)。假設(shè)我們拋10次,這十次實(shí)驗(yàn)有下列屬性:
- 實(shí)驗(yàn)有10個(gè)重復(fù)實(shí)驗(yàn)組成
- 每個(gè)實(shí)驗(yàn)有兩種可能結(jié)果——正面或負(fù)面
- 正面的概率為p,每次實(shí)驗(yàn)的概率都一樣
- 每次實(shí)驗(yàn)是獨(dú)立的——上次實(shí)驗(yàn)的結(jié)果不影響后面的結(jié)果
如果隨機(jī)變量服從二項(xiàng)分布,那么概率x=k(成功的次數(shù))公式如下:
P(X=k) = nCk?pk?(1?p)n?k{_nC_k * p^k * (1-p)^{n-k}}n?Ck??pk?(1?p)n?k
參數(shù)說明:
-
n: 實(shí)驗(yàn)次數(shù)
-
k: 成功次數(shù)
-
p: 實(shí)驗(yàn)成功的概率
-
nCk{_nC_k}n?Ck?: n次實(shí)驗(yàn)獲得k次成功
生成二項(xiàng)分布
可以使用numpy包中random.binomial函數(shù)生成服從二項(xiàng)分布的數(shù)組:
from numpy import random# 生成10個(gè)值服從正太分布 random.binomial(n=10, p=.25, size=10)# array([5, 2, 1, 3, 3, 3, 2, 2, 1, 4])數(shù)組中的每個(gè)元素表示:給定成功概率為.25,進(jìn)行10次實(shí)驗(yàn)成功的次數(shù)。
計(jì)算二項(xiàng)分布的概率
可以使用scipy庫中的binom函數(shù)回答下列幾個(gè)問題。
投籃成功概率為.6, 投球12次,有10次成功的概率
from scipy.stats import binom# 計(jì)算二項(xiàng)分布概率 binom.pmf(k=10, n=12, p=0.6)# 0.0639正好有10次成功的概率為0.0639
拋5次硬幣,有2次或更少為正面的概率
from scipy.stats import binom# 計(jì)算累積概率 binom.cdf(k=2, n=5, p=0.5)# 0.5# 計(jì)算二項(xiàng)分布概率 binom.pmf(k=2, n=5, p=0.5)# 0.3125硬幣落地為正面2次或更少的概率為.5
民眾對某法律支持率為70%,隨機(jī)抽取10人,有4~6人支持該法律的概率:
from scipy.stats import binom# 計(jì)算累積概率 binom.cdf(k=6, n=10, p=0.7) - binom.cdf(k=3, n=10, p=0.7)# 0.3398結(jié)果為有4~6人支持的概率為0.3398
可視化二項(xiàng)分布
我們可以通過seaborn、matplotlib庫可視化二項(xiàng)分布:
from numpy import random import matplotlib.pyplot as plt import seaborn as snsx = random.binomial(n=10, p=0.5, size=1000)sns.distplot(x, hist=True, kde=False)plt.show()x 軸表示10次實(shí)驗(yàn)成功的次數(shù),y軸表示1000次實(shí)驗(yàn)中成功數(shù)值發(fā)送的次數(shù)。
總結(jié)
以上是生活随笔為你收集整理的Python计算二项分布教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么视频异常分析是最适合互联网时代的内
- 下一篇: windows执行bash脚本