web-dev-qa-db-fra.com

R-Comment générer un échantillon aléatoire d'une variable aléatoire discrète?

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.

15
Kelly Nguyen

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).

20
user42628

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
7
Glen_b

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
> 
2
Stat