3

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

我生成以下内容:

  • 一个 4x1 均值矩阵。
  • 标准差的 4x1 矩阵。
  • 一个 4x4相关矩阵,从每个时间序列中抽取 30 个样本。

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

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

4

2 回答 2

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

有关协方差矩阵的属性,请参阅维基百科文章

于 2011-06-08T12:09:38.883 回答
2

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

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

mvnrnd(m, C)

m你的手段向量在哪里。

于 2011-06-08T13:08:36.973 回答