Ada metode yang sangat sederhana untuk mensimulasikan dari kopula Gaussian yang didasarkan pada definisi distribusi normal multivariat dan kopula Gauss.
Saya akan mulai dengan memberikan definisi dan properti yang diperlukan dari distribusi normal multivariat, diikuti oleh kopula Gaussian, dan kemudian saya akan menyediakan algoritma untuk mensimulasikan dari kopula Gauss.
Distribusi normal multivariat
Vektor acak memiliki distribusi normal multivariat jika
X d = μ + A Z , di
mana Z adalah vektor k- dimensi dari variabel standar normal normal independen, μ adalah d- dimensi vektor konstanta, dan A adalah matriks konstanta d × k . Notasi d =X=(X1,…,Xd)′
X=dμ+AZ,
ZkμdAd×k=dmenunjukkan kesetaraan dalam distribusi. Jadi, setiap komponen
pada dasarnya adalah jumlah tertimbang dari variabel independen normal standar normal.
Dari sifat-sifat vektor mean dan matriks kovarians, kita memiliki
E ( X ) = μ dan
c o v ( X ) = Σ , dengan
Σ = A A ' , yang mengarah ke notasi alami
X ~ N d ( μ , Σ ) .
XE(X)=μcov(X)=ΣΣ=AA′X∼Nd(μ,Σ)
Gauss kerja penghubung
The Gauss kerja penghubung didefinisikan secara implisit dari distribusi normal multivariat, yaitu kata kerja penghubung Gauss adalah kata kerja penghubung terkait dengan distribusi normal multivariat. Secara khusus, dari teorema Sklar, Gauss copula adalah
mana Φ
CP(u1,…,ud)=ΦP(Φ−1(u1),…,Φ−1(ud)),
Φmenunjukkan fungsi distribusi normal standar, dan
menunjukkan fungsi distribusi normal standar multivariat dengan matriks korelasi P. Jadi, kopula Gauss hanyalah distribusi normal multivariat standar di mana
transformasi integral probabilitas diterapkan pada setiap margin.
ΦP
Algoritma simulasi
Dalam pandangan di atas, pendekatan alami untuk mensimulasikan dari Gauss copula adalah untuk mensimulasikan dari distribusi normal standar multivariat dengan matriks korelasi sesuai , dan untuk mengkonversi setiap margin menggunakan probabilitas integral dengan fungsi distribusi normal standar. Sementara simulasi dari distribusi normal multivariat dengan matriks kovarians Σ pada dasarnya turun untuk melakukan penjumlahan dari variabel acak normal standar independen, di mana "bobot" matriks A dapat diperoleh dengan dekomposisi Cholesky dari matriks kovarians ΣPΣAΣ .
Oleh karena itu, algoritma untuk mensimulasikan sampel dari Gauss copula dengan matriks korelasi P adalah:nP
- Lakukan dekomposisi Cholesky , dan atur APA sebagai matriks segitiga bawah yang dihasilkan.
- Ulangi langkah-langkah berikut n kali.
- Hasilkan vektor Z=(Z1,…,Zd)′ dari independen variates standar normal.
- Set X=AZ
- Kembalikan .U=(Φ(X1),…,Φ(Xd))′
Kode berikut dalam contoh implementasi algoritma ini menggunakan 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)))}))
Bagan berikut menunjukkan data yang dihasilkan dari kode R di atas.