从同一组中选出 x 个元素的概率

Probability of x elements chosen from the same group

谁能帮我解决以下问题,并告诉我如何使用 R 解决该问题?

我有两个组(groupM 和 groupF),每个组有 9 个元素(M1:M9 和 F1:F9)。

我想从这些组中随机抽取 4 个元素:

#Make the sample reproducible
set.seed(11)

#two groups with 
groupM <- c("M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "M10")
groupF <- c("F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10")

groupAll <- c(groupM, groupF)

sample(groupAll, 4, replace = FALSE)

所有 4 个元素都来自同一组的可能性有多大?如何计算这个概率以及如何使用 R 解决这个问题?

我们可以从所有18个元素中选择4个的方式是 choose(18, 4) (=3060) 种方式。
groupM中选4的方式数是choose(9, 4),从groupF中选4的方式也是choose(9, 4).
因此,从 1 组中选择所有 4 个是 choose(9, 4) + choose(9, 4)(我们要么从 groupM 中选择全部,要么从 groupF 中选择全部。

因此,解(choose(9, 4) + choose(9, 4)) / choose(18, 4)0.0824

你可以模拟这个,例如,

#Make the sample reproducible
set.seed(11)

#two groups with 
groupM <- c("M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9")
groupF <- c("F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9")

groupAll <- c(groupM, groupF)

mean(replicate(100000,
          {
            perc_male <- mean(startsWith(sample(groupAll, 4, replace = FALSE), "M"))
            same_group <- (perc_male == 1) | (perc_male == 0)
            same_group
          }))

哪些样本使用您的代码,并检查样本的所有元素是否以 "M""F" 开头,并将此实验重复 100000 次。

正如@Bas 所解释的那样,这是一个超几何分布:因此可以计算为:

dhyper(4,9,9,4) * 2
[1] 0.08235294

或者简单地说:

 2* choose(9, 4) / choose(18, 4)
 [1] 0.08235294

模拟部分:

mean(replicate(40000,mean(sample(x, 4))%in%1:2))
[1] 0.0829