Jak symulować z kopuły Gaussa?

16

Załóżmy, że mam dwa jednoznaczne rozkłady krańcowe, powiedzmy i , z których mogę symulować. Teraz skonstruuj ich wspólny rozkład za pomocą kopuły Gaussa , oznaczonej jako . Wszystkie parametry są znane.FGC(F,G;Σ)

Czy istnieje metoda inna niż MCMC do symulacji z tej kopuły?

Tilo
źródło
8
Zakładając, że dla , oczywiście: Generuj . Weź i . Wszystko gotowe. i = 1 , 2 ( X , Y ) N ( 0 , Σ ) F - 1 ( Φ ( X ) ) G - 1 ( Φ ( Y ) )Σjaja=1ja=1,2)(X,Y)N.(0,Σ)fa-1(Φ(X))sol-1(Φ(Y))
kardynał
1
R ma również pakiet o nazwie „kopula”, który może symulować większość standardowych kopuł.
semibruin

Odpowiedzi:

21

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 ( μ , Σ ) .X
E(X)=μcov(X)=ΣΣ=AAXNd(μ,Σ)

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

  1. Wykonaj rozkład Choleskiego i ustaw A jako wynikową niższą macierz trójkątną.PA
  2. Powtórz następujące kroki razy. n
    1. Wygeneruj wektor niezależnych standardowych zmiennych normalnych.Z=(Z1,,Zd)
    2. Ustaw X=AZ
    3. 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.

wprowadź opis zdjęcia tutaj

QuantIbex
źródło
Gdzie po tym pojawiają się F i G?
lcrmorin,
@Were_cat, co masz na myśli?
QuantIbex,
W pierwotnym pytaniu jest mowa o F i G, dwóch rozkładach jednowymiarowych. Jak przechodzisz od copulas do rv z marginesami F i G?
lcrmorin,
U1U2(0,1)Y1Y2FGY1=F1(U1)Y2=G1(U2)F1G1FG
2
@Were_cat, zacytować wikipedia spójka stronę: „a kopuła jest wielowymiarowa rozkład prawdopodobieństwa dla których marginalny rozkład prawdopodobieństwa każdej zmiennej jest jednolite copulas są używane do opisania zależności między zmiennymi losowymi.”.
QuantIbex,