R中二项分布函数的用法
- dbinom(x, size, prob):返回成功x次的概率
- pbinom(q, size, prob):返回至多成功x次的概率,即累积概率
- qbinom(p, size, prob):返回相应分位点x,详情见下面的例子
- rbinom(n, size, prob):返回每组试验的成功次数
这四个函数都有size和prob参数,分别对应于二项分布的试验次数n和成功概率p。下面通过一个例子来了解如何使用它们:
假设我们玩捉泥鳅游戏,每次捉住的概率为0.1(p=0.1),总共玩6次(size=6)。
问题1:6次中有2次捉住泥鳅的概率有多大?这时就要用到dbinom(x, size, prob)函数,其中x参数指定成功的次数,函数返回相应概率,比如:
> size <- 6 ##试验次数
> p <- 0.1 ##成功概率
> dbinom(2, size, p) ##成功捉住2次的概率
[1] 0.098415
> dbinom(0:size, size, p) ##整个概率分布
[1] 0.531441 0.354294 0.098415 0.014580 0.001215 0.000054 0.000001
> sum(dbinom(0:size, size, p)) ##所有概率之和为1
[1] 1
通过dbinom()函数可以很容易绘制出概率分布图:
从上图可知,一次都捉不住的概率很大(大于50%)
上图代码
barplot(dbinom(0:size, size, p),names=0:size,xlab='成功次数',
ylab='P(x)',col="red",cex.lab=1.4)
问题2:6次中至多有3次捉住泥鳅的概率有多大?这时就要用到pbinom(q, size, prob)函数,其中q参数指定至多次数(这里是3),函数返回相应累积概率,比如:
> pbinom(3, size, p) ##至多成功捉住3次的概率
[1] 0.99873
## 绘制整个累积分布
> barplot(pbinom(0:size, size, p),names=0:size,xlab='成功次数',ylab='F(x)',col="red",cex.lab=1.4)
从上图和计算可知,6次中至多有3次捉住泥鳅的概率非常大(约99.873%)
问题3:6次中至多有3次捉住泥鳅的概率有多大?这时就要用到pbinom(q, size, prob)函数,其中q有时想知道,90%概率下我们至多能捉住多少次泥鳅?这时就要用到qbinom(p, size, prob)函数,其中p参数指定概率(这里是0.9),函数返回相应分位点x(即F(x)≥0.9对应的最小x值),比如:
> size <- 6
> p <- 0.1
> qbinom(0.9, size, p)
[1] 2
计算结果显示,6次中90%概率下我们至多能捉住2次泥鳅
问题4:重复10000组,每组6次试验,每组捉住泥鳅的次数是多少?这时就要用到rbinom(n, size, prob)函数,其中n参数指定试验组数(这里为10000),函数返回每组的成功次数,比如:
> set.seed(12) ##设置随机数种子,使下面随机结果可重复
> size <- 6 ##每组试验次数
> p <- 0.1 ##成功概率
> n <- 10000 ##试验组数
> ns <- rbinom(n, size, p) ##每组成功的次数
> table(ns) ##统计成功次数
ns
0 1 2 3 4 5
5286 3512 1040 145 16 1
> mean(ns) ##成功次数的平均值
[1] 0.6096
> size*p ##理论值
[1] 0.6
> var(ns) ##成功次数的方差
[1] 0.5542433
> size*p*(1-p) ##理论值
[1] 0.54
计算结果显示,当组数足够大,每组成功次数的平均值和方差与理论值很接近。
参考链接:https://zhuanlan.zhihu.com/p/49267988