R에서 이산 확률 변수의 무작위 샘플을 생성하고 싶습니다 : X
, 여기서 : P(X=a)=P(X=-a)=1/2
. 필자는 온라인 기능을 찾고 있었지만 직접 기능이없는 것 같습니다.R - 이산 확률 변수의 임의 샘플을 생성하는 방법은 무엇입니까?
14
A
답변
18
베르누이 임의 변수의 샘플을 생성하려고합니다. Bernoulli 확률 변수는 이항 확률 변수의 특수한 경우입니다. 따라서 rbinom(N,1,p)
을 시도해보십시오. 그러면 샘플이 생성되고 값은 이고 확률은 p
이고 값은 0
이고 확률은 (1-p)
입니다. a
및 -a
의 값을 얻으려면 a*(2*rbinom(N,1,p)-1)
을 사용할 수 있습니다.
-1
index <- sample(1,c(1,2),replace=T)
if (index == 1) {xx = a} else {xx = -a}
각 배포판 생성 절차는 $ \ text {uniform} (0,1) $을 사용하여 시작됩니다. 이산 분포는 $ \ text {uniform} (0,1) $로 생성하기가 훨씬 쉽기 때문에 사람들은 함수를 마무리하지 않습니다. 그러나 자신 만의 함수를 작성하고 다음에 사용할 함수를 사용할 수 있습니다.
2
또는이 :
> 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
>
7
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
작동.
두 개 이상의 요소를 샘플해야하는 경우
는 여기에 우리가 12 배 샘플 ...replace=TRUE
설정 :
sample(c(-a,a),12,replace=TRUE)
[1] 10 10 -10 10 10 10 -10 -10 10 -10 10 -10
2) runif
을 사용할 수 있습니다; 여기에 크기 9의 샘플이 있습니다. rbinom
; 다음은 크기 4의 샘플입니다.
a <- 6
ifelse(rbinom(4,1,.5),-a,a)
[1] -6 6 -6 6
코드가 잘못되었습니다. 'a' 만 생성합니다. –