सहसंबद्ध यादृच्छिक संख्या (दिए गए साधन, भिन्नता और सहसंबंध की डिग्री) कैसे उत्पन्न करें?


53

मुझे खेद है कि अगर यह थोड़ा बहुत बुनियादी लगता है, लेकिन मुझे लगता है कि मैं यहाँ समझ की पुष्टि करने के लिए देख रहा हूँ। मुझे लगता है कि मुझे दो चरणों में ऐसा करना होगा, और मैंने सहसंबंध मैट्रीक को उकसाने की कोशिश की है, लेकिन यह वास्तव में शामिल होना शुरू कर रहा है। मैं एक अच्छे (आदर्श रूप से एक स्यूडोकोड समाधान की ओर संकेत के साथ) संक्षिप्त स्पष्टीकरण की तलाश कर रहा हूं, सहसंबद्ध यादृच्छिक संख्या उत्पन्न करने के लिए आदर्श रूप से त्वरित तरीका।

ज्ञात साधनों और प्रकारों के साथ दो छद्म आयामी चर और वजन को देखते हुए, और दिए गए सहसंबंध, मुझे लगता है कि मैं मूल रूप से यह समझने की कोशिश कर रहा हूं कि इस दूसरे चरण को क्या देखना चाहिए:

   height = gaussianPdf(height.mean, height.variance)
   weight = gaussianPdf(correlated_mean(height.mean, correlation_coefficient), 
                        correlated_variance(height.variance, 
                        correlation_coefficient))
  • मैं सहसंबद्ध माध्य और विचरण की गणना कैसे करूँ? लेकिन मैं पुष्टि करना चाहता हूं कि वास्तव में यहां प्रासंगिक समस्या है।
  • क्या मुझे मैट्रिक्स हेरफेर का सहारा लेने की आवश्यकता है? या क्या मुझे इस समस्या के लिए अपने मूल दृष्टिकोण में कुछ और गलत है?

1
मुझे यकीन नहीं है कि मैं आपको सही तरीके से समझता हूं, लेकिन आपको "सहसंबद्ध माध्य और विचरण" की गणना करने की आवश्यकता नहीं है। यदि आप मान रहे हैं कि चर सामान्य रूप से द्विभाजित हैं, तो यह व्यक्तिगत साधनों और भिन्नताओं और सहसंबंध को निर्दिष्ट करने के लिए पर्याप्त होना चाहिए। क्या कोई विशेष सॉफ्टवेयर है जिसे आप इसके लिए उपयोग करना चाहते हैं?
mark999


जवाबों:


44

"एक अच्छा, आदर्श रूप से त्वरित यादृच्छिक संख्या उत्पन्न करने का त्वरित तरीका" पर आपके प्रश्न का उत्तर देने के लिए: एक वांछित विचरण-सहसंयोजक मैट्रिक्स को देखते हुए, जो कि सकारात्मक सकारात्मक परिभाषा है, इसका चोल्स्की अपघटन है: C = L L T ; एल कम त्रिकोणीय मैट्रिक्स है।सीसीएलएलटीएल

यदि आप अब इस मैट्रिक्स का उपयोग एक असंबंधित यादृच्छिक चर वेक्टर X को प्रोजेक्ट करने के लिए करते हैं , तो परिणामी प्रक्षेपण Y = L X सहसंबद्ध यादृच्छिक चर का होगा।एलएक्सY=एलएक्स

आप एक संक्षिप्त विवरण पा सकते हैं कि यहां ऐसा क्यों होता है


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

7
क्या यह विधि केवल गाऊसी वितरण (प्रश्न में निर्दिष्ट) के लिए लागू होती है, या इसका उपयोग अन्य वितरणों का पालन करने वाले सहसंबद्ध चर उत्पन्न करने के लिए किया जा सकता है? यदि नहीं, तो क्या आप ऐसी विधि के बारे में जानते हैं जिसका उपयोग उस मामले में किया जा सकता है?
user000001

1
@ माइकल: हाँ। कहा गया है कि एक मान्य सहसंयोजक मैट्रिक्स है जो चोल्स्की अपघटन सबसे तेज़ तरीका है। आप SVD (इसलिए C = X X = X X T , जहाँ X = U S 0.5 V T से C = U S V T ) का उपयोग करके C (सममिति) वर्गमूल का X मैट्रिक्स प्राप्त कर सकते हैं , लेकिन यह अधिक महंगा होगा भी। CXCC=XX=XXTX=US0.5VTC=USVटी
us --r11852

1
@ मिचेल: बिल्कुल। उनका सहसंयोजक (लगभग) एक ही होगा, संख्याएं स्वयं नहीं।
us --r11852

1
@ सहायता: संपूर्ण वास्तविक लाइन पर समर्थित कोई भी निरंतर वितरण तुरंत विफल हो जाएगा। उदाहरण के लिए यदि हम एक समान उपयोग करते हैं, तो हम गारंटी नहीं दे सकते कि "सहसंबद्ध संख्या" [ 0 , 1 ] में होगी ; इसी तरह एक पोइसन के लिए हम गैर-असतत संख्याओं को समाप्त करेंगे। इसके अलावा, किसी भी वितरण जहां वितरण की राशि अभी भी एक ही वितरण नहीं है (उदाहरण के लिए। संक्षेप टी -distribution भी नहीं होती टी -distributions) भी असफल हो जायेगी। उल्लिखित सभी मामलों में, उत्पादित संख्या C के अनुसार सहसंबद्ध होगीU[0,1][0,1]टीटीसीलेकिन वे हमारे द्वारा शुरू किए गए वितरण के अनुरूप नहीं होंगे।
us --r11852

36

+1 से @ user11852, और @ jem77bfp, ये अच्छे उत्तर हैं। मुझे इसे एक अलग दृष्टिकोण से देखने दें, इसलिए नहीं कि मुझे लगता है कि यह आवश्यक रूप से अभ्यास में बेहतर है , बल्कि इसलिए कि मुझे लगता है कि यह शिक्षाप्रद है। यहां कुछ प्रासंगिक तथ्य दिए गए हैं जिन्हें हम पहले से जानते हैं:

  1. प्रतिगमन लाइन जब दोनों की ढलान एक्स और वाई हैंमानकीकृत, यानी, एन ( 0 , 1 ) , rXYN(0,1)
  2. , X में विचरण के कारण Y में विचरण का अनुपात है, r2YX



    (भी, नियम से नियमों के लिए ):

  3. एक यादृच्छिक चर का प्रसरण एक गुणक से गुणा होता है, जो मूल चर का लगातार चुकता समय है:
    Var[aX]=a2Var[X]
  4. संस्करण जोड़ते हैं , अर्थात, दो यादृच्छिक चर के योग का विचरण (वे स्वतंत्र होते हैं) दो संस्करणों का योग है:
    Var[X+ε]=Var[X]+Var[ε]

अब, हम इन चार तथ्यों को दो मानक सामान्य चर बनाने के लिए जोड़ सकते हैं जिनकी आबादी में एक दिया सहसंबंध होगा, (अधिक ठीक से, ρ ), हालांकि आपके द्वारा उत्पन्न नमूनों में नमूना सहसंबंध होंगे जो भिन्न होते हैं। विचार एक कूट-यादृच्छिक चर, बनाने के लिए है एक्स , कि मानक सामान्य है, एन ( 0 , 1 ) , और फिर एक गुणांक, लगता है एक , और एक त्रुटि विचरण, वी , ऐसी है कि वाई ~ एन ( 0 , एक 2 + v ) , जहां rρXN(0,1)aveYN(0,2+v) । (ध्यान दें कि | एक | होना चाहिए1 इस काम करने के लिए, और कहा कि, इसके अलावा, एक = आर ।) इस प्रकार, आप के साथ शुरू r है कि आप चाहते हैं; यह आपका गुणांक है, a । फिर आप त्रुटि संस्करण का पता लगाते हैं जिसकी आपको आवश्यकता होगी, यह 1 - r 2 है । (यदि आपके सॉफ़्टवेयर के लिए आपको मानक विचलन का उपयोग करने की आवश्यकता है, तो उस मान का वर्गमूल लें।) अंत में, प्रत्येक pseudorandom varate, x i के लिए , जो आपने उत्पन्न किया है, एक pseudorandom error varate, e i उत्पन्न करें।2+v=1|| 1=आरआर1-आर2एक्समैंमैंउपयुक्त त्रुटि के साथ, विचरण , और सहसंबंधित स्यूडोरैंडरमांगे वैरिएट, y i , को गुणा और जोड़कर गणना करें । vyमैं

यदि आप 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 , दोनों क्योंकि यह आसान है और क्योंकि आप किसी दिए गए जनसंख्या सहसंबंध मैट्रिक्स के साथ कई चर उत्पन्न कर सकते हैं। बहरहाल, मुझे लगता है कि इस प्रक्रिया से गुजरना सार्थक है कि कुछ बुनियादी सिद्धांत कैसे सरल तरीके से निभाते हैं।


यह अनिवार्य रूप से प्रतिगामी दृष्टिकोण विशेष रूप से अच्छा है जो किसी भी मौजूदा X "भविष्यवक्ताओं" की किसी भी संख्या के साथ संबद्ध एक यादृच्छिक वाई उत्पन्न करने के लिए देता है । क्या मैं ऐसी समझ में सही हूं?
ttnphns 12

यह बिल्कुल वैसा ही निर्भर करता है, जैसा आप चाहते हैं, वैरिएबल के बीच सहसंबंधों का पैटर्न। आप एक के बाद एक इसे पुन: प्रसारित कर सकते हैं, लेकिन यह थकाऊ होगा। दिए गए पैटर्न के साथ कई सहसंबद्ध चर बनाने के लिए, चोल्स्की अपघटन का उपयोग करना बेहतर है।
गूँग - मोनिका

गंग, क्या आप जानते हैं कि कई मौजूदा (सिम्युलेटेड नहीं) X के साथ सहसंबंधों के वेक्टर के अनुसार एक Y सहसंबद्ध (लगभग, अपनी विधि में) उत्पन्न करने के लिए चोल्स्की का उपयोग कैसे करें ?
tnnphns

@ttnphns, आप एकल वाई डब्ल्यू / दी गई जनसंख्या सहसंबंध डब्ल्यू / एक्स का एक सेट उत्पन्न करना चाहते हैं, पी चर का एक सेट नहीं है जो सभी ने जनसंख्या सहसंबंधों को निर्धारित किया है? एक सरल तरीका यह होगा कि आप अपने एक्स से सिंगल वाई-हैट उत्पन्न करने के लिए एक रिग्रेशन समीकरण लिखें, फिर अपनी वाई-हैट के सहसंबंध के रूप में वाई उत्पन्न करने के लिए उपरोक्त विधि का उपयोग करें। आप चाहें तो इसके बारे में एक नया सवाल पूछ सकते हैं।
गूँग - मोनिका

1
मेरी प्रारंभिक टिप्पणी में मेरा यही अर्थ है: यह विधि आपके उत्तर में आपके द्वारा बोली जाने वाली बातों का प्रत्यक्ष विस्तार होगी: अनिवार्य रूप से एक प्रतिगामी (हैट) विधि।
tnnphns

16

सामान्य तौर पर यह करने के लिए एक साधारण बात नहीं है, लेकिन मेरा मानना ​​है कि बहुभिन्नरूपी सामान्य चर पीढ़ी (कम से कम आर, पैकेज mvrnormमें देखें MASS) के लिए पैकेज हैं, जहां आप सिर्फ एक सहसंयोजक मैट्रिक्स और एक मतलब वेक्टर इनपुट करते हैं।

एक और "रचनात्मक" दृष्टिकोण भी है। मान लें कि हम एक यादृच्छिक वेक्टर मॉडल करना चाहते हैं और हमारे पास इसका वितरण फ़ंक्शन एफ ( एक्स 1 , एक्स 2 ) है । पहला कदम सीमांत वितरण समारोह प्राप्त करना है; यानी एकीकृत एफ सब कुछ खत्म हो एक्स 2 : एफ एक्स 1 ( एक्स 1 ) = - एफ ( एक्स 1 , एक्स 2 ) डी एक्स 2(एक्स1,एक्स2)एफ(एक्स1,एक्स2)एफएक्स2 तब हम F - 1 X 1 - F X 1 का विलोम कार्य करते हैं- और एक यादृच्छिक चर ξ 1 में प्लग करते हैंजो समान रूप से अंतराल पर वितरित किया जाता है [ 0 , 1 ] । इस चरण में हम पहली समन्वय उत्पन्न एक्स 1 = एफ - 1 एक्स 1 ( ξ )

एफएक्स1(एक्स1)=-एफ(एक्स1,एक्स2)एक्स2
एफएक्स1-1एफएक्स1ξ1[0,1]एक्स^1=एफएक्स1-1(ξ)

अब, के बाद से हम एक समन्वय मिल गया है, हम अपने प्रारंभिक बंटन फ़ंक्शन का इसे प्लग की जरूरत और फिर शर्त के साथ एक सशर्त वितरण समारोह मिल एक्स 1 = एक्स 1 : एफ ( एक्स 2 | एक्स 1 = एक्स 1 ) = एफ ( एक्स 1 , एक्स 2 )एफ(एक्स1,एक्स2)एक्स1=एक्स^1 जहांएक्स1सीमांत के एक प्रायिकता घनत्व समारोह हैएक्स1वितरण; यानीएफ ' एक्स 1 (एक्स1)=एक्स1(एक्स1)

एफ(एक्स2|एक्स1=एक्स^1)=एफ(एक्स^1,एक्स2)एक्स1(एक्स^1),
एक्स1एक्स1एफएक्स1'(एक्स1)=एक्स1(एक्स1)

तो फिर तुम एक समान रूप से वितरित चर उत्पन्न पर [ 0 , 1 ] (स्वतंत्र ξ 1 ) और के व्युत्क्रम करने के लिए इसे प्लग एफ ( एक्स 2 | एक्स 1 = एक्स 1 ) । इसलिए आप प्राप्त एक्स 2 = ( एफ ( एक्स 2 | एक्स 1 = एक्स 1 ) ) - 1 ( ξ ) ; वह यह है किξ2[0,1]ξ1एफ(एक्स2|एक्स1=एक्स^1)एक्स^2=(एफ(एक्स2|एक्स1=एक्स^1))-1(ξ)संतुष्टएफ( एक्स 2|एक्स1= एक्स 1)=ξ। इस पद्धति को अधिक आयाम वाले वैक्टरों के लिए सामान्यीकृत किया जा सकता है, लेकिन इसका नकारात्मक पहलू यह है कि आपको कई कार्यों की गणना, विश्लेषणात्मक या संख्यात्मक रूप से करना है। विचार इस लेख में भी पाया जा सकता है:http://www.econ-pol.unisi.it/dmq/pdf/DMQ_WP_34.pdfएक्स^2एफ(एक्स^2|एक्स1=एक्स^1)=ξ

यदि आप एक समान चर को एक व्युत्क्रम प्रायिकता वितरण फ़ंक्शन में प्लग करने के अर्थ को नहीं समझते हैं, तो एकतरफा मामले का एक स्केच बनाने की कोशिश करें और फिर याद रखें कि व्युत्क्रम फ़ंक्शन की ज्यामितीय व्याख्या क्या है।


स्मार्ट विचार! सरल सहज अपील है। लेकिन हाँ महंगा कम्प्यूटेशनल लगता है।
माइकल कारिको

एक्स,Y(एक्स,y)=एक्स(एक्स)Y|एक्स(y)

1

यदि आप दक्षता छोड़ने के लिए तैयार हैं, तो आप एक फेंक-दूर अलोगोरिथम का उपयोग कर सकते हैं। इसका लाभ यह है, कि यह किसी भी प्रकार के वितरण (केवल गॉसियन) के लिए अनुमति देता है।

{एक्समैं}मैं=1एन{yमैं}मैं=1एनसी

सीएल=सीआरआर({एक्समैं},{yमैं})

n1n2:1n1,2एन

एक्सn1एक्सn2

सीnw=सीआरआर({एक्समैं},{yमैं})

|सी-सीnw|<|सी-सीएल|

|सी-सी|<ε

एक्समैं

सौभाग्य!


एक्समैंसीआरआर(एक्समैं,yमैं)

एक्समैं{एक्समैं}yसीआरआर(एक्समैं,yमैं)सीआरआर({एक्समैं},{yमैं})=(1/एन)Σमैं=1एन(एक्समैं-एक्स¯)(yy-y¯)

{}सीआरआर({एक्समैं},{yमैं})
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.