Belli bir korelasyon matrisi ile nasıl veri oluşturacağınızı soruyorsunuz.
Yararlı bir gerçektir ki, bir rasgele vektörün varsa kovaryans matrisi ile daha sonra rastgele vektör, ortalama sahiptir ve kovaryans matrisi . Yani, ortalama sıfır olan verilerle başlarsanız, çarpmak bunu değiştirmez, bu nedenle ilk gereksiniminiz kolayca karşılanır. Σ A x A E ( x ) Ω = A Σ A T AxΣA xA E( x )Ω = A Σ ATbir
Diyelim ki ilişkili olmayan verilerle (ortalama kovaryans matrisi diyagonaldir) başlıyorsunuz - korelasyon matrisi hakkında konuştuğumuzdan, alalım . kalın kare kökü olarak yı seçerek verilen bir kovaryans matrisi ile verilere dönüştürebilirsiniz - o zaman istenen kovaryans matrisine .A Ω A x ΩΣ = IbirΩA xΩ
Örneğinizde, şöyle bir şey istersiniz:
Ω = ⎛⎝⎜1.80.81.80.81⎞⎠⎟
Ne yazık ki bu matris pozitif değil, bu nedenle bir kovaryans matrisi olamaz - determinantın negatif olduğunu görerek bunu kontrol edebilirsiniz. Belki de bunun yerine
Ω = ⎛⎝⎜1.80,3.81.80,3.81⎞⎠⎟ o r Ω= ⎛ ⎝⎜12 / 302 / 312 / 302 / 31⎞⎠⎟
yeterli olur. Matlab (ki ne kullandığınız gibi görünüyor) cholesky kare kök hesaplamak için emin değilim ama işlevi R
kullanabilirsiniz chol()
.
Bu örnekte, yukarıda listelenen iki için uygun matris katları (sırasıyla)Ω
A = ⎛⎝⎜1.80,300,60,933000,1972⎞⎠⎟ o r A = ⎛ ⎝⎜12 / 3000,74530,8944000,4472⎞⎠⎟
Buna R
ulaşmak için kullanılan kod:
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