आर में, मनमाना अनियमित यादृच्छिक विविधता को अनुकरण करने का सबसे अच्छा तरीका क्या है यदि केवल इसकी संभाव्यता घनत्व कार्य उपलब्ध हो?मैं अपनी संभाव्यता फ़ंक्शन का उपयोग करके मनमानी अनियमित यादृच्छिक विविधता का सर्वोत्तम अनुकरण कैसे करूं?
14
A
उत्तर
11
जब आप केवल घनत्व प्रदान करते हैं तो व्यस्त सीडीएफ विधि का एक (धीमा) कार्यान्वयन होता है।
den<-dnorm #replace with your own density
#calculates the cdf by numerical integration
cdf<-function(x) integrate(den,-Inf,x)[[1]]
#inverts the cdf
inverse.cdf<-function(x,cdf,starting.value=0){
lower.found<-FALSE
lower<-starting.value
while(!lower.found){
if(cdf(lower)>=(x-.000001))
lower<-lower-(lower-starting.value)^2-1
else
lower.found<-TRUE
}
upper.found<-FALSE
upper<-starting.value
while(!upper.found){
if(cdf(upper)<=(x+.000001))
upper<-upper+(upper-starting.value)^2+1
else
upper.found<-TRUE
}
uniroot(function(y) cdf(y)-x,c(lower,upper))$root
}
#generates 1000 random variables of distribution 'den'
vars<-apply(matrix(runif(1000)),1,function(x) inverse.cdf(x,cdf))
hist(vars)
1
संचयी बंटन का प्रयोग करें समारोह http://en.wikipedia.org/wiki/Cumulative_distribution_function
तो बस उसके व्युत्क्रम का उपयोग करें। बेहतर तस्वीर के लिए यहाँ की जाँच करें http://en.wikipedia.org/wiki/Normal_distribution
यही मतलब है: से यादृच्छिक संख्या लेने [0,1] और सेट CDF के रूप में है, तो जाँच मूल्य
यह भी कहा जाता है quantile कार्य करते हैं।
-1
आप घनत्व से नमूने प्राप्त करने के लिए मेट्रोपोलिस-hastings का उपयोग कर सकते हैं।
6
ऊपर "महानगरों-हेस्टिंग्स का उपयोग" जवाब स्पष्ट करने के लिए:
मान लीजिए ddist()
अपने प्रायिकता घनत्व समारोह
कुछ की तरह है:
n <- 10000
cand.sd <- 0.1
init <- 0
vals <- numeric(n)
vals[1] <- init
oldprob <- 0
for (i in 2:n) {
newval <- rnorm(1,mean=vals[i-1],sd=cand.sd)
newprob <- ddist(newval)
if (runif(1)<newprob/oldprob) {
vals[i] <- newval
} else vals[i] <- vals[i-1]
oldprob <- newprob
}
नोट्स:
- पूरी तरह से untested
- दक्षता उम्मीदवार वितरण पर निर्भर करता है (यानी।
cand.sd
का मूल्य)। अधिकतम क्षमता, धुनcand.sd
25-40% जिसकी स्वीकृति दर - परिणाम autocorrelated किया जाएगा ... (हालांकि मुझे लगता है कि आप हमेशा
sample()
परिणाम उन्हें हाथापाई करने सकता है, या पतली) - करना पड़ सकता है करने के लिए एक, "बर्न-इन" यदि आपके प्रारंभ मूल्य अजीब
शास्त्रीय दृष्टिकोण इस समस्या का अस्वीकृति नमूना है (देखें उदाहरण के लिए प्रेस एट अल न्यूमेरिकल व्यंजनों)
संबंधित मुद्दे
- 1. रैकेट मैक्रोज़ का उपयोग करके मैं फ़ंक्शन कैसे परिभाषित करूं?
- 2. संभाव्यता यादृच्छिक संख्या जेनरेटर
- 3. मैं NHibernate के ICriteria API का उपयोग करके एक यादृच्छिक पंक्ति का चयन कैसे करूं?
- 4. मैं MATLAB में 'शामिल' व्यवहार का अनुकरण कैसे करूं?
- 5. libftdi v0.18 का उपयोग करके मैं एलईडी कैसे फ्लैश करूं?
- 6. मैं सी # में यादृच्छिक संख्या का उपयोग कैसे करूं?
- 7. मैं अपनी कक्षा में संख्यात्मक मिश्रण का उपयोग कैसे करूं?
- 8. जीडीबी का उपयोग करके डीबगिंग - सर्वोत्तम प्रथाओं
- 9. जावास्क्रिप्ट का उपयोग करके मैं यादृच्छिक रूप से HTML हेक्स रंग कोड कैसे उत्पन्न करूं?
- 10. कोडइग्निटर का उपयोग करके मैं टेबल सॉर्टिंग कैसे करूं?
- 11. एसक्यूएल का उपयोग करके, मैं अपने मूल्यों का उपयोग करके पंक्तियों को कैसे अपडेट करूं?
- 12. मनमानी मिलान फ़ंक्शन का उपयोग करके पाइथन सूचियों को कैसे अलग/संरेखित करना है?
- 13. मैं विम फ़ंक्शन के अंदर एक कीप्रेस कैसे अनुकरण करूं?
- 14. ggplot2 का उपयोग करके मैं व्हायोलिन प्लॉट कैसे आकर्षित करूं?
- 15. रिलेवेटिवआउट का उपयोग करके मैं निम्नलिखित परिणाम कैसे प्राप्त करूं?
- 16. पावरशेल का उपयोग करके मैं XML को कैसे संपादित करूं?
- 17. मैं HTML.ActionLink का उपयोग करके एक छवि कैसे सम्मिलित करूं?
- 18. मैवेन का उपयोग करके मैं प्रोग्राम कैसे निष्पादित करूं?
- 19. मैं एक्सएनए का उपयोग करके लाइन कैसे आकर्षित करूं?
- 20. मैं ImageMagick का उपयोग करके एनिमेटेड gif कैसे फसल करूं?
- 21. मैं matplotlib autopct का उपयोग कैसे करूं?
- 22. मैं पाइथन में पक्षपातपूर्ण सिक्का की फ्लिप कैसे अनुकरण करूं?
- 23. मैं नोडजेएस में "नींद" का अनुकरण कैसे करूं?
- 24. मैं Emacs में विम के 'सॉफ्टटैबॉप' का अनुकरण कैसे करूं?
- 25. मैं पाइथन में पक्षपातपूर्ण मरने का अनुकरण कैसे करूं?
- 26. मैं हास्केल में फ़िल्टर फ़ंक्शन का उपयोग कैसे करूं?
- 27. मैं जावास्क्रिप्ट फ़ंक्शन में रेजर मानों का उपयोग कैसे करूं?
- 28. मैं "विदेशी फ़ंक्शन इंटरफ़ेस" का उपयोग करके सी से गो को कैसे कॉल करूं
- 29. मैं कॉलिंग विधि का नाम कैसे प्राप्त करूं और प्रतिबिंब का उपयोग करके टाइप करूं?
- 30. XPath का उपयोग करके, मैं अपनी टेक्स्ट सामग्री और विशेषता के मूल्य के आधार पर नोड का चयन कैसे करूं?
बहुत बढ़िया प्रश्न छोड़ना! –