有人能帮我解决以下问题并告诉我如何使用R解决问题吗?
我有两个群(群M和群F(,每个群有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来解决这个问题?
正如@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
我们可以从所有18个元素中选择4的方法的数量为CCD_ 1(=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)
,即choose(18, 4)
0。
例如,您可以通过来模拟
#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次。