Каков оптимальный способ многократного рисования из (0,1) с вектором переменных вероятностей? (Р)

Я часто сталкиваюсь с проблемой, что я хочу рисовать образцы с заменой из c(0,1) с переменным вектором вероятности успеха prob, такие как

prob <- c(1:5/10)

Два варианта, используя оба for цикл являются:

A <- numeric()
n <- length(prob)
for(i in 1:n){
  A[i] <- rbinom( 1 , 1 , prob = prob[i] )
}

а также

for(i in 1:n){
  A[i] <- sample( c(0,1) , 1 , prob = c(1-prob[i],prob[i]) )
}

Существуют ли более прямые (оптимальные, элегантные) способы сделать это, например, без использования for цикл?

1 ответ

Решение

Все функции распределения полностью векторизованы, например:

set.seed(42)
rbinom(2, 1, c(0.01, 0.99))
#[1] 0 1

rnorm(2, mean = c(1, 1e3))
#[1]    0.4353018 1000.3631284

rf(2, c(1, 10), c(10, 1))
#[1] 1.408771 4.677464

и т.п.

Другие вопросы по тегам