从同一组中选出 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
谁能帮我解决以下问题,并告诉我如何使用 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