2015-10-18 4 views
0

У нас есть 4 вектора, V1, V2, nf1 и nf2. Нам нужно сгенерировать n=8736 случайных чисел, каждая пара (V1,V2), (V1,nf1), (V2,nf2) и (nf1,nf2), чтобы быть коррелировать следующим образом:Matlab линейная корреляционная матрица в функции copularnd (копула случайного числа)

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:

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 Matrix. НО когда 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)); 

Я не могу понять, в чем проблема и как я могу реально генерировать коррелированные случайные числа, используя связку. Я буду очень признателен, если кто-нибудь сможет мне помочь в этой проблеме. не

ответ

0

Я не могу ответить о теории, но получил это в коде copularnd:

case 'gaussian' 
    Rho = varargin{1}; 
    n = varargin{2}; 
    d = size(Rho,1); 
    if isscalar(Rho) 
     if ~(-1 < Rho && Rho < 1) 
      error(message('stats:copularnd:BadScalarCorrelation')); 
     end 
     Rho = [1 Rho; Rho 1]; 
     d = 2; 
    elseif any(diag(Rho) ~= 1) 
     error(message('stats:copularnd:BadCorrelationMatrix')); 
    end 
    % MVNRND will check that Rho is square, symmetric, and positive semi-definite. 
    u = normcdf(mvnrnd(zeros(1,d),Rho,n)); 

Поскольку там нет какой-либо информации о ней в помощь, я думаю, что это должно быть ясно для тех, кто знает, что связка is :) но не для меня

Существует множество способов создания положительных полуопределенных матриц: http://www.mathworks.com/matlabcentral/newsreader/view_thread/163489

Смежные вопросы