2014-04-04 5 views

Antwort

18

Ich denke, dass Sie Proben einer Bernoulli-Zufallsvariable generieren möchten. Eine Bernoulli-Zufallsvariable ist ein Spezialfall einer binomischen Zufallsvariablen. Daher können Sie versuchen rbinom(N,1,p). Dies erzeugt N Samples mit dem Wert 1 mit der Wahrscheinlichkeit , Wert 0 mit der Wahrscheinlichkeit (1-p). Um Werte von a und zu erhalten, können Sie a*(2*rbinom(N,1,p)-1) verwenden.

-1

Jede verteilungserzeugende Prozedur beginnt mit $ \ text {uniform} (0,1) $. Da diskrete Verteilungen mit $ \ text {uniform} (0,1) $ viel einfacher zu erzeugen sind, wird für die Leute keine Funktion eingepackt. Sie können jedoch Ihre eigene Funktion schreiben und sie beim nächsten Mal abholen.

+1

Der Code ist falsch. Es erzeugt nur "a" –

2

Oder diese:

> 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) Wenn Sie sample verwenden, ist dies ausreichend:

sample(c(-a,a),1)

z.B .:

a <- 10 
sample(c(-a,a),1) 
[1] -10 

noch ein paar Versuchen:

> sample(c(-a,a),1) 
[1] -10 
> sample(c(-a,a),1) 
[1] 10 

Funktioniert.

Wenn Sie mehr als ein Element probieren, dann setzen Sie replace=TRUE ... wir 12-mal hier probieren:

sample(c(-a,a),12,replace=TRUE) 

[1] 10 10 -10 10 10 10 -10 -10 10 -10 10 -10 

2) Sie runif verwenden können; hier ist eine Stichprobe der Größe 9:

a <- 1 
ifelse(runif(9)<.5,-a,a) 

[1] -1 1 -1 1 -1 1 -1 1 1 

3) Sie rbinom verwenden können; Hier ist ein Beispiel der Größe 4:

a <- 6 
ifelse(rbinom(4,1,.5),-a,a) 

[1] -6 6 -6 6 
Verwandte Themen