ฉันใช้การสลายตัวของ Cholesky เพื่อจำลองตัวแปรสุ่มที่มีความสัมพันธ์ซึ่งได้รับเมทริกซ์สหสัมพันธ์ สิ่งนี้คือผลลัพธ์ไม่เคยทำซ้ำโครงสร้างความสัมพันธ์ตามที่ได้รับ นี่คือตัวอย่างเล็ก ๆ ใน Python เพื่อแสดงสถานการณ์
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. ]]
อย่างที่คุณเห็นเมทริกซ์สหสัมพันธ์ประมาณโพสต์เฉพาะกิจนั้นแตกต่างอย่างมากจากก่อนหน้านี้ มีข้อผิดพลาดในรหัสของฉันหรือมีทางเลือกอื่นในการใช้การสลายตัว Cholesky?
แก้ไข
ฉันขอโทษสำหรับความยุ่งเหยิงนี้ ฉันไม่คิดว่ามีข้อผิดพลาดในรหัสและ / หรือวิธีการสลายตัวของ Cholesky ถูกนำไปใช้เนื่องจากความเข้าใจผิดของเนื้อหาที่ฉันได้ศึกษามาก่อน ในความเป็นจริงฉันแน่ใจว่าวิธีการนั้นไม่ได้มีความแม่นยำและฉันก็ไม่เป็นไรจนกระทั่งสถานการณ์ที่ทำให้ฉันโพสต์คำถามนี้ ขอบคุณสำหรับการชี้ไปที่ความเข้าใจผิดที่ฉันมี ฉันได้แก้ไขชื่อเพื่อให้สะท้อนสถานการณ์จริงตามที่เสนอโดย @Silverfish