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()函数可以很容易绘制出概率分布图:

r语言01两点分布怎么写 r语言中二项分布_函数返回


从上图可知,一次都捉不住的概率很大(大于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)

r语言01两点分布怎么写 r语言中二项分布_r语言01两点分布怎么写_02


从上图和计算可知,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