Il existe une méthode très simple à simuler à partir de la copule gaussienne qui est basée sur les définitions de la distribution normale multivariée et de la copule de Gauss.
Je vais commencer par fournir la définition et les propriétés requises de la distribution normale multivariée, suivie de la copule gaussienne, puis je fournirai l'algorithme à simuler à partir de la copule de Gauss.
Distribution normale multivariée
Un vecteur aléatoire a une distribution normale multivariée si
X d = μ + A Z ,
où Z est un vecteur k- dimensionnel de variables aléatoires normales normales indépendantes, μ est un d -vecteur dimensionnel de constantes, et A est une matrice d × k de constantes. La notation d =X=(X1,…,Xd)′
X=dμ+AZ,
ZkμdAd×k=ddénote l'égalité dans la distribution. Ainsi, chaque composante de
est essentiellement une somme pondérée de variables aléatoires normales standard indépendantes.
A partir des propriétés des vecteurs moyens et des matrices de covariance, nous avons
E ( X ) = μ et
c o v ( X ) = Σ , avec
Σ = A A ′ , conduisant à la notation naturelle
X ∼ NXE(X)=μcov(X)=ΣΣ=AA′ .
X∼Nd(μ,Σ)
Copule de Gauss
La copule de Gauss est définie implicitement à partir de la distribution normale multivariée, c'est-à-dire que la copule de Gauss est la copule associée à une distribution normale multivariée. Plus précisément, d'après le théorème de Sklar, la copule de Gauss est
où Φ
CP(u1,…,ud)=ΦP(Φ−1(u1),…,Φ−1(ud)),
Φdénote la fonction de distribution normale standard, et
désigne la fonction de distribution normale standard multivariée avec la matrice de corrélation P. Ainsi, la copule de Gauss est simplement une distribution normale multivariée standard où la
transformation intégrale de probabilité est appliquée à chaque marge.
ΦP
Algorithme de simulation
Compte tenu de ce qui précède, une approche naturelle pour simuler à partir de la copule de Gauss consiste à simuler à partir de la distribution normale standard multivariée avec une matrice de corrélation appropriée , et à convertir chaque marge en utilisant la transformation intégrale de probabilité avec la fonction de distribution normale standard. Alors que la simulation à partir d'une distribution normale multivariée avec une matrice de covariance Σ revient essentiellement à faire une somme pondérée de variables aléatoires normales standard indépendantes, où la matrice de «poids» APΣA peut être obtenue par la décomposition de Cholesky de la matrice de covariance Σ .
Par conséquent, un algorithme pour simuler échantillons de la copule de Gauss avec la matrice de corrélation P est:nP
- Effectuer une décomposition Cholesky de et définir APA comme matrice triangulaire inférieure résultante.
- Répétez les étapes suivantes n fois.
- Générer un vecteur Z=(Z1,…,Zd)′ de variables normales standard indépendantes.
- Set X=AZ
- Retour .U=(Φ(X1),…,Φ(Xd))′
Le code suivant dans un exemple d'implémentation de cet algorithme utilisant R:
## Initialization and parameters
set.seed(123)
P <- matrix(c(1, 0.1, 0.8, # Correlation matrix
0.1, 1, 0.4,
0.8, 0.4, 1), nrow = 3)
d <- nrow(P) # Dimension
n <- 200 # Number of samples
## Simulation (non-vectorized version)
A <- t(chol(P))
U <- matrix(nrow = n, ncol = d)
for (i in 1:n){
Z <- rnorm(d)
X <- A%*%Z
U[i, ] <- pnorm(X)
}
## Simulation (compact vectorized version)
U <- pnorm(matrix(rnorm(n*d), ncol = d) %*% chol(P))
## Visualization
pairs(U, pch = 16,
labels = sapply(1:d, function(i){as.expression(substitute(U[k], list(k = i)))}))
Le graphique suivant montre les données résultant du code R ci-dessus.