【问题标题】:Discrepancy using Python for hypergeometric distribution使用 Python 进行超几何分布的差异
【发布时间】:2017-11-29 04:31:35
【问题描述】:

我有一个关于使用 Python 进行超几何分布计算的问题。假设我有一袋 15 个球,其中 5 个是蓝色的,10 个是红色的。如果我随机挑出 5 个球,我从 5 个蓝球中恰好挑出 4 个的几率是多少?如果我在 Python 中使用模拟执行此操作,则代码如下:

 import numpy as np
 balls=['blue']*5+['red']*10
 count=0
 for i in range(10000):
     pick=np.random.choice(balls, 5)
     if list(pick).count('blue')==4:
         count+=1
 odds=count/10000
 print(odds)

我得到大约 0.04。但是如果我使用 scipy.stats,我会得到一个不同的数字。代码很简单。

from scipy import stats
odds=stats.hypergeom.pmf(4, 15, 5, 5)
print(odds)

我得到 0.016。那么为什么这两个不同呢?

【问题讨论】:

    标签: python scipy


    【解决方案1】:

    要匹配hypergeometric distribution,您必须选择 5 个球无需替换。将pick的生成改为

    pick = np.random.choice(balls, 5, replace=False)
    

    【讨论】:

      猜你喜欢
      • 2020-12-21
      • 2017-08-16
      • 2023-03-12
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      相关资源
      最近更新 更多