2016-04-01 6 views
0

Ich möchte eine zufällige Korrelation Matrix in R von 1000 * 1000, wo die durchschnittliche Korrelation (ohne Diagonale) ist 0,3.Generieren zufällige Korrelationsmatrix mit gegebener durchschnittlicher Korrelation

Ich sah genPositiveDefMat von Bibliothek ClusterGeneration, aber ich konnte nicht herausfinden, wie man eine gegebene Korrelation angeben.

+0

Wenn Sie wissen, dass die paarweisen Korrelationen einen Mittelwert von 0,3 haben, warum generieren Sie nicht einfach eine Zahl zwischen 0 und 1 mit einem Mittelwert von 0,3 und füllen Sie die Matrix auf diese Weise? – adaien

+0

Korrelation liegt zwischen -1 und 1. Wenn Sie jedoch die Korrelationsmatrix direkt ausfüllen, funktioniert die Zufallsfunktion möglicherweise nicht. Sie müssen nach positiver Bestimmtheit suchen. – karakfa

+0

Ja, das ist ein guter Punkt – adaien

Antwort

0

Lochungsvorrichtung Beispiel einer solchen Matrix wäre

C = (1-m)*I + m*U*U' 

wo I die Einheitsmatrix ist, U ein Vektor mit nur Einsen und m = 0,3. C ist positiv definit und das durchschnittliche (tatsächlich jedes) Element außerhalb der Diagonale ist m.

So könnten wir versuchen, eine Matrix der Form zu erzeugen

C = D + alpha*U*U' 

wobei D diagonaler und positiv definit ist, Alpha positiv Skalierer und U a 'random' Vektor. Eine solche Matrix wird positiv definit sein. Dazu den richtigen Durchschnitt der Diagonal-Elemente ein wenig Algebra

alpha = dim*(dim-1)*m/(S*S-T) 

wo

S = Sum{ i | U[i] } 
T = Sum{ i | U[i]*U[i]} 

Wie zeigt haben, solange alle Elemente der U-positiv sind, haben wir

S*S>T 

und so wird alpha positiv sein.

für die Diagonalelemente von C zu 1,0, benötigen wir

D[i] = 1 - alpha*U[i]*U[i] (i=1..dim) 

und alle diese müssen nicht negativ sein.

Leider konnte ich theoretisch nicht herausfinden, wie die Elemente von U ausgewählt werden sollten, um dies zu garantieren. Wenn jedoch experimentell die Elemente von U gleichförmige Zufallszahlen zwischen 1,0 und 5,0 sind, habe ich keinen Fall gesehen, in dem irgendwelche der D [i] negativ sind.

Die obere Grenze für die Elemente von U, 5.0 oben, steuert, wie unterschiedlich die verschiedenen Korrelationen sind. Bei 5,0 liegen sie zwischen 0,03 und 0,8, bei einer Obergrenze von 2,0 variieren sie zwischen 0,13 und 0,53. Wenn Sie die obere Grenze zu hoch wählen, erhöht sich die Wahrscheinlichkeit, dass die Methode fehlschlägt (D nicht positiv).