我从4个时间序列开始,标记为A,B,C,D。
我生成以下内容:
生成4x1随机变量矩阵的Matlab代码是什么,保持时间序列之间的相关性不变?
(原因:这是蒙特卡罗模拟的第一阶段)。
答案 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
是您的手段向量。