前面我们介绍了多种离散型概率分布,大家可以点击下方链接来回顾:
R统计学(01): 伯努利分布、二项分布
R统计学(02): 几何分布
R统计学(03): 超几何分布
R统计学(04): 多项分布
R统计学(05): 泊松分布
今天介绍另一个离散型概率分布:负二项分布(Negative binomial distribution)。在实际生活中,我们可以使用负二项分布描述某种机器在坏掉前,能够工作的天数的分布;某运动员在获取r个奖牌前失败次数的分布等等。
1. 定义
负二项分布也基于伯努利试验,其定义有下面两种形式:
在一系列伯努利试验中,失败次数到达指定次数时,成功次数的离散概率分布
在一系列伯努利试验中,成功次数到达指定次数(记为r)时,失败次数(记为k)的离散概率分布
这两种定义只是将“成功”和“失败”对调,其本质上没差别。由于R中相关函数都采用第二种形式,因此下面将以第二种形式为例。其概率质量函数为:
其中:
k是失败的次数,为自变量,取值范围为0, 1, 2, 3, ...
r是成功的次数,为固定值。当r=1时,负二项分布退化为几何分布
p是伯努利试验成功的概率,失败概率则为1-p
在负二项分布的概率质量函数中,由于k+r次伯努利试验为独立同分布,每个成功r次、失败k次的事件的概率为。由于第r次成功一定是最后一次试验,所以应该在k+r-1次试验中选择k次失败,即组合数作为系数。
2. 性质
从负二项分布的概率质量函数可以看出,其概率分布依赖参数p和r。负二项分布的期望值和方差为:
3. R中的相关函数
R中也有四个函数可用于负二项分布,分别是:
dnbinom(x, size, prob)
:返回发生x次失败事件的概率pnbinom(q, size, prob)
:返回累积概率qnbinom(p, size, prob)
:返回相应分位点x,详情见下面的例子rnbinom(n, size, prob)
:返回每组发生失败事件的次数
这四个函数都有size
和prob
,分别对应于成功次数r和成功概率p。下面通过一个例子来了解如何使用它们:
某位运动员打算获得4个冠军后退役,假设每次比赛夺冠的概率为0.8,求该运动员获得4个冠军前所经历失败次数的概率分布?
分析:从题意可知,这个过程可用负二项分布来描述,其中成功次数r=4,成功概率p=0.8。
结果:
下表给出了在运动员获得4个冠军前,发生0到6次失败的概率分布为:
从表格结果可以看出,该运动员至少经历一次失败的概率高达59%
(= 1-P(k=0))。
下面我们利用R中的函数来计算相关量:
第一个问题:在该运动员获得4个冠军前,发生0次,1次和2次失败的概率分别是多少?此时要用到dnbinom(x, size, prob)
函数,其中x
参数指定失败的次数,函数返回相应概率,结果为:
> dnbinom(0:2, 4, 0.8)
[1] 0.40960 0.32768 0.16384
第二个问题:至多发生2次失败的概率是多少?此时要用到pnbinom(x, size, prob)
函数,其中q
参数指定至多失败的次数(这里为2),函数返回相应累积概率,结果为:
> pnbinom(2, 4, 0.8)
[1] 0.90112
第三个问题:90%概率下该运动员至多失败几次?此时要用到qnbinom(x, size, prob)
函数,其中p
参数指定概率(这里是0.9),函数返回相应分位点x(即F(x)≥0.9对应的最小x值),结果为:
> qnbinom(0.9, 4, 0.8)
[1] 2
结果表明,90%概率下至多失败2次
最后一个问题:重复10万组模拟,每组失败的次数是多少?这时就要用到rnbinom(x, size, prob)
函数,其中n
参数指定模拟的组数(这里为100000),函数返回每组发生的次数,结果为:
> set.seed(123)
> ns <- rnbinom(100000, 4, 0.8)
> table(ns)
ns
0 1 2 3 4 5 6 7 8 9 10
41123 32677 16291 6608 2295 714 208 60 16 6 2
> mean(ns) ##失败次数的平均值
[1] 0.99703
> var(ns) ##失败次数的方差
[1] 1.246154
> 4*(1-0.8)/0.8 ##均值的理论值
[1] 1
> 4*(1-0.8)/0.8^2 ##方差的理论值
[1] 1.25
模拟10万组,41123组没有发生失败,与理论上40.96%不发生失败很接近。此外均值和方差也与理论值很接近。
负二项分布的介绍就到此结束,希望对大家的学习有所帮助,也希望大家多多支持本公众号。
感谢您的阅读!想了解更多有关技巧,请关注我的微信公众号“R语言和Python学堂”,我将定期更新相关文章。