Matlab:假设4x4相关矩阵,如何生成4x1随机变量矩阵?

Con*_*ngo 3 statistics matlab probability montecarlo correlation

我从4个时间序列开始,分别标记为A,B,C,D。

我生成以下内容:

  • 平均值的4x1矩阵。
  • 标准差的4x1矩阵。
  • 一个4x4 相关矩阵,通过从每个时间序列中获取30个样本来实现。

用什么Matlab代码生成4x1的随机变量矩阵,同时保持时间序列之间的相关性不变?

(原因:这是蒙特卡洛模拟的第一阶段)。

nim*_*odm 5

您只需要均值向量(称为m)和协方差矩阵(称为C)。请注意,您可以使用等式从相关性中获取协方差矩阵C = R - m*m'(或仅通过在减去序列均值后通过计算序列的相关性直接计算出协方差矩阵)。

然后,要获得具有协方差C的向量,请生成一个IID随机向量(例如高斯):

w = randn(4,1)
Run Code Online (Sandbox Code Playgroud)

然后将其乘以协方差矩阵的平方根(称为Q)并添加均值:

v = Q*w + m
Run Code Online (Sandbox Code Playgroud)

您可以使用Matlab的sqrt函数来计算sqrt(C),也可以使用SVD或EIG对其进行计算。

[u,d] = eig(C)

Q = u*sqrt(d)*u'
Run Code Online (Sandbox Code Playgroud)

的协方差v将是Q*Q'(= C)和平均将是m

有关协方差矩阵的属性,请参见Wikipedia文章