Home > matlab > distributions > rand_multivariate_student.m

rand_multivariate_student

PURPOSE ^

Pseudo random draws from a multivariate student distribution,

SYNOPSIS ^

function draw = rand_multivariate_student(Mean,Sigma_upper_chol,df)

DESCRIPTION ^

 Pseudo random draws from a multivariate student distribution,
 with expectation Mean, variance Sigma*df/(df-2) and degrees of freedom df>0.

 INPUTS 

    Mean               [double]    1*n vector, expectation of the multivariate random variable.
    Sigma_upper_chol   [double]    n*n matrix, upper triangular Cholesky decomposition of Sigma 
                                   (the covariance matrix up to a factor df/(df-2)).
    df                 [integer]   degrees of freedom.
    
 OUTPUTS 
    draw               [double]    1*n vector drawn from a multivariate normal distribution with expectation Mean and
                                   covariance Sigma.
        
 REMARK This is certainly not the most efficient way...

 NOTE See Zellner (appendix B.2, 1971) for a definition.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function draw = rand_multivariate_student(Mean,Sigma_upper_chol,df)
0002 % Pseudo random draws from a multivariate student distribution,
0003 % with expectation Mean, variance Sigma*df/(df-2) and degrees of freedom df>0.
0004 %
0005 % INPUTS
0006 %
0007 %    Mean               [double]    1*n vector, expectation of the multivariate random variable.
0008 %    Sigma_upper_chol   [double]    n*n matrix, upper triangular Cholesky decomposition of Sigma
0009 %                                   (the covariance matrix up to a factor df/(df-2)).
0010 %    df                 [integer]   degrees of freedom.
0011 %
0012 % OUTPUTS
0013 %    draw               [double]    1*n vector drawn from a multivariate normal distribution with expectation Mean and
0014 %                                   covariance Sigma.
0015 %
0016 % REMARK This is certainly not the most efficient way...
0017 %
0018 % NOTE See Zellner (appendix B.2, 1971) for a definition.
0019 %
0020 
0021 % Copyright (C) 2003-2009 Dynare Team
0022 %
0023 % This file is part of Dynare.
0024 %
0025 % Dynare is free software: you can redistribute it and/or modify
0026 % it under the terms of the GNU General Public License as published by
0027 % the Free Software Foundation, either version 3 of the License, or
0028 % (at your option) any later version.
0029 %
0030 % Dynare is distributed in the hope that it will be useful,
0031 % but WITHOUT ANY WARRANTY; without even the implied warranty of
0032 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0033 % GNU General Public License for more details.
0034 %
0035 % You should have received a copy of the GNU General Public License
0036 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
0037 
0038 n = length(Mean);
0039 draw = Mean + randn(1,n) * Sigma_upper_chol * sqrt(df/sum(randn(df,1).^2));

Generated on Mon 21-May-2012 02:42:43 by m2html © 2005