R-Как создать случайную выборку дискретных случайных величин?
В R я хочу создать случайную выборку дискретной случайной величины: X
, где: P(X=a)=P(X=-a)=1/2
. Я искал функцию в Интернете, но, похоже, нет никакой прямой функции.
Ответы
Ответ 1
Я думаю, что вы хотите сгенерировать образцы случайной величины Бернулли. Случайная величина Бернулли является частным случаем биномиальной случайной величины. Поэтому вы можете попробовать rbinom(N,1,p)
. Это сгенерирует N
образцы со значением 1
с вероятностью p
, значение 0
с вероятностью (1-p)
. Чтобы получить значения a
и -a
, вы можете использовать a*(2*rbinom(N,1,p)-1)
.
Ответ 2
1) Если вы используете sample
, этого достаточно:
sample(c(-a,a),1)
например:.
a <- 10
sample(c(-a,a),1)
[1] -10
Попробуйте еще пару:
> sample(c(-a,a),1)
[1] -10
> sample(c(-a,a),1)
[1] 10
Works.
Если вам нужно попробовать несколько элементов, тогда установите replace=TRUE
... здесь мы процитируем 12 раз:
sample(c(-a,a),12,replace=TRUE)
[1] 10 10 -10 10 10 10 -10 -10 10 -10 10 -10
2) вы можете использовать runif
; здесь образец размера 9:
a <- 1
ifelse(runif(9)<.5,-a,a)
[1] -1 1 -1 1 -1 1 -1 1 1
3) вы можете использовать rbinom
; здесь образец размером 4:
a <- 6
ifelse(rbinom(4,1,.5),-a,a)
[1] -6 6 -6 6
Ответ 3
Или это:
> n=10
> X=rep(0,n)
> Y=rbinom(n,1,1/2)
> #Since they the probability is 1/2 for both cases, I assigned "a" when Y=1 and "-a" otherwise.
> X[Y==1]="a"
> X[Y==0]="-a"
> X
[1] "a" "-a" "a" "a" "a" "-a" "a" "-a" "-a" "-a"
> Y
[1] 1 0 1 1 1 0 1 0 0 0
>
Ответ 4
index <- sample(1,c(1,2),replace=T)
if (index == 1) {xx = a} else {xx = -a}
Каждая процедура генерации распределения начинается с использования $\ text {uniform} (0,1) $. Поскольку дискретные распределения намного проще сгенерировать с помощью $\ text {uniform} (0,1) $, люди не завершают функцию для них. Однако вы можете написать свою собственную функцию и просто забрать их в следующий раз, когда собираетесь их использовать.