我们知道
当概率总和大于1时。
sample
函数中的prob
参数用于指定权重的概率。例如,table(sample(1:4, 1e6, replace = TRUE, prob = c(0.2, 0.4, 0.3, 0.1)))/1e6
# 1 2 3 4
#0.2 0.4 0.3 0.1
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.2, 0.4, 0.3, 0.1)))/1e6
# 1 2 3 4
#0.200 0.400 0.299 0.100
在这个例子中,概率的总和恰好为1(0.2 + 0.4 + 0.3 + 0.1),因此它给出了期望的比率,但如果概率不等于1呢?它会给出什么输出?我以为它会产生错误,但实际上会给出某个值。当概率总和大于1时。
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.2, 0.5, 0.5, 0.1)))/1e6
# 1 2 3 4
#0.1544 0.3839 0.3848 0.0768
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.2, 0.5, 0.5, 0.1)))/1e6
# 1 2 3 4
#0.1544 0.3842 0.3848 0.0767
当概率总和小于1时
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.1, 0.1, 0.5, 0.1)))/1e6
# 1 2 3 4
#0.124 0.125 0.625 0.125
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.1, 0.1, 0.5, 0.1)))/1e6
# 1 2 3 4
#0.125 0.125 0.625 0.125
正如我们所看到的,运行多次会得到不等于 prob
的输出,但结果也不是随机的。在这种情况下,数字是如何分布的?这在哪里有记录?
我尝试在互联网上搜索,但没有找到相关信息。我查看了在?sample
文档中的内容。
可选的
prob
参数可以用于给定一个权重向量,以获取样本向量中的元素。它们不需要总和为1,但应为非负数且不能都为零。如果替换为true,则在有超过200个相当可信的值时使用 Walker's alias 方法(Ripley,1987):这会给出与 R < 2.2.0 不兼容的结果。
因此,它说prob
参数不需要总和为1,但是当它不总和为1时期望什么呢?我不确定是否错过了文档的任何部分。有人有什么想法吗?