R:计算至少抽到 1 个红色弹珠的概率

R: calculating the probability of drawing at least 1 red marble

假设我的人口中有 n 个弹珠,其中只有 1% 是红色的。在抽取 30 次的样本中,我抽到至少 1 个红色弹珠的概率是多少?

我知道 P(至少 1 个红色弹珠)= 1 - P(没有红色弹珠)

我用 R 写了一个函数

pMarble = function(n){
   1-(choose(n-ceiling(0.01*n), 30)/choose(n, 30))
}

该函数接受 1 个参数,即总体中弹珠的数量,我使用 sapply 迭代 n

的不同值
n = 100:1000
toplot = sapply(n, pMarble)
plot(n, toplot)

为什么剧情不连贯?我认为这只是一个递减的连续函数。随着弹珠总数的增加,假设我只绘制了 30 个弹珠,那么绘制至少 1 个红色弹珠(以 1% 的频率出现在人群中)的概率会单调递减吗?为什么我看到不连续?

Suppose my population has n marbles, and only 1% of them are red. In a sample of 30 draws, what's the probability that I draw at least 1 red marble?

你是对的,至少有 1 个红色弹珠的概率是 1-Pr(no marbles);对于二项式,实际上是这样的(因为平局中的各个弹珠选择是独立的)30 次抽取 n 弹珠中没有弹珠的概率与单次没有弹珠的概率相同绘制 30n 个弹珠...所以我们有 1-(1-p)^(30n).

p <- 0.01
par(las=1,bty="l") ## cosmetic
curve(1-(1-p)^(30*x),from=0,to=100,
      xlab="Number of 30-marble draws",ylab="prob(>0 marbles)")

让我们针对单个案例进行实证测试:

(1-(1-p)^(30*3))  ## 3 draws, 0.595
set.seed(101)
mean(replicate(100000,
          any(rbinom(3,prob=0.01,size=30)>0)))
## 0.59717