Bir korelasyon matrisi verildiğinde ilişkili rasgele değişkenleri simüle etmek için Cholesky ayrışmasını kullanıyorum. Mesele şu ki, sonuç asla korelasyon yapısını verildiği gibi yeniden üretmez. İşte Python'da durumu göstermek için küçük bir örnek.
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)))
Bu yazdırır:
[[ 1. 0.34450587 0.57515737]
[ 0.34450587 1. 0.1488504 ]
[ 0.57515737 0.1488504 1. ]]
Gördüğünüz gibi, post-hoc tahmini korelasyon matrisi öncekinden önemli ölçüde farklıdır. Kodumda bir hata var mı veya Cholesky ayrışmasını kullanmanın başka bir yolu var mı?
Düzenle
Bu karmaşa için özür dilerim. Kodda ve / veya daha önce çalıştığım malzemenin bazı yanlış anlaşılmaları nedeniyle Cholesky ayrışmasının uygulanma biçiminde bir hata olduğunu düşünmemiştim. Aslında, yöntemin kendisinin kesin olması gerekmediğinden emindim ve bu soruyu bana gönderen duruma kadar iyiydim. Sahip olduğum yanlış anlama işaret ettiğiniz için teşekkür ederiz. @Silverfish tarafından önerilen gerçek durumu daha iyi yansıtmak için başlığı düzenledim.