Saya menggunakan dekomposisi Cholesky untuk mensimulasikan variabel acak berkorelasi diberi matriks korelasi. Masalahnya, hasilnya tidak pernah mereproduksi struktur korelasi seperti yang diberikan. Berikut ini adalah contoh kecil dalam Python untuk menggambarkan situasi.
import numpy as np
n_obs = 10000
means = [1, 2, 3]
sds = [1, 2, 3] # standard deviations
# generating random independent variables
observations = np.vstack([np.random.normal(loc=mean, scale=sd, size=n_obs)
for mean, sd in zip(means, sds)]) # observations, a row per variable
cor_matrix = np.array([[1.0, 0.6, 0.9],
[0.6, 1.0, 0.5],
[0.9, 0.5, 1.0]])
L = np.linalg.cholesky(cor_matrix)
print(np.corrcoef(L.dot(observations)))
Ini mencetak:
[[ 1. 0.34450587 0.57515737]
[ 0.34450587 1. 0.1488504 ]
[ 0.57515737 0.1488504 1. ]]
Seperti yang Anda lihat, matriks korelasi taksiran post-hoc berbeda secara drastis dari yang sebelumnya. Apakah ada bug dalam kode saya, atau ada beberapa alternatif untuk menggunakan dekomposisi Cholesky?
Edit
Maafkan saya atas kekacauan ini. Saya tidak berpikir ada kesalahan dalam kode dan / atau cara dekomposisi Cholesky diterapkan karena beberapa kesalahpahaman tentang materi yang saya pelajari sebelumnya. Sebenarnya saya yakin bahwa metode itu sendiri tidak dimaksudkan untuk menjadi tepat dan saya baik-baik saja dengan itu sampai situasi yang membuat saya memposting pertanyaan ini. Terima kasih telah menunjukkan kesalahpahaman yang saya miliki. Saya telah mengedit judul untuk lebih mencerminkan situasi sebenarnya seperti yang diusulkan oleh @Silverfish.