मैंने पहले प्रदान किया है कि अब मेरा मानना है कि एक उप-इष्टतम जवाब है; इसलिए मैंने बेहतर सुझाव के साथ शुरू करने के लिए अपने जवाब को संपादित किया।
बेल विधि का उपयोग करना
इस थ्रेड में: कैसे बेतरतीब ढंग से रैंडम पॉजिटिव-सीमेडिफेरियल मैट्रैक्शन मैट्रिसेस उत्पन्न करें? - मैंने यादृच्छिक सहसंबंध मैट्रिक्स बनाने के दो कुशल एल्गोरिदम के लिए कोड का वर्णन किया और प्रदान किया। दोनों लेवांडोव्स्की, कुरोविक और जो (2009) के एक पेपर से आते हैं ।
कृपया बहुत सारे आंकड़े और मैटलैब कोड के लिए मेरा जवाब देखें । यहां मैं केवल यह कहना चाहूंगा कि बेल विधि आंशिक सहसंबंधों के किसी भी वितरण के साथ यादृच्छिक सहसंबंध मैट्रिक्स उत्पन्न करने की अनुमति देती है (शब्द "आंशिक" शब्द को नोट करें) और बड़े ऑफ-डायगोनल मानों के साथ सहसंबंध मैट्रिक्स उत्पन्न करने के लिए उपयोग किया जा सकता है। यहाँ उस धागे से प्रासंगिक आंकड़ा है:
केवल एक चीज जो सबप्लॉट्स के बीच बदलती है, वह एक पैरामीटर है जो नियंत्रित करती है कि आंशिक सहसंबंधों का वितरण लगभग केंद्रित है । जैसा कि ओपी लगभग सामान्य वितरण बंद-विकर्ण के लिए पूछ रहा था, यहाँ ऑफ-विकर्ण तत्वों के हिस्टोग्राम के साथ साजिश है (ऊपर के समान मैट्रिसेस के लिए):±1
मुझे लगता है कि यह वितरण यथोचित "सामान्य" है, और कोई यह देख सकता है कि मानक विचलन धीरे-धीरे कैसे बढ़ता है। मुझे यह जोड़ना चाहिए कि एल्गोरिथ्म बहुत तेज है। विवरण के लिए लिंक थ्रेड देखें।
मेरा मूल उत्तर
आपकी पद्धति का एक स्ट्रेट-फ़ॉरवर्ड-मॉडिफिकेशन ट्रिक कर सकता है (यह निर्भर करता है कि आप वितरण को कितना सामान्य चाहते हैं)। यह उत्तर ऊपर @ कार्डिनल की टिप्पणियों से और @ सार्का के मेरे स्वयं के प्रश्न से प्रेरित था कि कैसे कुछ मजबूत सहसंबंधों के साथ एक बड़ी पूर्ण-रैंक यादृच्छिक सहसंबंध मैट्रिक्स उत्पन्न करें?
चाल अपने सहसंबद्ध (सुविधाएँ नहीं, बल्कि नमूने) बनाने के लिए है। यहाँ एक उदाहरण है: मैं यादृच्छिक मैट्रिक्स उत्पन्न के आकार (मानक सामान्य से सभी तत्वों), और फिर से एक यादृच्छिक संख्या जोड़ने प्रत्येक पंक्ति के लिए । के लिए सहसंबंध मैट्रिक्स (सुविधाओं के मानकीकरण के बाद) तत्व लगभग सामान्य रूप से मानक विचलन के साथ वितरित-विकर्ण बंद करना होगा । के लिएएक्स 1000 × 100 [ - एक / 2 , एक / 2 ] एक = 0 , 1 , 2 , 5 एक = 0 एक्स ⊤ एक्स 1 / √XX1000×100[−a/2,a/2]a=0,1,2,5a=0X⊤X एक>0एकएक=0,1,2,51/1000−−−−√a>0, मैं चर (इस बरकरार रखता डाला सहसंबंध) केंद्रित बिना सहसंबंध मैट्रिक्स की गणना, और ऑफ विकर्ण तत्वों के मानक विचलन के साथ हो जाना के रूप में यह आंकड़ा पर दिखाया (पंक्तियों के अनुरूप ):aa=0,1,2,5
ये सभी मैच निश्चित रूप से सकारात्मक हैं। यहाँ matlab कोड है:
offsets = [0 1 2 5];
n = 1000;
p = 100;
rng(42) %// random seed
figure
for offset = 1:length(offsets)
X = randn(n,p);
for i=1:p
X(:,i) = X(:,i) + (rand-0.5) * offsets(offset);
end
C = 1/(n-1)*transpose(X)*X; %// covariance matrix (non-centred!)
%// convert to correlation
d = diag(C);
C = diag(1./sqrt(d))*C*diag(1./sqrt(d));
%// displaying C
subplot(length(offsets),3,(offset-1)*3+1)
imagesc(C, [-1 1])
%// histogram of the off-diagonal elements
subplot(length(offsets),3,(offset-1)*3+2)
offd = C(logical(ones(size(C))-eye(size(C))));
hist(offd)
xlim([-1 1])
%// QQ-plot to check the normality
subplot(length(offsets),3,(offset-1)*3+3)
qqplot(offd)
%// eigenvalues
eigv = eig(C);
display([num2str(min(eigv),2) ' ... ' num2str(max(eigv),2)])
end
इस कोड का आउटपुट (न्यूनतम और अधिकतम eigenvalues) है:
0.51 ... 1.7
0.44 ... 8.6
0.32 ... 22
0.1 ... 48