+1 से @ user11852, और @ jem77bfp, ये अच्छे उत्तर हैं। मुझे इसे एक अलग दृष्टिकोण से देखने दें, इसलिए नहीं कि मुझे लगता है कि यह आवश्यक रूप से अभ्यास में बेहतर है , बल्कि इसलिए कि मुझे लगता है कि यह शिक्षाप्रद है। यहां कुछ प्रासंगिक तथ्य दिए गए हैं जिन्हें हम पहले से जानते हैं:
- प्रतिगमन लाइन जब दोनों की ढलान एक्स और वाई हैंमानकीकृत, यानी, एन ( 0 , 1 ) , rXYN(0,1)
, X में विचरण के कारण Y में विचरण का अनुपात है, r2YX
(भी, नियम से नियमों के लिए ):
- एक यादृच्छिक चर का प्रसरण एक गुणक से गुणा होता है, जो मूल चर का लगातार चुकता समय है:
Var[aX]=a2Var[X]
- संस्करण जोड़ते हैं , अर्थात, दो यादृच्छिक चर के योग का विचरण (वे स्वतंत्र होते हैं) दो संस्करणों का योग है:
Var[X+ε]=Var[X]+Var[ε]
अब, हम इन चार तथ्यों को दो मानक सामान्य चर बनाने के लिए जोड़ सकते हैं जिनकी आबादी में एक दिया सहसंबंध होगा, (अधिक ठीक से, ρ ), हालांकि आपके द्वारा उत्पन्न नमूनों में नमूना सहसंबंध होंगे जो भिन्न होते हैं। विचार एक कूट-यादृच्छिक चर, बनाने के लिए है एक्स , कि मानक सामान्य है, एन ( 0 , 1 ) , और फिर एक गुणांक, लगता है एक , और एक त्रुटि विचरण, वी ई , ऐसी है कि वाई ~ एन ( 0 , एक 2 + v ई ) , जहां एrρXN(0,1)aveY∼N(0,a2+ve) । (ध्यान दें कि | एक | होना चाहिए ≤ 1 इस काम करने के लिए, और कहा कि, इसके अलावा, एक = आर ।) इस प्रकार, आप के साथ शुरू r है कि आप चाहते हैं; यह आपका गुणांक है, a । फिर आप त्रुटि संस्करण का पता लगाते हैं जिसकी आपको आवश्यकता होगी, यह 1 - r 2 है । (यदि आपके सॉफ़्टवेयर के लिए आपको मानक विचलन का उपयोग करने की आवश्यकता है, तो उस मान का वर्गमूल लें।) अंत में, प्रत्येक pseudorandom varate, x i के लिए , जो आपने उत्पन्न किया है, एक pseudorandom error varate, e i उत्पन्न करें।ए2+ वीइ= 1| ए | ≤ १ए = आरआरए1 - आर2एक्समैंइमैंउपयुक्त त्रुटि के साथ, विचरण , और सहसंबंधित स्यूडोरैंडरमांगे वैरिएट, y i , को गुणा और जोड़कर गणना करें । vइyमैं
यदि आप R में ऐसा करना चाहते हैं, तो निम्न कोड आपके लिए काम कर सकता है:
correlatedValue = function(x, r){
r2 = r**2
ve = 1-r2
SD = sqrt(ve)
e = rnorm(length(x), mean=0, sd=SD)
y = r*x + e
return(y)
}
set.seed(5)
x = rnorm(10000)
y = correlatedValue(x=x, r=.5)
cor(x,y)
[1] 0.4945964
(संपादित करें: मैं उल्लेख करना भूल गया :) जैसा कि मैंने वर्णन किया है, यह प्रक्रिया आपको दो मानक सामान्य सहसंबद्ध चर देती है। यदि आप मानक मानदंड नहीं चाहते हैं , लेकिन चाहते हैं कि चर के कुछ विशिष्ट साधन हों (0 नहीं) और एसडी (1 नहीं), तो आप सहसंबंध को प्रभावित किए बिना उन्हें रूपांतरित कर सकते हैं। इस प्रकार, आप यह सुनिश्चित करने के लिए देखे गए माध्य को घटाएंगे कि माध्य बिल्कुल , चर को एसडी के द्वारा गुणा करें जिसे आप चाहते हैं और फिर आप जो मतलब चाहते हैं उसे जोड़ दें। यदि आप चाहते हैं कि मनाया गया मतलब सामान्य रूप से वांछित साधन के आसपास उतार-चढ़ाव हो, तो आप प्रारंभिक अंतर को वापस जोड़ देंगे। मूलतः, यह रिवर्स में एक z- स्कोर परिवर्तन है। क्योंकि यह एक रैखिक परिवर्तन है, रूपांतरित चर का दूसरे चर के साथ पहले जैसा ही संबंध होगा। 0
फिर, यह, यह सबसे सरल रूप में है, केवल आपको सहसंबद्ध चर की एक जोड़ी उत्पन्न करता है (यह बढ़ाया जा सकता है, लेकिन बदसूरत तेज़ हो जाता है), और निश्चित रूप से काम पाने के लिए सबसे सुविधाजनक तरीका नहीं है। आर में, आप का उपयोग करना चाहते हैं ? MASS पैकेज में mvrnorm , दोनों क्योंकि यह आसान है और क्योंकि आप किसी दिए गए जनसंख्या सहसंबंध मैट्रिक्स के साथ कई चर उत्पन्न कर सकते हैं। बहरहाल, मुझे लगता है कि इस प्रक्रिया से गुजरना सार्थक है कि कुछ बुनियादी सिद्धांत कैसे सरल तरीके से निभाते हैं।