Çok değişkenli normal dağılım ve Gauss kopula tanımlarına dayanan Gauss kopuladan simüle etmek için çok basit bir yöntem vardır.
Çok değişkenli normal dağılımın gerekli tanımını ve özelliklerini, ardından Gaussian kopula'yı sağlayarak başlayacağım ve sonra Gauss kopula'sından simüle etmek için algoritmayı sağlayacağım.
Çok değişkenli normal dağılım
bir rasgele vektör X=(X1,…,Xd)′ a sahip çok değişkenli normal dağılım halinde
bir boyutlu vektör bağımsız standart normal rastgele değişkenlerin, a, sabitleri boyutlu vektörü ve a, sabitleri matrisi. notasyonu eşitliği ifade eder. Yani, her bileşeniZ k μ d A d × k d = X
X=dμ+AZ,
ZkμdAd×k=dXaslında bağımsız standart normal rasgele değişkenlerin ağırlıklı toplamıdır.
Ortalama vektörlerin ve kovaryans matrislerinin özelliklerinden,
ve , , .
c o v ( X ) = Σ Σ = A A ′ X ∼ N d ( μ , Σ )E(X)=μcov(X)=ΣΣ=AA′X∼Nd(μ,Σ)
Gauss bağ Gauss bağ olan çok değişkenli normal dağılım gelen metotunun tanımlandığı Gauss bağ çok değişkenli bir normal dağılım ile ilişkili bağ olduğu. Özellikle, Sklar teoreminden Gauss
burada standart normal dağılım işlevini belirtir ve , korelasyon matrisi P ile çok değişkenli standart normal dağıtım işlevini belirtir. Dolayısıyla, Gauss kopula, olasılık integralinin dönüştürüldüğü standart bir çok değişkenli normal dağılımdır. her kenar boşluğuna uygulanır.
Φ Φ P
CP(u1,…,ud)=ΦP(Φ−1(u1),…,Φ−1(ud)),
ΦΦP
Simülasyon algoritması
Yukarıdakilerin ışığında, Gauss kopuladan simüle etmek için doğal bir yaklaşım, uygun bir korelasyon matrisi ile çok değişkenli standart normal dağılımdan simüle etmek ve standart marj dağılım fonksiyonu ile olasılık integrali dönüşümünü kullanarak her bir marjı dönüştürmektir. Kovaryans matrisi ile çok değişkenli bir normal dağılımdan simüle edilirken, esas olarak "ağırlık" matrisi kovaryans matrisinin Cholesky ayrışmasıyla elde edilebildiği ağırlıklı olarak bağımsız standart normal rastgele değişkenlerin ağırlıklı bir toplamını yapmak için aşağı iner .Σ A ΣPΣAΣ
Bu nedenle, Gauss kopula'sından numuneyi korelasyon matrisi ile simüle etmek için bir algoritma :PnP
- Cholesky ayrışmasını gerçekleştirin ve sonuçta ortaya çıkan alt üçgen matris olarak ayarlayın.APA
- Aşağıdaki adımları kez tekrarlayın .
n
- Bağımsız standart normal değişkenlerden oluşan vektörü oluşturun .Z=(Z1,…,Zd)′
- SetX=AZ
- Dönüş .U=(Φ(X1),…,Φ(Xd))′
R kullanarak bu algoritmanın örnek uygulamasında aşağıdaki kod:
## 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)))}))
Aşağıdaki grafik, yukarıdaki R kodundan elde edilen verileri göstermektedir.