2014-04-04 6 views
14

आर में, मैं एक असतत यादृच्छिक चर का एक यादृच्छिक नमूना उत्पन्न करना चाहता हूं: X, जहां: P(X=a)=P(X=-a)=1/2। मैं ऑनलाइन एक फ़ंक्शन खोज रहा हूं, लेकिन ऐसा कोई प्रत्यक्ष कार्य नहीं करता है।आर-एक असतत यादृच्छिक चर के यादृच्छिक नमूने कैसे उत्पन्न करें?

उत्तर

18

मुझे लगता है कि आप एक Bernoulli यादृच्छिक चर के नमूने उत्पन्न करने के लिए देख रहे हैं। एक बर्नौली यादृच्छिक चर एक द्विपदीय यादृच्छिक चर का एक विशेष मामला है। इसलिए, आप rbinom(N,1,p) आज़मा सकते हैं। यह N नमूने उत्पन्न करेगा, 1 मूल्य 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) $ के साथ उत्पन्न करने के लिए बहुत आसान हैं, इसलिए लोग उनके लिए कोई फ़ंक्शन नहीं लपेटते हैं। हालांकि, आप अपना खुद का फ़ंक्शन लिख सकते हैं और अगली बार जब आप उनका उपयोग करने जा रहे हैं तो उन्हें उठाएं।

+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 

काम करता है।

आप एक से अधिक तत्व के नमूने के लिए की जरूरत है, तो 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 
संबंधित मुद्दे