सामान्य रूप से गैर-सकारात्मक-निश्चित सहसंयोजक मैट्रिक्स के साथ यादृच्छिक संख्या वितरित करें


15

मैंने एक नमूने के नमूने सहसंयोजक मैट्रिक्स का अनुमान लगाया और एक सममित मैट्रिक्स प्राप्त किया। साथ सी , मैं बनाना चाहेंगे n -variate सामान्य वितरित आर.एन. लेकिन इसलिए मैं की Cholesky अपघटन की जरूरत है सी । यदि सी सकारात्मक निश्चित नहीं है तो मुझे क्या करना चाहिए ?CCnCC


1
इस प्रश्न के साथ क्या अंतर है stackoverflow.com/questions/17295627/… ?
डिकॉआ जूल

1
पॉजिटिव-सेमीफाइनल मैट्रिसेस में कई वर्गमूल हैं ( उदाहरण के लिए, आँकड़े के अंत में स्पष्टीकरण देखें ।stackexchange.com / a / 71303 / 919 )। जरूरी नहीं कि आपको चोल्स्की अपघटन द्वारा उत्पादित एक की आवश्यकता हो। इसमें समस्या का दिल निहित है: वर्ग की जड़ों की गणना करने के लिए एक विधि ढूंढें जो मैट्रिक्स विलक्षण होने पर भी काम करती है। @amoeba शीर्षक बताता है कि आपकी व्याख्या सही है।
whuber

जवाबों:


8

यह सवाल चिंतित करता है कि मल्टीवेरिएट नॉर्मल डिस्ट्रीब्यूशन से (संभवतः) एकवचन कोवरियन मैट्रिक्स साथ रैंडम वेरिएंट कैसे उत्पन्न किया जाए । यह उत्तर एक तरीका बताता है जो किसी भी सहसंयोजक मैट्रिक्स के लिए काम करेगा । यह एक कार्यान्वयन प्रदान करता है जो इसकी सटीकता का परीक्षण करता है।CR


सहसंयोजक मैट्रिक्स का बीजगणितीय विश्लेषण

चूँकि एक सहसंयोजक मैट्रिक्स है, इसलिए यह आवश्यक रूप से सममित और सकारात्मक-अर्ध-अनिश्चित है। पृष्ठभूमि की जानकारी को पूरा करने के लिए, μ को वांछित साधनों का सदिश होना चाहिए।Cμ

क्योंकि सममित है, इसका एकवचन मान अपघटन (SVD) और इसका eigendecomposition स्वचालित रूप से होगाC

C=VD2V

कुछ ओर्थोगोनल मैट्रिक्स और विकर्ण मैट्रिक्स डी 2 के लिए । सामान्य तौर पर D 2 के विकर्ण तत्व nonnegative होते हैं (इसका मतलब है कि उन सभी में वास्तविक वर्गमूल हैं: विकर्ण मैट्रिक्स D बनाने के लिए सकारात्मक को चुनें )। C के बारे में हमारे पास जो जानकारी है, वह कहती है कि उन विकर्ण तत्वों में से एक या अधिक शून्य हैं - लेकिन यह बाद के किसी भी संचालन को प्रभावित नहीं करेगा, और न ही यह एसवीडी को गणना करने से रोकेगा।VD2D2DC

बहुभिन्नरूपी यादृच्छिक मान उत्पन्न करना

मान लें कि पास एक मानक बहुभिन्नरूपी सामान्य वितरण है: प्रत्येक घटक में शून्य माध्य, इकाई विचरण और सभी सहसंयोजक शून्य हैं: इसका सहसंयोजक मैट्रिक्स I है । फिर यादृच्छिक चर Y = V D X में सहसंयोजक मैट्रिक्स हैXIY=VDX

Cov(Y)=E(YY)=E(VDXXDV)=VDE(XX)DV=VDIDV=VD2V=C.

नतीजतन यादृच्छिक चर का अर्थ μ और सहसंयोजक मैट्रिक्स सी के साथ एक बहुभिन्नरूपी सामान्य वितरण हैμ+YμC

संगणना और उदाहरण कोड

निम्न Rकोड दिए गए आयामों और रैंक का एक सहसंयोजक मैट्रिक्स उत्पन्न करता है, इसे SVD के साथ विश्लेषण करता है (या, टिप्पणी-आउट कोड में, एक eigendecomposition के साथ), उस विश्लेषण का उपयोग करता है की प्राप्ति की निश्चित संख्या उत्पन्न करने के लिए (मतलब वेक्टर 0 के साथ ) , और फिर उन आंकड़ों के सहसंयोजक मैट्रिक्स की तुलना संख्यात्मक रूप से और ग्राफिक रूप से इच्छित कोवरियन मैट्रिक्स से करते हैं। जैसा कि दिखाया गया है, यह 10 , 000 अहसास उत्पन्न करता है जहां Y का आयाम 100 है और C का रैंक 50 है । आउटपुट हैY010,000Y100C50

        rank           L2 
5.000000e+01 8.846689e-05 

यही है, डेटा की रैंक भी और डेटा से अनुमानित covariance मैट्रिक्स की दूरी 8 × 10 - 5 के भीतर है जो C- which के करीब है। अधिक विस्तृत जांच के रूप में, C के गुणांक को इसके अनुमान के विरुद्ध प्लॉट किया जाता है। वे सभी समानता की रेखा के करीब हैं:508×105CC

आकृति

कोड पूर्ववर्ती विश्लेषण को बिल्कुल समानता देता है और इसलिए आत्म-व्याख्यात्मक होना चाहिए (गैर- Rउपयोगकर्ताओं के लिए भी , जो अपने पसंदीदा अनुप्रयोग वातावरण में इसका अनुकरण कर सकते हैं)। एक बात यह बताती है कि फ्लोटिंग-पॉइंट एल्गोरिदम का उपयोग करते समय सावधानी की आवश्यकता होती है: की प्रविष्टियां आसानी से नकारात्मक (लेकिन छोटे) आवेग के कारण हो सकती हैं। डी को खोजने के लिए वर्गमूल की गणना करने से पहले ऐसी प्रविष्टियों को शून्य करने की आवश्यकता है।D2D

n <- 100         # Dimension
rank <- 50
n.values <- 1e4  # Number of random vectors to generate
set.seed(17)
#
# Create an indefinite covariance matrix.
#
r <- min(rank, n)+1
X <- matrix(rnorm(r*n), r)
C <- cov(X)
#
# Analyze C preparatory to generating random values.
# `zapsmall` removes zeros that, due to floating point imprecision, might
# have been rendered as tiny negative values.
#
s <- svd(C)
V <- s$v
D <- sqrt(zapsmall(diag(s$d)))
# s <- eigen(C)
# V <- s$vectors
# D <- sqrt(zapsmall(diag(s$values)))
#
# Generate random values.
#
X <- (V %*% D) %*% matrix(rnorm(n*n.values), n)
#
# Verify their covariance has the desired rank and is close to `C`.
#
s <- svd(Sigma <- cov(t(X)))
(c(rank=sum(zapsmall(s$d) > 0), L2=sqrt(mean(Sigma - C)^2)))

plot(as.vector(C), as.vector(Sigma), col="#00000040",
     xlab="Intended Covariances",
     ylab="Estimated Covariances")
abline(c(0,1), col="Gray")

2
+1 लेकिन जब आप अपने पहले वाक्य में "अनिश्चित" कहते हैं, तो वास्तव में आपका क्या मतलब है? मैंने विकिपीडिया में जाँच की और यह कहता है कि सकारात्मक अर्धचालक अनिश्चित नहीं है, यानी अनिश्चित काल का मतलब है कि सी में सकारात्मक और नकारात्मक दोनों तरह के स्वदेशी हैं। क्या आपका मतलब वहां है?
अमीबा का कहना है कि मोनिका

2
@ यमोबा हां, वह एक पर्ची थी। ध्यान देने के लिए धन्यवाद। "अनिश्चित" का अर्थ है कि मैट्रिक्स के हस्ताक्षर में सकारात्मक और नकारात्मक दोनों संकेत हैं, जबकि "अर्ध-अनिश्चित" का अर्थ है कि हस्ताक्षर में केवल एक ही चिन्ह है।
whuber

6

समाधान विधि A :

  1. 0.5(C+CT)
  2. D+(mmin(eigenvalue(D)))I

MATLAB में, कोड होगा

D = 0.5 * (C + C');
D =  D + (m - min(eig(CD)) * eye(size(D));

समाधान विधि बी : अपने अंतर के फ्रोबेनियस मानदंड के अनुसार निकटतम मैट्रिक्स डी से सी को खोजने के लिए एक उत्तल एसडीपी (सेमीफाइनाइट प्रोग्राम) का निर्माण और समाधान करें, ऐसा डी निश्चित सकारात्मक है, जिसमें न्यूनतम आइजेनवेल्यू एम निर्दिष्ट है।

MATLAB के तहत CVX का उपयोग, कोड होगा:

n = size(C,1);
cvx_begin
variable D(n,n)
minimize(norm(D-C,'fro'))
D -m *eye(n) == semidefinite(n)
cvx_end

समाधान विधियों की तुलना : प्रारंभिक मैट्रिक्स के सममिति के अलावा, समाधान विधि A कुछ सामान्य राशि द्वारा केवल विकर्ण तत्वों को समायोजित (बढ़ाती) करती है, और ऑफ-विकर्ण तत्वों को अपरिवर्तित छोड़ देती है। समाधान विधि B, निकटतम (मूल मैट्रिक्स के लिए) सकारात्मक निश्चित मैट्रिक्स को निर्दिष्ट करता है, जिसमें निर्दिष्ट न्यूनतम आईजेन्यूअल होता है, जो सकारात्मक निश्चित मैट्रिक्स डी और मूल मैट्रिक्स सी के अंतर के न्यूनतम फ्रोबेनियस मान के अर्थ में होता है, जो रकम पर आधारित होता है ऑफ-विकर्ण तत्वों को शामिल करने के लिए डी - सी के सभी तत्वों के वर्ग अंतर। तो ऑफ-विकर्ण तत्वों को समायोजित करके, यह उस मात्रा को कम कर सकता है जिसके द्वारा विकर्ण तत्वों को बढ़ाने की आवश्यकता होती है, और डायगोनल तत्वों को जरूरी नहीं कि सभी एक ही राशि से बढ़े।


2

मैं उस मॉडल के बारे में सोचकर शुरू करूँगा जो आप अनुमान लगा रहे हैं।

यदि एक सहसंयोजक मैट्रिक्स सकारात्मक अर्ध-निश्चित नहीं है, तो यह संकेत दे सकता है कि आपको अपने चर में कॉलिनियरिटी की समस्या है जो मॉडल के साथ एक समस्या का संकेत देगा और जरूरी नहीं कि संख्यात्मक तरीकों से हल किया जाए।

यदि मैट्रिक्स संख्यात्मक कारणों के लिए सकारात्मक अर्धचालक नहीं है, तो कुछ समाधान हैं जिनके बारे में यहां पढ़ा जा सकता है


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

1

एक तरीका यह होगा कि मैट्रिक्स को आइजेनवेल्यू के अपघटन से गणना की जाए। अब मैं मानता हूँ कि मैं इन प्रक्रियाओं के पीछे बहुत अधिक गणित नहीं जानता, लेकिन मेरे शोध से इस मदद फ़ाइल को देखना फलदायी लगता है:

http://stat.ethz.ch/R-manual/R-patched/library/Matrix/html/chol.html

और आर में कुछ अन्य संबंधित आदेश।

इसके अलावा, मैट्रिक्स पैकेज में 'पासपीडी' देखें।

क्षमा करें, मैं अधिक मदद नहीं कर सकता, लेकिन मुझे आशा है कि मेरी खोज आस-पास आपको सही दिशा में धकेलने में मदद कर सकती है।


हाय, लिंक के लिए thx। प्रतिजन मूल्य अपघटन के प्रति प्रतिक्रिया, यह अपघटन मदद नहीं करता है, क्योंकि वहां से आपको वर्गमूल मैट्रिक्स के लिए जटिल eigenvalues ​​मिलते हैं, लेकिन मुझे पुन: मूल्यवान मैट्रिक्स की आवश्यकता होती है।
क्लॉस

1

आप R में मैट्रिक्स पैकेज में नियर डीपीडी फ़ंक्शन से परिणाम प्राप्त कर सकते हैं। यह आपको एक वास्तविक मूल्यवान मैट्रिक्स वापस देगा।

library(Matrix)
A <- matrix(1, 3,3); A[1,3] <- A[3,1] <- 0
n.A <- nearPD(A, corr=T, do2eigen=FALSE)
n.A$mat

# 3 x 3 Matrix of class "dpoMatrix"
#           [,1]      [,2]      [,3]
# [1,] 1.0000000 0.7606899 0.1572981
# [2,] 0.7606899 1.0000000 0.7606899
# [3,] 0.1572981 0.7606899 1.0000000

R के उपयोगकर्ताओं के लिए .. यह मेरे जवाब में सॉल्यूशन मेथड B का खराब "खराब आदमी" संस्करण (कम नियंत्रण वाला) नहीं हो सकता है।
मार्क एल। स्टोन

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