我有样本数据:
test <- c("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q",
"r","s","t","u","v","w","x","y","z")
我想创建1000个样本,每个样本包含5个元素,这样所有5个元素都是唯一的,并且每个元素在1000个样本中的出现率是根据以下比例:
我已经尝试使用下面的代码,但当我检查元素的百分比,例如“a”,它不是预期的
sample_function <- function(){sample(test,5,replace = FALSE, prob = c('0.9',
'0.8','0.45','0.6','0.3','0.05','0.08','0.12','0.79','0.33','0.24','0.1','0.1',
'0.76','0.22','0.2','0.7','0.67','0.35','0.45','0.07','0.11','0.14','0.03','0.02',
'0.05')) }
sample_data <- replicate(1000,sample_function())
sum(sample_data=="a")
我期望的输出接近0.9。如何在R中实现这一点?
样本应该有1000行,两行可以有相同的值集,但所有五个元素应该是唯一的,并满足给定的比例(例如,“a”应该出现约900次,在整个数据集的1000。我得到的数字不接近0.9,比如字母表“a”的0.45)
1条答案
按热度按时间9njqaruj1#
测试这个,似乎是工作?
给
值得注意的是,你的draw-5-without-replacement子句会扭曲结果-如果有非常常见的选项,情况会很糟糕-想象一下,如果“c”打算有50%的代表性,但它永远不会高于20%
您将看到最常见选项的频率低于预期,而中间选项的频率高于预期。这是同样的种子,有100万次重复:
期望值不正确
在评论中有关于期望的讨论,即如果我们对每个试验的匹配进行计数,则字母“应该”的频率会导致相同的频率(10%的概率字母“应该”在10%的集合中出现)
解释为什么预期是错误的:
考虑允许替换的简化情况。我们想测试一个字母“a”,期望抽取率为10%。
画一个字母有
0.1
的概率画“a”,因此有1-0.1 = 0.9
的概率画非a。在5次抽奖中抽到你的物品的几率是:
或者更简单地说,
1 - 0.9^5 = 0.40951
现在,如果我们包括5个集合中没有重复的规则,情况会变得更糟:如果我们不先画a,那么我们接下来画它的机会就增加了(因为其中一个选项被从池中删除了):每次我们抽签时,它变得不那么容易预测,因为下一次抽签的概率取决于所有以前的抽签:
查看更多:https://en.wikipedia.org/wiki/Wallenius%27_noncentral_hypergeometric_distribution