1
$\begingroup$

After reading some references about this topic, I compiled the following scheme to estimate and sample from multivariate distributions with Gaussian copula. I am not fully sure, if this is correct or if I might have missed something important. Any advice or comment is highly welcome.

I assume unimodal distributions and use the Johnson distribution family for my $n$ marginal distributions with CDFs $F_1, \dots, F_n$. $\Phi$ denotes the CDF of the standard normal distribution.

Estimation

  1. Get $m$ sample vectors $X_j = [X_{j, 1}, \dots, X_{j, n}]^T$ with $j = 1, \dots, m$
  2. Estimate marginal distribution CDFs $F_1, \dots, F_n$ by quantile matching
  3. Convert samples $Y_j = [F_1(X_{j, 1}), \dots, F_n(X_{j, n})]^T$
  4. Estimate copula correlation matrix $C = \text{corr}([Y_1, \dots, Y_m]^T)$

Sampling

  1. Apply Cholesky decomposition on copula correlation matrix $A = \text{chol}(C)$
  2. Generate an uniform and independent samples vector $U_i \sim \mathbb{U}(0, 1)$ from Sobol sequence
  3. Convert samples $N_i = \Phi^{-1}(U_i)$
  4. Set $N_c = A N_i$
  5. Convert samples $U_c = \Phi(N_c)$
  6. Get correlated sample vector $X_c = [F_1^{-1}(U_{c, 1}), \dots, F_n^{-1}(U_{c, n})]^T$
$\endgroup$
  • $\begingroup$ An easier way might be as follows: 1.) Sample from a Gaussian copula with the desired correlation matrix, using a function such as copularnd in Matlab or one of the methods supplied in R's [copula] (cran.r-project.org/web/packages/copula/copula.pdf) package. The number of samples you generate is your $\mathbf{U}$ matrix of dimensions $d \times n$, where $d$ is the dimensionality and $n$ is # of samples. 2.) Invert each $U_i$ with $F_i^{-1}$ to generate your correlated samples with marginals following the Johnson distribution. $\endgroup$ – Kiran K. Jan 20 '17 at 18:28
  • $\begingroup$ Thank you for this comment. I use Matlab, so I could try copularnd. But I think, I would be limited to pseudo-random numbers and could not go for a quasi-random generator, right? $\endgroup$ – JotWe Jan 21 '17 at 10:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.