看来您在询问如何使用特定的相关矩阵生成数据。
一个有用的事实是,如果您有一个带有协方差矩阵的随机向量,则该随机向量均值为和协方差矩阵。因此,如果您从均值为零的数据开始,则乘以不会改变该值,因此很容易满足您的第一个要求。 Σ 甲X 甲 ë (X)Ω = 甲 Σ 甲Ť甲XΣ一个X一 è(x)Ω = 甲 Σ 甲Ť一种
比方说,你开始(均值为零)不相关的数据(即协方差矩阵对角线) -因为我们正在谈论的相关矩阵,我们只取。您可以通过选择作为的cholesky平方根,将其转换为具有给定协方差矩阵的数据,然后将具有所需的协方差矩阵。甲 Ω 甲X ΩΣ = 我一种Ω一个XΩ
在您的示例中,您似乎想要这样的东西:
Ω = ⎛⎝⎜1个.80.81个.80.81个⎞⎠⎟
不幸的是,矩阵不是正定的,因此它不能是协方差矩阵-您可以通过查看行列式为负来检查这一点。也许吧
Ω = ⎛⎝⎜1个.8.3.81个.8.3.81个⎞⎠⎟ ø - [R Ω= ⎛ ⎝⎜1个2 / 302 / 31个2 / 302 / 31个⎞⎠⎟
就足够了。我不确定如何在matlab中计算出cholesky平方根(这似乎是您所使用的),但是R
可以使用该chol()
函数。
在此示例中,对于上面列出的两个,分别是正确的矩阵倍数Ω
A = ⎛⎝⎜1个.8.30.6.93300.1972⎞⎠⎟ ø ř 甲 = ⎛ ⎝⎜1个2 / 300.7453.894400.4472⎞⎠⎟
R
用于达到此目的的代码是:
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