मैं एक सहसंबंध मैट्रिक्स दिया सहसंबद्ध यादृच्छिक चर का अनुकरण करने के लिए चोल्स्की अपघटन का उपयोग करता हूं। बात यह है, परिणाम कभी भी सहसंबंध संरचना को पुन: पेश नहीं करता है जैसा कि दिया गया है। यहां स्थिति का वर्णन करने के लिए पायथन में एक छोटा सा उदाहरण है।
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)))
यह प्रिंट:
[[ 1. 0.34450587 0.57515737]
[ 0.34450587 1. 0.1488504 ]
[ 0.57515737 0.1488504 1. ]]
जैसा कि आप देख सकते हैं, पोस्ट-हॉक अनुमानित सहसंबंध मैट्रिक्स काफी पहले से अलग है। क्या मेरे कोड में एक बग है, या चोल्स्की अपघटन का उपयोग करने के लिए कोई विकल्प है?
संपादित करें
मैं इस गड़बड़ी के लिए आपसे क्षमा चाहता हूं। मुझे नहीं लगता था कि कोड और / या जिस तरह से मैंने पहले अध्ययन किया था सामग्री की कुछ गलतफहमी के कारण चोल्स्की अपघटन लागू किया गया था, उसमें कोई त्रुटि थी। वास्तव में मुझे यकीन था कि विधि स्वयं सटीक होने के लिए नहीं थी और मैं उस स्थिति तक ठीक था जब तक कि मुझे इस प्रश्न को पोस्ट नहीं किया गया। मेरे द्वारा की गई गलतफहमी को इंगित करने के लिए धन्यवाद। मैंने @Silverfish द्वारा प्रस्तावित वास्तविक स्थिति को बेहतर ढंग से दर्शाने के लिए शीर्षक संपादित किया है।