Language Reference
RANDMVT Function
RANDMVT (N, DF, Mean, Cov ) ;
This function is supported by the IML procedure and the iml action.
The RANDMVT function is part of the IMLMLIB library. The RANDMVT function returns an matrix that contains N random draws from the Student’s t distribution with DF degrees of freedom, mean vector Mean, and covariance matrix Cov.
The inputs are as follows:
If X follows a multivariate t distribution with degrees of freedom, mean vector
, and variance-covariance matrix
, then
The following example generates 1,000 samples from a two-dimensional t distribution with 7 degrees of freedom, mean vector (1, 2), and covariance matrix S. Each row of the returned matrix x is a row vector sampled from the t distribution. The example computes the sample mean and covariance and compares them with the expected values.
call randseed(1);
N = 1000;
DF = 4;
Mean = {1 2};
S = {1 1, 1 5};
Cov = DF/(DF-2) * S; /* population covariance */
x = RandMVT( N, DF, Mean, S );
SampleMean = mean(x);
SampleCov = cov(x);
print SampleMean Mean, SampleCov Cov;
Figure 343: Estimated Mean and Covariance Matrix
| SampleMean | Mean | ||
|---|---|---|---|
| 1.0109905 | 1.9372765 | 1 | 2 |
| SampleCov | Cov | ||
|---|---|---|---|
| 1.9556572 | 2.2581732 | 2 | 2 |
| 2.2581732 | 10.437216 | 2 | 10 |
In the preceding example, the columns (marginals) of x do not follow univariate t distributions. If you want a sample whose marginals are univariate t, then you need to scale each column of the output matrix:
x = RandMVT( N, DF, Mean, S );
StdX = x / sqrt(T(vecdiag(S))); /* StdX columns are univariate t */
Equivalently, you can generate samples whose marginals are univariate t by passing in a correlation matrix instead of a general covariance matrix.
For further details about sampling from the multivariate t distribution, see Kotz and Nadarajah (2004).