आर

2010-08-25 14 views
7

में यादृच्छिक क्रम और साजिश उत्पन्न करता है, मैं सामान्य वितरण के बाद 3000 अंकों से बना एक यादृच्छिक अनुक्रम उत्पन्न करना चाहता हूं। मतलब सी है और मानक विचलन डी है। लेकिन मैं चाहता हूं कि ये 3000 अंक [ए, बी] की सीमा में हैं।आर

क्या आप मुझे बता सकते हैं कि आर में इसे कैसे किया जाए?

यदि मैं इस अनुक्रम को साजिश करना चाहता हूं, यदि वाई-अक्ष उत्पन्न 3000 अंक का उपयोग करता है, तो मुझे एक्स-अक्ष से संबंधित बिंदु कैसे उत्पन्न करना चाहिए।

उत्तर

5

आप क्या कर सकते हैं यह इस तरह मानक आर कार्यों का उपयोग कर:

c <- 1 
d <- 2 

a <- -2 
b <- 3.5 

ll <- pnorm(a, c, d) 
ul <- pnorm(b, c, d) 

x <- qnorm(runif(3000, ll, ul), c, d) 
hist(x) 
range(x) 
mean(x) 
sd(x) 
plot(x, type='l') 

वर्दी विचलन के लिए उपयोग करने के लिए सीमाओं को खोजने के लिए निमंत्रण समारोह का उपयोग किया जाता है, तब डेटा को वर्दी से उत्पन्न किया जाता है और फिर सामान्य में बदल जाता है।

यह distr पैकेज का उपयोग भी सरल है:

library(distr) 

N <- Norm(c,d) 
N2 <- Truncate(N, lower=a, upper=b) 

plot(N2) 
x <- r(N2)(3000) 
hist(x) 
range(x) 
mean(x) 
sd(x) 
plot(x, type='l') 

ध्यान दें कि दोनों ही मामलों में मतलब ग नहीं है और एसडी घ नहीं है। यदि आप परिणामी छंटनी वाले डेटा का मतलब और एसडी चाहते हैं तो सी और डी हो, तो आपको अलग-अलग मूल्यों (उच्च एसडी, मतलब छंटनी मूल्यों पर निर्भर करता है) के लिए अभिभावक वितरण (छंटनी से पहले) की आवश्यकता होती है, यह मान एक मूल्य होगा गणित/स्टेट सिद्धांत पाठ्यक्रम के लिए अच्छी होमवर्क समस्या। यदि आपको वही ज़रूरत है तो एक टिप्पणी जोड़ें या विशेष रूप से कहने के लिए प्रश्न संपादित करें।

आप untruncated सामान्य से डेटा उत्पन्न करने के लिए है, लेकिन केवल रेंज [क, ख] तो बस ylim तर्क प्लॉट करने के लिए उपयोग करने के भीतर डेटा प्लॉट करना चाहते हैं:

plot(rnorm(3000, c, d), ylim=c(a,b)) 
3

किसी भी संभावना वितरण से नंबर की एक यादृच्छिक अनुक्रम जनरेट कर रहा है केवल एक दिया सीमा के भीतर सामान्य वितरण विशेष रूप से

c = 1 
d = 2 
x <- rnorm(3000, c, d) 

x में मूल्यों कतरन वे कर रहे हैं ताकि के लिए ऐसा करने के लिए आर में बहुत आसान है सामान्य वितरण से नमूना के साथ करना एक अजीब बात है। हो सकता है कि आप वास्तव में क्या करना चाहते हैं नमूना एक समान वितरण है।

a = 0 
b = 3 
x2 <- runif(3000, a, b) 

वितरण के साजिश के लिए, मुझे यकीन नहीं है कि मैं आपके प्रश्न का पालन करता हूं। आप इस कोड

plot(density(x)) 

के साथ नमूना के लिए एक घनत्व अनुमान प्लॉट कर सकते हैं लेकिन, यदि आप किसी प्रकार का बिखराव साजिश के रूप में इस डेटा प्लॉट करना चाहते हैं, आप वास्तव में संख्या का एक दूसरा नमूना उत्पन्न करने के लिए की जरूरत है।

0
a = -2; b = 3 
plot(dnorm, xlim = c(a, b)) 
+0

यह वही नहीं करता है ओपी के लिए पूछा। वह सामान्य वितरण के बाद 3000 अंक चाहता है, इसलिए 'रेनॉर्म' – nico

+0

जाने का तरीका है यह एक खराब गठित प्रश्न है ... मैंने अनुमान लगाया। यदि यह वास्तव में वाई-अक्ष पर यादृच्छिक मानों की साजिश कर रहा था, तो इसका एक हिस्सा यह बताता है कि एक्स-अक्ष सीमा अनुरोध क्या है? इसका कोई मतलब नही बनता। मेरा अनुमान है कि यादृच्छिक मानों का अनुरोध घनत्व फ़ंक्शन उत्पन्न करने के लिए किया जाता है जैसे @joFrhld और @Joris Mays। घनत्व समारोह उत्पन्न करने का यह सही तरीका है। – John

1

मैं इस क्रम प्लॉट करने के लिए, Y- अक्ष उत्पन्न 3000 अंक का उपयोग करता है, तो मैं कैसे अंक X- अक्ष के लिए इसी उत्पन्न करनी चाहिए चाहते हैं, तो।

तुम सिर्फ अपने अंक उत्पन्न करते हैं, JoFrhwld तरह

y <- rnorm(3000, 1, 2) 

फिर से कहा

plot(y) 

उन्हें स्वचालित रूप से एक्स अक्ष के रूप में सरणी सूचकांक का उपयोग कर साजिश करेंगे