# How can I generate random observations from a concrete copula?

Let us assume that we have two continuous random variables $$X$$, $$Y$$, with known distributions (not necessarily normal), connected/related via a concrete copula.

What is a procedure to generate random values from this pair $$(X,Y)$$?

For a single random variable $$X$$, I usually generate (pseudo)random values within $$[0,1]$$ and then transform them into observations of $$X$$ using its inverse-CDF. Can I do the same when I have copulas?

I am asking for a generic procedure/recipe.

Copulas are usually defined via the joint cdf of the Uniform components, $$C(u_1,u_2,\dots,u_d)=\mathbb P[U_1\leq u_1,U_2\leq u_2,\dots,U_d\leq u_d]$$ Unfortunately, a value $$C(u_1,u_2,\dots,u_d)$$ computed from a random realisation from $$C$$ is not a Uniform variate as in the univariate case.

In the bivariate case, simulation of $$(U_1,U_2)$$ could proceed by the conditional method:

1. generating $$U_1\sim\mathcal U(0,1)$$ [since the marginal is Uniform]
2. generating $$U_2$$ conditional on $$U_1$$

The second step will depend on the format of $$C(u_1,u_2)$$:

1. The conditional cdf of $$U_2$$ is given by$$F(u_2|u_1)=\frac{\partial C}{\partial u_1}(u_1,u_2)\Big/\frac{\partial C}{\partial u_1}(u_1,\infty)$$and the inverse cdf method can be used if inverting the above $$F$$ in $$u_2$$ is easily done
2. The conditional pdf of $$U_2$$ is given by$$f(u_2|u_1)\propto\frac{\partial^2 C}{\partial u_1\partial u_2}(u_1,u_2)$$and standard simulation techniques apply when this function is available.

Historically, Devroye (1986, Chapter XI) has two entire sections XI.3.2. and XI.3.3 on the topic (even though he does not use the term copula despite them being introduced in 1959 by A, Sklar, in response to a query of M. Fréchet). These sections contain many examples (as for instance the Table on page 585) but no generic simulation method.

A recipe for how to generate random observations depends on the level of detail. If you can generate from the copula, then you get points on $$[0,1]\times [0,1]$$. Then you transform the $$X$$ coordinate into $$X$$ and the $$Y$$ coordinate into $$Y$$ by using their respective inverse CDFs.

• For instance, to simulate a Gaussian copula, generate$$\mathbf X\sim\mathcal N_p(0,\boldsymbol{\Sigma})$$and take$$\mathbf U=(\Phi(X_1),\ldots,\Phi(X_p))$$Then transform back with the chosen marginal inverse $F^{-1}$. Commented Jun 17, 2022 at 8:51