gpt4 book ai didi

使用概率向量随机抽取

转载 作者:行者123 更新时间:2023-12-02 03:08:32 25 4
gpt4 key购买 nike

我有一个概率向量。有了概率,我想为每个概率在 (0,1) 之间抽取一个样本。

例如,prob_of_one表示抽到1((1-prob_of_one)是抽到0的概率)。

data.frame(prob_of_one = c(runif(100)),desire_column = NA)

如何在不使用 for-loop 的情况下通过采样获得 0 或 1 值?

最佳答案

请记住,rbinom 采用向量参数,包括其概率。因此,您只需说:

rbinom(100,size=1,prob=prob_of_one)

我知道你没有问,但请记住,可以使用 R 的回收规则,所以如果你想要同一向量中的 2 组 100,你可以说

rbinom(200,size=1,prob=prob_of_ones)

如果你的概率向量的长度可以整除 100,它也会起作用。下面给出了当概率 1 重复 50 次 (1/3,1/5) 时的平局。

rbinom(100,size=1,prob=c(1/3,1/5))

基准测试

## transform 
c1<-function(n=100) {
dd <- data.frame(prob_of_one = runif(n))
transform(dd, draw = ifelse(runif(length(prob_of_one))<prob_of_one, 1, 0))
}

##rbinom
c2<-function(n=100){
set.seed(101)
prob_of_one=runif(n)
rbinom(n,size=1,prob=prob_of_one)
}

> benchmark(transform_method=c1(100),my_method=c(100),replications=1000) %>% kable

| |test | replications| elapsed|relative | user.self| sys.self| user.child| sys.child|
|:--|:----------------|------------:|-------:|:--------|---------:|--------:|----------:|---------:|
|2 |my_method | 1000| 0.00|NA | 0.00| 0| NA| NA|
|1 |transform_method | 1000| 0.47|NA | 0.47| 0| NA| NA|

关于使用概率向量随机抽取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58329630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com