我正在做一个项目,其中包括制作时间序列,其中多个系列的时间演变的随机部分之一具有特定的协方差。问题在于,我的很多项目要求我至少有一定程度的控制权来讨论不同时间序列之间的协方差,并且我已经找不到(相对速度)找到协方差矩阵的方法一旦大小超过~30就完全没有。
总结一下:
我想制作n~50的对称矩阵,在某些地方有所需的数字,在其他地方为零,并且是半正定的(MATLABs cholcov只要求半定,幸运)。
我衷心希望那里的人至少有一个想法!
// Niffe
PS:到目前为止我已经在MATLAB工作了,但我对其他语言开放,并且除了数学之外,还有其他解决方案。答案 0 :(得分:4)
现在我终于可以回答了。
您想要的完全取决于您想要的分发类型。
例如,您可以想到高斯/正态分布。如果您有协方差矩阵,则可以执行此操作,来自MATLAB site。
使用指定的均值向量和协方差矩阵从双变量正态分布生成值。
mu = [1 2];
Sigma = [1 .5; .5 2]; R = chol(Sigma);
z = repmat(mu,100,1) + randn(100,2)*R;
但是,当然,你可以用这个做任何一种过程。正如我在您的评论中看到的,您希望生成随机数据。就是这样。从协方差矩阵生成更多的协方差矩阵对我来说毫无意义。