Offenbar fragen Sie sich, wie Daten mit einer bestimmten Korrelationsmatrix generiert werden sollen.
Eine nützliche Tatsache ist, dass, wenn Sie einen Zufallsvektor mit Kovarianzmatrix , der Zufallsvektor Mittelwert und Kovarianzmatrix . Wenn Sie also mit Daten beginnen, deren Mittelwert Null ist, ändert das Multiplizieren mit nichts daran, sodass Ihre erste Anforderung leicht erfüllt wird. ≤ A x A E ( x ) Ω = A ≤ A T AxΣA xA E( x )Ω = A Σ ATEIN
Angenommen, Sie sind mit (Mittelwert Null) unkorrelierte Daten beginnen (dh die Kovarianzmatrix ist diagonal) - da wir über die Korrelationsmatrix sprechen, lassen Sie sich einfach nehmen . Sie können dies in Daten mit einer bestimmten Kovarianzmatrix umwandeln, indem Sie als cholesky Quadratwurzel von auswählen. Dann hätte die gewünschte Kovarianzmatrix .A Ω A x ΩΣ = ichEINΩA xΩ
In Ihrem Beispiel möchten Sie anscheinend Folgendes:
Ω = ⎛⎝⎜1.80.81.80.81⎞⎠⎟
Leider ist diese Matrix nicht eindeutig positiv, daher kann es sich nicht um eine Kovarianzmatrix handeln. Sie können dies überprüfen, indem Sie feststellen, dass die Determinante negativ ist. Vielleicht stattdessen
Ω = ⎛⎝⎜1.8.3.81.8.3.81⎞⎠⎟ o r Ω= ⎛ ⎝⎜12 / 302 / 312 / 302 / 31⎞⎠⎟
würde genügen. Ich bin mir nicht sicher, wie ich die Cholesky-Quadratwurzel in Matlab berechnen soll (das scheint das zu sein, was Sie verwenden), aber in können R
Sie die chol()
Funktion verwenden.
In diesem Beispiel wären für die beiden oben aufgelisteten s die richtigen Matrix-VielfachenΩ
A = ⎛⎝⎜1.8.30.6.93300.1972⎞⎠⎟ o r A = ⎛ ⎝⎜12 / 300.74538944004472⎞⎠⎟
Der dazu verwendete R
Code war:
x = matrix(0,3,3)
x[1,]=c(1,.8,.3)
x[2,]=c(.8,1,.8)
x[3,]=c(.3,.8,1)
t(chol(x))
[,1] [,2] [,3]
[1,] 1.0 0.0000000 0.0000000
[2,] 0.8 0.6000000 0.0000000
[3,] 0.3 0.9333333 0.1972027
x[1,]=c(1,2/3,0)
x[2,]=c(2/3,1,2/3)
x[3,]=c(0,2/3,1)
t(chol(x))
[,1] [,2] [,3]
[1,] 1.0000000 0.0000000 0.0000000
[2,] 0.6666667 0.7453560 0.0000000
[3,] 0.0000000 0.8944272 0.4472136