二项分布(np-random-binomial)

二项分布(binomial distribution)公式:

n为实验总次数,k是成功的次数,p是成功概率

P(X=k)=C_n^kp^k(1-p)^{n-k}

numpy给出的api是:

numpy.random.RandomState.binomial(n, p, size=None)

表示对一个二项分布进行采样(size表示采样的次数,draw samples from a binomial distribution.),参数中的n,p分别对应于公式中的n,p,函数的返回值表示n中成功(success)的次数。

例子

可能说起来比较抽象,我们以一个具体的实例进行阐释:

说野外正在进行9(n=9)口石油勘探井的发掘工作,每一口井能够开发出油
的概率是0.1(p=0.1)。请问,最终所有的勘探井都勘探失败的概率?
如果手动计算的话,自然简单运用中学概率知识便可秒答

P(X=0)=C_9^0p^0(1-p)^{n-0}approx0.3874

因为np.random.binomial()进行的是采样工作,为了逼近这一概率,我们需要进行的是采用统计的方法进行对概率值的逼近:

n, p = 9, .1

采样2000次,返回值表示2000次采样中n(即9)中成功的次数
这里对成功次数为0的实验进行个数统计加和

 sum(np.random.binomial(n, p, size=20000)==0)/20000.

0.3833
np.random.binomial函数返回的其实是一个ndarray,ndarray每个元素代表相应的一次采样实验(一次实验进行n次)中成功的次数,明白了这一点,就很好理解了:

n, p = 9, .1
print(np.random.binomial(n, p, size=20))

[1 2 1 1 0 4 3 1 0 0 0 0 1 2 2 1 0 1 0 0]
模拟投硬币

两枚都是正面

n, p = 2, .5            
sum(np.random.binomial(n, p, size=20000)==2)/20000.

0.24605
和我们的精确概率值相接近

其中一个为反面

 sum(np.random.binomial(n, p, size=20000)==1)/20000.

0.5075

两个都是反面

 n, p = 2, .5
 sum(np.random.binomial(n, p, size=20000)==0)/20000.

0.257

链接:https://www.jianshu.com/p/63434ad5ea64

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权,转载请注明出处。
文章名称:《二项分布(np-random-binomial)》
文章来自:泰恩数据
文章链接:https://tyne.cc/490.html
本站资源仅供个人学习使用,请勿用于商业用途。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址