【发布时间】:2016-01-03 21:09:31
【问题描述】:
为什么这些不相等?
#First generate 10 numbers between 0 and .5
set.seed(1)
x <- runif(10, 0, .5)
这是我感到困惑的两个陈述:
#First
sample(rep(c(0,1), length(x)), size = 10, prob = c(rbind(1-x,x)), replace = F)
#Second
rbinom(length(x), size = 1, prob=x)
我最初尝试使用“样本”。我以为我在做的是生成十 (0,1) 对,然后分配每个将返回 0 或 1 的概率。
第二个有效,并为我提供了我需要的输出(尝试运行 sim)。所以我已经能够解决我的问题。我只是对“样本”的幕后情况很好奇,这样我就可以更好地理解 R。
【问题讨论】:
-
您可以执行该行的各个部分并查看发生了什么。 rep(c(0,1), length(x)) 生成一个长度为 20 且 0 和 1 相等的数值向量。 c(rbind(1-x,x)) 生成长度为 20 的数字权重以用于采样。然后,样本本身将从您提供的长度为 20 的向量中抽取一项。
-
对于您的情况,可以使用
set.seed(1); rbinom(length(x), size = 1, prob=x); set.seed(1); sapply(x, function(xx) sample(0:1, 1, prob=c(1-xx, xx)))找到等效结果(效率较低)
标签: r statistics