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

时间:2011-06-08 11:51:02

标签: matlab statistics probability correlation montecarlo

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

我生成以下内容:

  • 4x1平均值。
  • 标准差的4x1矩阵。
  • A 4x4 correlation matrix,从每个时间序列中抽取30个样本。

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

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

2 个答案:

答案 0 :(得分:5)

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

然后,要获得具有协方差C的向量,您将生成IID随机向量(比如高斯):

w = randn(4,1)

然后将它与协方差矩阵的平方根相乘(称之为Q)并添加均值:

v = Q*w + m

您可以使用Matlab的sqrt函数计算sqrt(C)或使用SVD或EIG计算它。

[u,d] = eig(C)

Q = u*sqrt(d)*u'

v的协方差为Q*Q'(= C),平均值为m

有关协方差矩阵的属性,请参阅wikipedia article

答案 1 :(得分:2)

如果您有权访问统计工具箱,则可以使用mvnrnd生成数字。

首先使用C或nimrodm答案中描述的方法计算协方差矩阵cov。然后简单地调用

mvnrnd(m, C)

其中m是您的手段向量。