二项式分布Binomial Distribution
目录
- 二项式分布Binomial Distribution
- 引言
- Problem
- Solution
- 参考
引言
因为我在一个课题中,需要统计一个基因出现的频率数,是否有显著性。原看文献说是应用超几何分布检验,后来经过调研 。
最后我认为是不放回抽样的模型,所以应该使用二项式分布模型,所以这里总结一下二项式分布概率计算和R语言实现的知识。
二项分布是离散的概率分布。它描述了一个实验中n个独立试验的结果。每个试验都假定只有两种结果,要么成功,要么失败。如果一次试验成功的概率是p,那么事件X,即在n次独立试验中k次试验成功的概率为:
公式个人理解:因为是放回抽样的模型,每次抽样是相互独立的,所以事件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