【发布时间】:2016-01-16 19:58:50
【问题描述】:
假设我们有 4 个向量,V1、V2、nf1 和 nf2。我们需要生成n=8736 随机数,每对(V1,V2)、(V1,nf1)、(V2,nf2) 和(nf1,nf2) 关联如下:
Rvv=0.6 for (V1,V2)
Rvn=0.5 for (V1,nf1) and (V2,nf2)
Rnn=0 for (nf1,nf2)
((V1,nf2) 和 (V2, nf1) 的相关性并不重要)。现在我们在 MATLAB 中使用 copula 生成相关随机数:
Rvv=0.6;
Rvn=0.5;
Rnn=0;
n = 8736;
%V1 V2 nf1 nf2
Rho = [1 Rvv Rvn 0 ; %V1
Rvv 1 0 Rvn; %V2
Rvn 0 1 Rnn; %nf1
0 Rvn Rnn 1 ]; %nf2
Random_no = copularnd('Gaussian',Rho,n);
当Rvv 是0.6 并且Random_no 将是一个8736 by 4 矩阵时,这一切都可以,每对列都按照我们通过Rho 矩阵指定的相关。但是当Rvv=0.9 时,MATLAB 返回错误如下:
Error using mvnrnd
SIGMA must be a symmetric positive semi-definite matrix.
Error in copularnd
u = normcdf(mvnrnd(zeros(1,d),Rho,n));
我不明白问题出在哪里,以及如何才能真正使用 copula 生成相关随机数。如果有人能帮助我解决这个问题,我将不胜感激。
【问题讨论】:
标签: matlab random statistics correlation