कैसे एक मनमाना सहसंयोजक मैट्रिक्स बनाने के लिए


21

उदाहरण के लिए, फ़ंक्शन R, MASS::mvrnorm()आंकड़ों में विभिन्न चीजों को प्रदर्शित करने के लिए डेटा उत्पन्न करने के लिए उपयोगी है। यह एक अनिवार्य Sigmaतर्क लेता है जो एक सममित मैट्रिक्स है जो चर के सहसंयोजक मैट्रिक्स को निर्दिष्ट करता है। मैं मनमानी प्रविष्टियों के साथ एक सममित n×n मैट्रिक्स कैसे बनाऊंगा?


3
मुझे लगता है कि इस सवाल को "मैं एक मनमाना सहसंयोजक मैट्रिक्स कैसे बना सकता हूं" पर ध्यान केंद्रित करने और कोडिंग पहलू पर कम करने से लाभ होगा। यहाँ निश्चित रूप से विषय पर अंतर्निहित सांख्यिकीय मुद्दा है, जैसा कि उत्तर द्वारा प्रदर्शित किया गया है।
सिल्वरफिश

जवाबों:


22

मनमानी मूल्यों के साथ एक मैट्रिक्स बनाएँn×nA

और उसके बाद का उपयोग अपने सहप्रसरण मैट्रिक्स के रूप में। Σ=ATA

उदाहरण के लिए

n <- 4  
A <- matrix(runif(n^2)*2-1, ncol=n) 
Sigma <- t(A) %*% A

इसी तरह, Sigma <- A + t(A)
rsl

6
@MoazzemHossen: आपका सुझाव एक सममित मैट्रिक्स का उत्पादन करेगा, लेकिन यह हमेशा सकारात्मक अर्धचालक नहीं हो सकता है (उदाहरण के लिए आपका सुझाव नकारात्मक आईजेन्यूएल्स के साथ एक मैट्रिक्स का उत्पादन कर सकता है) और इसलिए यह कोविरियन मैट्रिक्स के रूप में उपयुक्त नहीं हो सकता है
हेनरी

हां, मैंने देखा कि मेरे द्वारा सुझाई गई अनुपयोगी मैट्रिक्स के कारण आर घटना में त्रुटि हुई।
rsl

4
ध्यान दें कि यदि आप बेहतर व्याख्या के लिए सहसंबंध मैट्रिक्स पसंद करते हैं, तो वहाँ है ? Cov2cor फ़ंक्शन, जिसे बाद में लागू किया जा सकता है।
गूँग - मोनिका

1
@ B11b: सकारात्मक अर्ध-निश्चित होने के लिए आपको अपने सहसंयोजक मैट्रिक्स की आवश्यकता है। कोविरियस वैल्यू पर कुछ सीमाएं लगाई जाएंगी, जब n>2
हेनरी

24

मैं उन वस्तुओं पर नियंत्रण रखना पसंद करता हूं, जब वे मनमाना हो सकते हैं।

पर विचार करें, तो, कि सभी संभव सहप्रसरण मैट्रिक्स Σ रूप में व्यक्त किया जा सकता हैn×nΣ

Σ=P Diagonal(σ1,σ2,,σn) P

जहां एक orthogonal मैट्रिक्स और है σ 1σ 2σ n0Pσ1σ2σn0

ज्यामितीय इस की एक सीमा के साथ एक सहप्रसरण संरचना का वर्णन प्रमुख घटक आकार के । ये घटक P की पंक्तियों की दिशा में इंगित करते हैं । N = 3 के साथ उदाहरण के लिए प्रमुख घटक विश्लेषण, eigenvectors और eigenvalues ​​की समझ बनाने के आंकड़े देखें । स्थापना σ मैं सहप्रसरण और उनके सापेक्ष आकार के परिमाण सेट हो जाएगा, जिससे किसी भी वांछित ellipsoidal आकार का निर्धारण। P की पंक्तियाँ आपके पसंद के अनुसार आकृति के अक्षों को उन्मुख करती हैं।σiPn=3σiP

एक बीजीय और कंप्यूटिंग इस दृष्टिकोण का लाभ यह है कि जब , Σσn>0Σ (जो सहप्रसरण मैट्रिक्स पर एक आम ऑपरेशन है) आसानी से उलटा है:

Σ1=P Diagonal(1/σ1,1/σ2,,1/σn) P.

दिशाओं के बारे में परवाह है, लेकिन केवल के आकार की सीमाओं के बारे में नहीं है ? यह ठीक है: आप आसानी से एक यादृच्छिक ऑर्थोगोनल मैट्रिक्स उत्पन्न कर सकते हैं। बस एक वर्ग मैट्रिक्स में n 2 iid मानक सामान्य मान लपेटें और फिर इसे orthogonalize करें। यह लगभग निश्चित रूप से काम करेगा (बशर्ते कि एन बहुत बड़ा नहीं है)। क्यूआर अपघटन इस कोड की तरह ही करेगाσin2n

n <- 5
p <- qr.Q(qr(matrix(rnorm(n^2), n)))

यह काम करता है क्योंकि -ariate बहुराष्ट्रीय वितरण इसलिए उत्पन्न "अण्डाकार" है: यह सभी घुमावों और प्रतिबिंबों (मूल के माध्यम से) के तहत अपरिवर्तनीय है। इस प्रकार, सभी ऑर्थोगोनल मैट्रीस समान रूप से उत्पन्न होते हैं, जैसा कि 3-डी यूनिट क्षेत्र की सतह पर समान रूप से वितरित अंक कैसे उत्पन्न किया जाता है? n

एक त्वरित तरीका प्राप्त करने के लिए से पी और σ मैं , एक बार आपके द्वारा निर्दिष्ट या उन्हें बनाया है, का उपयोग करता है और कारनामे के साथ अंकगणितीय आपरेशनों में सरणियों के फिर से उपयोग, इस उदाहरण में σ = ( σ 1 , ... , σ 5 ) = ( 5 , 4 , 3 , 2 , 1 ) :ΣPσicrossprodRσ=(σ1,,σ5)=(5,4,3,2,1)

Sigma <- crossprod(p, p*(5:1))

एक जाँच के रूप में, एकवचन मान अपघटन और P दोनों को वापस करना चाहिए । आप कमांड के साथ इसका निरीक्षण कर सकते हैंσP

svd(Sigma)

का प्रतिलोम Sigmaनिश्चित रूप से केवल द्वारा गुणा बदलकर प्राप्त किया जाता है एक प्रभाग में:σ

Tau <- crossprod(p, p/(5:1))

आप इसे देखकर सत्यापित कर सकते हैं zapsmall(Sigma %*% Tau), जो पहचान मैट्रिक्स होना चाहिए । एक सामान्यीकृत उलटा (प्रतिगमन की गणना के लिए आवश्यक) की जगह किसी भी प्राप्त किया जाता है σ मैं0 से 1 / σ मैं , बिल्कुल के रूप में ऊपर है, लेकिन बीच में किसी भी शून्य रखने σ मैं के रूप में वे थे।n×nσi01/σiσi


पी

1
यह उल्लेखनीय है कि विलक्षण मानों को svd(Sigma)फिर से व्यवस्थित किया जाएगा - जिसने मुझे एक मिनट के लिए भ्रमित कर दिया।
फ्रैंकड

1

आप व्यापक रूप से उपयोग किए जाने वाले पैकेज "आंकड़े" से फ़ंक्शन "rWishart" का उपयोग करके Wishart वितरण से यादृच्छिक सकारात्मक निश्चित मैट्रिक्स का अनुकरण कर सकते हैं।

n <- 4
rWishart(1,n,diag(n))

1

इसके लिए विशेष रूप से एक पैकेज है, clusterGeneration(हैरी जो द्वारा लिखित अन्य, उस क्षेत्र में एक बड़ा नाम)।

दो मुख्य कार्य हैं:

  • genPositiveDefMat एक सहसंयोजक मैट्रिक्स उत्पन्न करते हैं, 4 अलग-अलग विधियां
  • rcorrmatrix : एक सहसंबंध मैट्रिक्स उत्पन्न करते हैं

त्वरित उदाहरण:

library(clusterGeneration)
#> Loading required package: MASS
genPositiveDefMat("unifcorrmat",dim=3)
#> $egvalues
#> [1] 15.408962  5.673916  1.228842
#> 
#> $Sigma
#>          [,1]     [,2]     [,3]
#> [1,] 6.714871 1.643449 6.530493
#> [2,] 1.643449 6.568033 2.312455
#> [3,] 6.530493 2.312455 9.028815
genPositiveDefMat("eigen",dim=3)
#> $egvalues
#> [1] 8.409136 4.076442 2.256715
#> 
#> $Sigma
#>            [,1]       [,2]      [,3]
#> [1,]  2.3217300 -0.1467812 0.5220522
#> [2,] -0.1467812  4.1126757 0.5049819
#> [3,]  0.5220522  0.5049819 8.3078880

2019-10-27 को रेप्रेक्स पैकेज (v0.3.0) द्वारा बनाया गया

अंत में, ध्यान दें कि एक वैकल्पिक दृष्टिकोण खरोंच से पहली कोशिश करना है, फिर Matrix::nearPD()अपने मैट्रिक्स को सकारात्मक-निश्चित करने के लिए उपयोग करें।

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