我从 4 个时间序列开始,标记为 A、B、C、D。
我生成以下内容:
- 一个 4x1 均值矩阵。
- 4x1 标准差矩阵。
- 4x4 correlation matrix ,通过从每个时间序列中抽取 30 个样本。
生成 4x1 随机变量矩阵并保持时间序列之间相关性完整的 Matlab 代码是什么?
(原因:这是蒙特卡罗模拟的第一阶段)。
最佳答案
您只需要均值向量(称为 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对于协方差矩阵的性质。
关于Matlab:假设一个 4x4 相关矩阵,如何生成一个 4x1 随机变量矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278270/