Có một phương pháp rất đơn giản để mô phỏng từ copula Gaussian dựa trên các định nghĩa về phân phối chuẩn nhiều biến số và copula Gauss.
Tôi sẽ bắt đầu bằng cách cung cấp định nghĩa và các thuộc tính cần thiết của phân phối chuẩn nhiều biến số, tiếp theo là copula Gaussian và sau đó tôi sẽ cung cấp thuật toán để mô phỏng từ copula Gauss.
Đa biến phân phối chuẩn
Một vector ngẫu nhiên có một phân phối chuẩn nhiều chiều nếu
X d = μ + Một Z ,
nơi Z là một k vector chiều của các biến ngẫu nhiên bình thường tiêu chuẩn độc lập, μ là một vectơ d -chiều của các hằng số và A là ma trận d × k của các hằng số. Ký hiệuX=(X1,…,Xd)′
X=dμ+AZ,
ZkμdAd×k=dbiểu thị sự bình đẳng trong phân phối. Vì vậy, mỗi thành phần của
về cơ bản là tổng trọng số của các biến ngẫu nhiên tiêu chuẩn thông thường độc lập.
Từ các tính chất của vectơ trung bình và ma trận hiệp phương sai, chúng ta có
E ( X ) = μ và
c o v ( X ) = Σ , với
Σ = Một Một ' , dẫn đến các ký hiệu tự nhiên
X ~ N d ( μ , Σ ) .
XE(X)=μcov(X)=ΣΣ=AA′X∼Nd(μ,Σ)
Gauss copula
Các Gauss copula được định nghĩa implicitely từ phân phối chuẩn nhiều chiều, có nghĩa là, copula Gauss là copula liên kết với một phân phối chuẩn nhiều chiều. Cụ thể, từ lý Sklar của các copula Gauss là
nơi Φ
CP(u1,…,ud)=ΦP(Φ−1(u1),…,Φ−1(ud)),
Φbiểu thị hàm phân phối chuẩn chuẩn và
biểu thị hàm phân phối chuẩn chuẩn đa biến với ma trận tương quan P. Vì vậy, copula Gauss đơn giản là phân phối chuẩn đa biến tiêu chuẩn trong đó
biến đổi tích phân xác suất được áp dụng cho mỗi lề.
ΦP
Thuật toán mô phỏng
Theo quan điểm trên, một cách tiếp cận tự nhiên để mô phỏng từ copula Gauss là mô phỏng từ phân phối chuẩn chuẩn đa biến với ma trận tương quan thích hợp và chuyển đổi từng lề sử dụng biến đổi tích phân xác suất với hàm phân phối chuẩn thông thường. Trong khi mô phỏng từ phân phối chuẩn nhiều biến số với ma trận hiệp phương sai Σ về cơ bản xuất hiện để thực hiện tổng trọng số của các biến ngẫu nhiên tiêu chuẩn thông thường độc lập, trong đó ma trận "trọng số" A có thể thu đượcPΣA phân hủy Cholesky của hiệp phương sai ma trận .Σ
Do đó, một thuật toán mô phỏng mẫu từ copula Gauss với ma trận tương quan P là:nP
- Thực hiện phân rã Cholesky của và đặt A làm ma trận tam giác thấp hơn.PA
- Lặp lại các bước sau lần.
n
- Tạo một vector của variates bình thường tiêu chuẩn độc lập.Z=(Z1,…,Zd)′
- Đặt X=AZ
- Trở .U=(Φ(X1),…,Φ(Xd))′
Đoạn mã sau trong một ví dụ triển khai thuật toán này bằng 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)))}))
Biểu đồ sau đây cho thấy dữ liệu kết quả từ mã R ở trên.