Generieren Sie eine symmetrische positive definitive Matrix mit einem vorgegebenen Sparsity-Muster

9

Ich versuche, eine Korrelationsmatrix (symmetrisches psd) mit einer vorgegebenen Sparsity-Struktur (angegeben durch einen Graphen auf Knoten) zu erzeugen . Die Knoten, die im Diagramm verbunden sind, haben die Korrelation , alle sind 0 und die Diagonale ist alle 1.p ρ U ( 0 , 1 )p×ppρU(0,1)

Ich habe mehrmals versucht, diese Matrix zu generieren, aber nur selten eine gültige Korrelationsmatrix erhalten.

Gibt es eine Möglichkeit, eine Korrelationsmatrix whp sicherzustellen? Beachten Sie, dass ich nur eine positive Korrelation haben kann, sodass usw. keine Option ist.ρU(1,1)

Jede Hilfe wird sehr geschätzt!

Klingenläufer
quelle
Vielleicht kann die Funktion NearPD des Pakets Matrix in R helfen.
Niandra82
Was ist Ihr Maß an Sparsamkeit, das für Sie festgelegt ist? Sollten Ihre Daten binär oder nicht negativ kontinuierlich sein?
ttnphns
@ niandra82: NearPD ist nicht gut, da es die Sparsamkeit der Matrix zerstört.
Blade Runner
1
Im Allgemeinen gibt es keine solchen Matrixverteilungen, wie sie in dieser Frage beschrieben werden. Betrachten Sie zum Beispiel den Fall mit drei Koeffizienten . Wenn und , dann ist genau dann, wenn die Matrix positiv bestimmt ist. Aber dann können Sie nicht sowohl als auch . 3×3ρ,σ,ττ=0ρ>0,σ>0ρ2+σ2<1ρU(0,1)σU(0,1)
whuber
3
Warum dann nicht zuerst die Korrelationsmatrix generieren? Erstellen Sie dann einen symetrischen Index für diese Matrix, in dem Sie die indizierten Elemente auf 0 setzen. Die Genauigkeit wird durch die Größe des Index angegeben, und Sie können randommess über eine Funktion wie sample in r einbinden. Egal wie viele diagonale Elemente Sie auf 0 setzen, die Matix wird immer noch pd sein
Zachary Blumenfeld

Antworten:

2

Schließen, aber keine Zigarre für @Rodrigo de Azevedo.

Die Lösung besteht darin, die semidefinite Programmierung zu verwenden, um den Maximalwert und den Minimalwert (vorbehaltlich der Nichtnegativität) von so zu ermitteln, dass die Korrelationsmatrix mit dem vorgeschriebenen Sparsity-Muster positiv ist semidefinit (psd). Alle Werte von so dass , psd-Matrizen erzeugen (Übung für den Leser) ρmaxρminρρρmaxρρmax

Daher müssen Sie entweder eine Verteilung von auswählen, die nur Werte in annehmen kann , oder Sie müssen Akzeptanz / Ablehnung verwenden und generierte Werte von ablehnen , die nicht erzeugen eine psd-Matrix.ρ[ρmax,ρmax]ρ

Beispiel für eine 4 x 4-Matrix mit YALMIP unter MATLAB

sdpvar rho % declare rho to be a scalar variable
% find maximum value of rho (by minimizing -rho) subject to prescribed matrix being psd.
optimize([1 0 rho 0;0 1 rho 0;rho rho 1 rho;0 0 rho 1] >= 0,-rho) 
% find minimum value of rho subject to prescribed matrix being psd and rho being >= 0.
optimize([[1 0 rho 0;0 1 rho 0;rho rho 1 rho;0 0 rho 1] >= 0,rho >= 0],rho) 

Ergebnisse: Maximum Rho = 0,57735, Minimum Rho = 0. Es ist leicht ersichtlich, dass Null der Minimalwert von Rho ist, sofern Rho nicht negativ ist und die vorgeschriebene Matrix psd ist, unabhängig von der Dimension oder dem Sparsity-Muster. Daher ist es nicht erforderlich, die semidefinite Optimierung auszuführen, um den minimalen nichtnegativen Wert von .ρ

Mark L. Stone
quelle
4
Dies ist eine interessante Interpretation der Frage: Es wird davon ausgegangen, dass alle nicht diagonalen Koeffizienten ungleich Null gleich sind (wodurch das Problem enorm vereinfacht wird). Es ist nicht klar, ob dies die beabsichtigte Interpretation war oder ob alle nicht diagonalen Koeffizienten ungleich Null unabhängige Realisierungen von einer gemeinsamen Verteilung sein sollen.
whuber
Das ist die Interpretation, die ich gemacht habe. Jetzt, wo Sie es erwähnen, konnte ich sehen, dass eine andere Interpretation möglich ist. Zumindest hat meine Interpretation den Vorteil, dass sie zu einem ziemlich genau definierten Problem führt. Ich nehme an, es kann ein Problem formuliert werden, dessen Lösung ich nicht untersucht habe, um den Maximalwert von ρ so zu finden, dass alle nicht null nicht diagonalen Elemente eines Dreiecks der Korrelationsmatrix mit nicht unbedingt gleichen nicht negativen Werten ≤ ausgefüllt werden können diesen Wert, und machen Sie notwendigerweise die vollständig bestückte Matrix psd.
Mark L. Stone
0

Eine Korrelationsmatrix ist symmetrisch, positiv semidefinit und hat auf ihrer Hauptdiagonale. Man kann eine Korrelationsmatrix finden, indem man das folgende semidefinite Programm (SDP) löst, bei dem die Zielfunktion beliebig ist, beispielsweise die Nullfunktion1n×n

minimizeOn,Xsubject tox11=x22==xnn=1XOn

Wenn man zusätzliche Einschränkungen hat, wie z. B. Sparsity-Einschränkungen

xij=0 for all (i,j)Z[n]×[n]

und Nicht-Negativitätsbeschränkungen, , dann löst man das folgende SDPXOn

minimizeOn,Xsubject tox11=x22==xnn=1xij=0 for all (i,j)Z[n]×[n]XOnXOn

Ein Beispiel3×3

Angenommen, wir möchten und . Hier ist ein MATLAB + CVX- Skript:x 12 , x 230x13=0x12,x230

cvx_begin sdp

    variable X(3,3) symmetric

    minimize( trace(zeros(3,3)*X) )
    subject to

        % put ones on the main diagonal
        X(1,1)==1
        X(2,2)==1
        X(3,3)==1

        % put a zero in the northeast and southwest corners
        X(1,3)==0

        % impose nonnegativity
        X(1,2)>=0
        X(2,3)>=0

        % impose positive semidefiniteness
        X >= 0

cvx_end

Ausführen des Skripts,

Calling sedumi: 8 variables, 6 equality constraints
------------------------------------------------------------
SeDuMi 1.21 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.
Alg = 2: xz-corrector, Adaptive Step-Differentiation, theta = 0.250, beta = 0.500
eqs m = 6, order n = 6, dim = 12, blocks = 2
nnz(A) = 8 + 0, nnz(ADA) = 36, nnz(L) = 21
 it :     b*y       gap    delta  rate   t/tP*  t/tD*   feas cg cg  prec
  0 :            3.00E+000 0.000
  1 : -1.18E-001 6.45E-001 0.000 0.2150 0.9000 0.9000   1.86  1  1  1.2E+000
  2 : -6.89E-004 2.25E-002 0.000 0.0349 0.9900 0.9900   1.52  1  1  3.5E-001
  3 : -6.48E-009 9.72E-007 0.097 0.0000 1.0000 1.0000   1.01  1  1  3.8E-006
  4 : -3.05E-010 2.15E-009 0.000 0.0022 0.9990 0.9990   1.00  1  1  1.5E-007
  5 : -2.93E-016 5.06E-015 0.000 0.0000 1.0000 1.0000   1.00  1  1  3.2E-013

iter seconds digits       c*x               b*y
  5      0.3   5.8  0.0000000000e+000 -2.9302886987e-016
|Ax-b| =  1.7e-015, [Ay-c]_+ =  6.1E-016, |x|= 2.0e+000, |y|= 1.5e-015

Detailed timing (sec)
   Pre          IPM          Post
1.563E-001    2.500E-001    1.094E-001    
Max-norms: ||b||=1, ||c|| = 0,
Cholesky |add|=0, |skip| = 0, ||L.L|| = 1.
------------------------------------------------------------
Status: Solved
Optimal value (cvx_optval): +0

Mal sehen, welche Lösung CVX gefunden hat,

>> X

X =

    1.0000    0.4143         0
    0.4143    1.0000    0.4143
         0    0.4143    1.0000

Ist diese Matrix positiv semidefinit? Positiv definitiv?

>> rank(X)

ans =

     3

>> eigs(X)

ans =

    1.5860
    1.0000
    0.4140

Es ist definitiv positiv, wie erwartet. Wir können positive semidefinite Korrelationsmatrizen finden, indem wir eine (lineare) Zielfunktion ungleich Null wählen.

Rodrigo de Azevedo
quelle
Da auf dieser Site "generieren" als "aus einer zufälligen Verteilung ziehen" verstanden werden kann, können Sie erklären, wie Ihr Code zufällige Korrelationsmatrizen erzeugt, und angeben, welcher Verteilung sie folgen?
whuber
@whuber Das OP bittet um das Unmögliche. Sie haben dies am 1. Januar 2015 kommentiert. Wenn Sie zufällige Korrelationsmatrizen generieren möchten, generieren Sie eine zufällige quadratische Matrix und verwenden Sie sie in der Zielfunktion im obigen semidefiniten Programm. Oder generieren Sie Realisierungen einer Zufallsvariablen, die über den Würfel einheitlich ist setzen Sie sie in die nicht diagonalen Einträge von (Korrelations-) Matrizen mit auf Hauptdiagonale und verwerfen Sie diejenigen, die nicht positiv semidefinit sind. Wenn es Nicht-Negativitätsbeschränkungen gibt, probieren Sie den Würfel
[1,1](n2)
[ 0 , 1 ] ( n1
[0,1](n2)
Rodrigo de Azevedo
3
@whuber Hier ist das 3D-Elliptop [png], das der Menge von Korrelationsmatrizen zugeordnet ist. Das OP möchte das Elliptop mit dem nichtnegativen Oktanten schneiden und es dann mit Ebenen der Form schneiden . Wenn die Matrix , muss sie sich im Inneren des Elliptops befinden. Mit SDP mit Objektivfunktionen ungleich Null kann die Oberfläche des Elliptops abgetastet werden. Da das Elliptop konvex ist, werden konvexe Kombinationen von Oberflächenpunkten auch Korrelationsmatrizen zugeordnet. x i j = 0 03×3xij=00
Rodrigo de Azevedo
1
Das ist eine hervorragende Möglichkeit, die Situation zu beschreiben.
whuber
3
Sie haben Recht damit, wie die relativen Volumina schrumpfen. Genau deshalb ist dies ein schwieriges Problem.
whuber