Istnieje bardzo prosta metoda symulacji z kopuły Gaussa, która opiera się na definicjach wielowymiarowego rozkładu normalnego i kopuły Gaussa.
Zacznę od podania wymaganej definicji i właściwości wielowymiarowego rozkładu normalnego, a następnie kopuły Gaussa, a następnie przedstawię algorytm do symulacji z kopuły Gaussa.
Wielowymiarowy rozkład normalny
Wektor losowy ma wielowymiarowy rozkład normalny, jeśli
X d = μ + A Z ,
gdzie Z jest k- wymiarowym wektorem niezależnych standardowych normalnych zmiennych losowych, μ jest a d - wymiarowy wektor stałych, a A jest macierzą d × k stałych. Notacja d =X=(X1,…,Xd)′
X=dμ+AZ,
ZkμdAd×k=doznacza równość w dystrybucji. Tak więc każdy składnik
jest zasadniczo ważoną sumą niezależnych standardowych normalnych zmiennych losowych.
Od właściwości średniej wektorów i macierzy kowariancji mamy
E ( X ) = μ i
C o V ( X ) = Σ z
Ď = A A " , co prowadzi do naturalnego zapisu
X ~ N d ( μ , Σ ) .
XE(X)=μcov(X)=ΣΣ=AA′X∼Nd(μ,Σ)
Gaussa kopuła Gaussa kopuła jest zdefiniowany implicitely z wielowymiarowej rozkładu normalnego, to znaczy kopułę Gaussa jest kopuła związane z wielowymiarowej rozkładu normalnego. Konkretnie, z twierdzenia Sklara kopula Gaussa to
C P ( u 1 , … , u d ) = Φ P ( Φ - 1 ( u 1 ) , … , Φ - 1 ( u d ) ) ,
gdzie Φ
CP(u1,…,ud)=ΦP(Φ−1(u1),…,Φ−1(ud)),
Φoznacza standardową funkcję rozkładu normalnego, a
oznacza wielowymiarową standardową funkcję rozkładu normalnego z macierzą korelacji P. Zatem kopuła Gaussa jest po prostu standardowym wielowymiarowym rozkładem normalnym, w którym do każdego marginesu stosowana jest
transformata całkowa prawdopodobieństwa .
ΦP
Algorytm symulacji
W związku z powyższym naturalnym podejściem do symulacji z kopuły Gaussa jest symulacja z wielowymiarowego standardowego rozkładu normalnego z odpowiednią macierzą korelacji i przekształcenie każdego marginesu za pomocą transformaty całkowej prawdopodobieństwa ze standardową funkcją rozkładu normalnego. Podczas symulacji z wielowymiarowego rozkładu normalnego z macierzą kowariancji Σ zasadniczo sprowadza się do wykonania ważonej sumy niezależnych standardowych normalnych zmiennych losowych, gdzie macierz „wagi” A można uzyskać przez rozkład Cholesky'ego macierzy kowariancji Σ .PΣAΣ
Dlatego algorytmem symulującym próbek z kopuły Gaussa z macierzą korelacji P jest:nP
- Wykonaj rozkład Choleskiego i ustaw A jako wynikową niższą macierz trójkątną.PA
- Powtórz następujące kroki razy.
n
- Wygeneruj wektor niezależnych standardowych zmiennych normalnych.Z=(Z1,…,Zd)′
- Ustaw X=AZ
- Zwraca .U=(Φ(X1),…,Φ(Xd))′
Poniższy kod w przykładowej implementacji tego algorytmu przy użyciu 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)))}))
Poniższa tabela pokazuje dane wynikające z powyższego kodu R.