2015-09-30 15 views
6

से डेटा जेनरेट करें कहें कि मेरे पास एक संभावित सरणी वितरण के साथ एक सरल सरणी है।आर: संभाव्यता घनत्व वितरण

library(stats)  
data <- c(0,0.08,0.15,0.28,0.90) 
pdf_of_data <- density(data, from= 0, to=1, bw=0.1) 

क्या कोई तरीका है कि मैं उसी वितरण का उपयोग करके डेटा का एक और सेट उत्पन्न कर सकता हूं। चूंकि ऑपरेशन संभाव्य है, इसे अब प्रारंभिक वितरण से बिल्कुल मेल नहीं करना चाहिए, लेकिन इसे अभी से उत्पन्न किया जाएगा।

मुझे अपने आप पर एक सरल समाधान खोजने में सफलता मिली है। धन्यवाद!

उत्तर

6

आपका सबसे अच्छा शर्त, अनुभवजन्य संचयी घनत्व समारोह उत्पन्न उलटा अनुमान लगाने के लिए है, और फिर इनपुट को बदलने।

यौगिक अभिव्यक्ति लग रहा है

random.points <- approx(
    cumsum(pdf_of_data$y)/sum(pdf_of_data$y), 
    pdf_of_data$x, 
    runif(10000) 
)$y 

तरह पैदावार

hist(random.points, 100) 

enter image description here

+0

यह बहुत अच्छा है! धन्यवाद! – puslet88

+2

यह एक शानदार जवाब है! मैं इसे 'stackoverflow' पैकेज में जोड़ने जा रहा हूं। –

8

?density के दस्तावेज़ीकरण में उदाहरणों से आप (लगभग) जवाब प्राप्त करते हैं।

तो, कुछ इस तरह यह करना चाहिए:

library("stats")  
data <- c(0,0.08,0.15,0.28,0.90) 
pdf_of_data <- density(data, from= 0, to=1, bw=0.1) 

# From the example. 
N <- 1e6 
x.new <- rnorm(N, sample(data, size = N, replace = TRUE), pdf_of_data$bw) 

# Histogram of the draws with the distribution superimposed. 
hist(x.new, freq = FALSE) 
lines(pdf_of_data) 

Imgur

तुम बस rejection sampling. वैकल्पिक रूप में के रूप में अपने अंतराल के बाहर खींचता है अस्वीकार कर सकते हैं, तो आप एल्गोरिथ्म लिंक में वर्णित उपयोग कर सकते हैं।

+2

समतल घनत्व वक्र से ड्राइंग नहीं, डेटा को यह सिर्फ जोड़ने गाऊसी शोर नहीं है? –

+1

@NealFultz याद रखें कि चिकना घनत्व वक्र गॉसियन वितरण का मिश्रण है --- प्रत्येक अवलोकन के लिए एक। तो हम सिर्फ प्रत्येक घटक से नमूना कर रहे हैं। लेकिन हाँ, आप भी सही हैं। –

+0

डिफ़ॉल्ट सेटिंग्स के लिए अच्छा लगता है ('कर्नेल =" गाऊशियन "')। –

3

वक्र से आकर्षित करने के लिए:

sample(pdf_of_data$x, 1e6, TRUE, pdf_of_data$y) 
+3

ध्यान दें, कि यह दृष्टिकोण 'घनत्व' में 'n' तर्क पर दृढ़ता से निर्भर है। आपको 'n' अद्वितीय मानों से अधिक कभी नहीं मिलेगा। आप बस एक एनबी वैल्यू और संबंधित संभावनाओं के साथ एक असतत संभाव्यता समारोह से नमूना कर रहे हैं। आपके आवेदन के आधार पर, यह ठीक हो सकता है। –

+0

यह एक अच्छा बिंदु है, और डेटा को फिट करने के लिए 'n' का उपयोग किया जा सकता है। मेरे उद्देश्यों के लिए यह वास्तव में भी काम करता है। यहां से चुनने के लिए बहुत सारे सही और उपयोगी उत्तर। बहुत धन्यवाद फिर से! – puslet88

संबंधित मुद्दे