二項式分布Binomial Distribution


二項式分布Binomial Distribution

引言

因為我在一個課題中,需要統計一個基因出現的頻率數,是否有顯著性。原看文獻說是應用超幾何分布檢驗,后來經過調研,參考這篇Without Replacement; Hypergeometric / With replacement: Binomial
最后我認為是不放回抽樣的模型,所以應該使用二項式分布模型,所以這里總結一下二項式分布概率計算和R語言實現的知識。

二項分布是離散的概率分布。它描述了一個實驗中n個獨立試驗的結果。每個試驗都假定只有兩種結果,要么成功,要么失敗。如果一次試驗成功的概率是p,那么事件X,即在n次獨立試驗中k次試驗成功的概率為:

Binomial probability model

公式個人理解:因為是放回抽樣的模型,每次抽樣是相互獨立的,所以事件X,可以理解為等價於,一個子事件(該子事件的發生概率是p^k * q ^(n-k)),然后乘以排列組合的項。

Problem

假設在英語課堂測驗中有10道單項選擇題。每個問題有4個選項,其中只有1個是正確的。如果學生准備隨機回答每一個問題,請問回答正確的不少於6道題目的概率。這個例子可以通俗理解為,一次考試試卷一共10道選擇題,答對6道算是及格,問他全蒙的話,能及格的概率。

Solution

因為4個可能的答案中只有1個是正確的,所以隨機回答一個問題的正確概率是1/4=0.25。我們可以通過下面的辦法,找出恰好答對6道的概率。

> options(digits = 3)
> dbinom(x = 6, size = 10, prob = 0.25)
[1] 0.0162

因為事件X是答對不少於6道題,所以接下來可以有兩種解決問題的思路:一是分別計算答對7,8,9,10道的概率並求和;二是分別計算答對0-5道題的概率,用1減求和。

兩種思路都可以,下面我用第二種思路計算,答對0, 1, 2, 3,4,5 道題的概率並求和:

> sum(unlist(lapply(0:5, function(x){dbinom(x, size = 10, prob = 0.25)})))
[1] 0.98

上面使用了R語言dbinom函數,我們也可以根據公式自行計算剛好答對6道題的概率,如下:

> pvalue <- factorial(10)/ factorial(4)/factorial(6) * 0.25^6 * 0.75^4
> print(pvalue)
[1] 0.0162
# 可以看到計算結果和R語言stats包中的dbinom函數的計算結果一致。

# 計算答對題目道數,從0到5道題的概率之和
> sum(unlist(lapply(0:5, function(x){factorial(10)/ factorial(x)/factorial(10-x)*0.25^x * 0.75^(10-x)})))
[1] 0.98

所以,根據結果得出結論,該同學全蒙的情況下,98%的概率他答對題目數不到6道,也就是說,全蒙的話,98%的概率會掛科

另外,可以發現上述逐個計算概率再求和比較麻煩,R語言提供了pbinom() 函數,直接計算答對不超過5道的概率,計算結果也是一致的,如下:

> pbinom(5, size = 10, prob = 0.25)
[1] 0.98

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM