Dans R, je veux générer un échantillon aléatoire d'une variable aléatoire discrète: X
, où: P(X=a)=P(X=-a)=1/2
. Je cherchais une fonction en ligne, mais il ne semble pas y avoir de fonction directe faisant cela.
Je pense que vous cherchez à générer des échantillons d'une variable aléatoire de Bernoulli. Une variable aléatoire de Bernoulli est un cas particulier d'une variable aléatoire binomiale. Par conséquent, vous pouvez essayer rbinom(N,1,p)
. Cela générera N
échantillons, avec la valeur 1
Avec la probabilité p
, la valeur 0
Avec la probabilité (1-p)
. Pour obtenir les valeurs de a
et -a
, Vous pouvez utiliser a*(2*rbinom(N,1,p)-1)
.
1) Si vous utilisez sample
, cela suffit:
sample(c(-a,a),1)
par exemple.:
a <- 10
sample(c(-a,a),1)
[1] -10
Essayez un autre couple:
> sample(c(-a,a),1)
[1] -10
> sample(c(-a,a),1)
[1] 10
Travaux.
Si vous devez échantillonner plusieurs éléments, définissez replace=TRUE
... ici nous échantillonnons 12 fois:
sample(c(-a,a),12,replace=TRUE)
[1] 10 10 -10 10 10 10 -10 -10 10 -10 10 -10
2) vous pouvez utiliser runif
; voici un échantillon de taille 9:
a <- 1
ifelse(runif(9)<.5,-a,a)
[1] -1 1 -1 1 -1 1 -1 1 1
3) vous pouvez utiliser rbinom
; voici un échantillon de taille 4:
a <- 6
ifelse(rbinom(4,1,.5),-a,a)
[1] -6 6 -6 6
Ou ca:
> 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
>