我从 4 个时间序列开始,标记为 A、B、C、D。
我生成以下内容:
- 一个 4x1 均值矩阵。
- 标准差的 4x1 矩阵。
- 一个 4x4相关矩阵,从每个时间序列中抽取 30 个样本。
什么是生成 4x1 随机变量矩阵的 Matlab 代码,保持时间序列之间的相关性完整?
(原因:这是蒙特卡洛模拟的第一阶段)。
我从 4 个时间序列开始,标记为 A、B、C、D。
我生成以下内容:
什么是生成 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
有关协方差矩阵的属性,请参阅维基百科文章。
如果您有权访问统计工具箱,则可以使用它mvnrnd
来生成数字。
首先C
使用cov
或 nimrodm 的答案中描述的方法计算协方差矩阵 。然后只需调用
mvnrnd(m, C)
m
你的手段向量在哪里。