Genera matrice definita positiva simmetrica con un modello di sparsità predefinito


9

Sto cercando di generare una matrice di correlazione (psd simmetrica) con una struttura di sparsità pre-specificata (specificata da un grafico su nodi ). I nodi collegati nel grafico hanno correlazione , resto tutti sono 0 e la diagonale è tutto 1.p ρ U ( 0 , 1 )p×ppρU(0,1)

Ho provato a generare questa matrice più volte ma solo raramente ottengo una matrice di correlazione valida.

C'è un modo in cui posso assicurare una matrice di correlazione whp? Nota che posso avere solo una correlazione positiva, quindi ecc. Non è un'opzione.ρU(1,1)

Qualsiasi aiuto è molto apprezzato!


Forse la funzione nearPD del pacchetto Matrix in R può aiutare.
niandra82,

Qual è la tua misura di scarsità che è stata risolta per te? I tuoi dati devono essere binari o non negativi continui?
ttnphns,

@ niandra82: nearPD non va bene in quanto distruggerà la scarsità della matrice.
Blade Runner

1
In generale non esistono distribuzioni di matrici come quella descritta in questa domanda. Si consideri, ad esempio, il caso con tre coefficienti . Se e , allora se e solo se la matrice è definita positiva. Ma allora non puoi avere sia che . ρ , σ , τ τ = 0 ρ > 0 , σ > 0 ρ 2 + σ 2 < 1 ρ U ( 0 , 1 ) σ U ( 0 , 1 )3×3ρ,σ,ττ=0ρ>0,σ>0ρ2+σ2<1ρU(0,1)σU(0,1)
whuber

3
Quindi perché non generare prima la matrice di correlazione. Quindi creare un indice simmetrico per quella matrice in cui si forzano gli elementi indicizzati a 0. La spartità sarebbe specificata dalla dimensione dell'indice e si può incorporare randommess attraverso una funzione come campione in r. Non importa quanti elementi diagonali si forzano a 0, il matix sarà comunque pd
Zachary Blumenfeld

Risposte:


2

Chiudi ma niente sigaro per @Rodrigo de Azevedo.

La soluzione consiste nell'utilizzare la programmazione semidefinita per trovare il valore massimo, e il valore minimo (soggetto a non negazione), , di tale che la matrice di correlazione con il modello di sparsità prescritto sia positiva semidefinito (psd). Tutti i valori di tali che , produrranno matrici psd (esercizio per il lettore) ρ m i n ρ ρ ρ m aρmaxρminρρρmaxρρmax

Pertanto, è necessario scegliere una distribuzione di che può assumere valori solo in oppure utilizzare l'accettazione / rifiuto e rifiutare qualsiasi valore generato di che non produce una matrice psd.[ ρ m a x , ρ m a x ] ρρ[ρmax,ρmax]ρ

Esempio per una matrice 4 per 4 utilizzando YALMIP in 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) 

Risultati: massimo rho = 0,57735, minimo rho = 0. È evidente che zero sarà il valore minimo di rho soggetto a rho che non è negativo e che la matrice prescritta è psd, indipendentemente dalla dimensione o dal modello di sparsità. Pertanto, non è necessario eseguire l'ottimizzazione semidefinita per trovare il valore non negativo minimo di .ρ


4
Questa è un'interpretazione interessante della domanda: presuppone che tutti i coefficienti off-diagonali diversi da zero siano uguali (semplificando così enormemente il problema). Non è chiaro se questa fosse l'interpretazione prevista o se tutti i coefficienti non diagonali non diagonali dovrebbero essere realizzazioni indipendenti da una distribuzione comune.
whuber

Questa è l'interpretazione che ho fatto. Ora che me lo dici, ho potuto vedere una diversa interpretazione possibile. Almeno la mia interpretazione ha la virtù di sfociare in un problema abbastanza ben definito. Suppongo che si possa formulare un problema, di cui non ho studiato la soluzione, per trovare il valore massimo di ρ tale che tutti gli elementi off-diagonali diversi da zero di un triangolo della matrice di correlazione possano essere compilati con valori non negativi non necessariamente uguali ≤ quel valore, e necessariamente rendere la matrice completamente popolata essere psd.
Mark L. Stone,

0

Una matrice di correlazione è simmetrica, semidefinita positiva, e ha 's sulla sua diagonale principale. Si può trovare una matrice di correlazione risolvendo il seguente programma semidefinito (SDP) in cui la funzione obiettivo è arbitraria, diciamo la funzione zeron × n1n×n

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

Se uno ha vincoli aggiuntivi, come vincoli di sparsità

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

e vincoli di non negatività, , quindi si risolve il seguente SDPXOn

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

A di esempio3×3

Supponiamo di voler avere e . Ecco uno script MATLAB + CVX ,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

Esecuzione dello script,

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

Vediamo quale soluzione CVX ha trovato,

>> X

X =

    1.0000    0.4143         0
    0.4143    1.0000    0.4143
         0    0.4143    1.0000

Questa matrice è semidefinita positiva? Definito positivo?

>> rank(X)

ans =

     3

>> eigs(X)

ans =

    1.5860
    1.0000
    0.4140

È definito positivo, come previsto. Possiamo trovare matrici di correlazione semidefinite positive scegliendo una funzione oggettiva diversa da zero.


Perché su questo sito "generare" si intende "disegnare da una distribuzione casuale", potresti spiegare come il tuo codice produce matrici di correlazione casuali e indicare quale distribuzione seguono?
whuber

@whuber L'OP chiede l'impossibile. L'hai commentato il 1 ° gennaio 2015. Se desideri generare matrici di correlazione casuali, genera una matrice quadrata casuale e utilizzala nella funzione obiettivo nel programma semidefinito sopra. In alternativa, generare realizzazioni di una variabile casuale uniforme sul cubo nelle voci non diagonali delle matrici (di correlazione) con 's sul diagonale principale e scarta quelli che non sono semidefiniti positivi. Se ci sono vincoli di non negatività, campiona uniformemente il cubo 1[0,1]
[1,1](n2)
1
[0,1](n2)
Rodrigo de Azevedo,

3
@whuber Ecco l' elliptope 3D [png], che mappa l'insieme di matrici di correlazione . Ciò che l'OP vuole è intersecare l'elliptope con l'ottante non negativo, quindi intersecarlo con i piani della forma . Se la matrice è , deve trovarsi all'interno dell'elliptope. Utilizzando SDP con funzioni obiettivo diverso da zero, è possibile campionare la superficie dell'elliptope. Poiché l'elliptope è convesso, anche le combinazioni convesse dei punti della superficie verranno mappate alle matrici di correlazione. x i j = 0 03×3xij=00
Rodrigo de Azevedo,

1
È un modo eccellente per descrivere la situazione.
whuber

3
Hai ragione su come si riducono i volumi relativi. Questo è esattamente il motivo per cui questo è un problema difficile.
whuber
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.