Rでは、離散確率変数のランダムサンプルを生成したい:X
、ここで:P(X=a)=P(X=-a)=1/2
。私はオンラインで機能を探していますが、これを行う直接的な機能はないようです。
ベルヌーイ確率変数のサンプルを生成しようとしていると思います。ベルヌーイ確率変数は、二項確率変数の特殊なケースです。したがって、rbinom(N,1,p)
を試すことができます。これにより、N
サンプルが生成され、値が_1
_の確率がp
、値が_0
_の確率が_(1-p)
_になります。 a
および_-a
_の値を取得するには、a*(2*rbinom(N,1,p)-1)
を使用できます。
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
動作します。
複数の要素をサンプリングする必要がある場合は、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
またはこれ:
> 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
>