Как симулировать из гауссовой связки?


16

Предположим, что у меня есть два одномерных маргинальных распределения, скажем, F и G , из которых я могу смоделировать. Теперь построим их совместное распределение, используя гауссову связку , обозначаемую C(F,G;Σ) . Все параметры известны.

Есть ли не-MCMC метод для симуляции из этой связки?


8
Предполагая, что Σii=1 для i=1,2 , конечно: Генерируем (X,Y)N(0,Σ) . Возьмите F1(Φ(X)) и G1(Φ(Y)) . Все сделано.
кардинал

1
R также имеет пакет под названием «Копула», который может имитировать большинство стандартных копул.
полубрюин

Ответы:


21

Существует очень простой метод для моделирования с помощью гауссовой связки, который основан на определениях многомерного нормального распределения и гауссовой связки.

Я начну с предоставления требуемого определения и свойств многомерного нормального распределения, за которым следует гауссова связка, а затем я приведу алгоритм для моделирования из гаулы Гаусса.

Многомерное нормальное распределение
Случайный вектор имеет многомерное нормальное распределение, если X d = μ + A Z , где Z - k- мерный вектор независимых стандартных нормальных случайных величин, μ - это d- мерный вектор констант, а A - матрица констант d × k . Обозначение d =X=(X1,,Xd)

X=dμ+AZ,
ZkμdAd×k=dобозначает равенство в распределении. Таким образом, каждый компонент является по существу взвешенной суммой независимых стандартных нормальных случайных величин. Из свойств средних векторов и ковариационных матриц имеем E ( X ) = μ и c o v ( X ) = Σ , причем Σ = A A , что приводит к естественному обозначению X N d ( μ , Σ ) .X
E(X)=μcov(X)=ΣΣ=AAXNd(μ,Σ)

Гаусс копула Гаусс копула определяются неявным образом из многомерного нормального распределения, то есть, связка Гаусс является копулой связан с многомерным нормальным распределением. В частности, по теореме Склара копула Гаусса имеет вид C P ( u 1 , , u d ) = Φ P ( Φ - 1 ( u 1 ) , , Φ - 1 ( u d ) ) , где Φ

CP(u1,,ud)=ΦP(Φ1(u1),,Φ1(ud)),
Φобозначает стандартную функцию нормального распределения, а обозначает многовариантную стандартную функцию нормального распределения с корреляционной матрицей P. Таким образом, копула Гаусса является просто стандартным многомерным нормальным распределением, где интегральное преобразование вероятности применяется к каждому полю.ΦP

Алгоритм моделирования
В свете вышеизложенного естественным подходом к моделированию из связки Гаусса является моделирование из многомерного стандартного нормального распределения с соответствующей корреляционной матрицей и преобразование каждого запаса с использованием интегрального преобразования вероятности со стандартной функцией нормального распределения. В то время как моделирование из многомерного нормального распределения с ковариационной матрицей Σ по существу сводится к получению взвешенной суммы независимых стандартных нормальных случайных величин, где «весовая» матрица A может быть получена путем разложения Холецкого ковариационной матрицы Σ .PΣAΣ

nP

  1. PA
  2. n
    1. Z=(Z1,,Zd)
    2. X=AZ
    3. U=(Φ(X1),,Φ(Xd))


Следующий код в примере реализации этого алгоритма с использованием 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)))}))

Следующая диаграмма показывает данные, полученные из приведенного выше кода R.

enter image description here


Где F и G появляются после этого?
15:30

@ Were_cat, что ты имеешь в виду?
QuantIbex

В исходном вопросе упоминается F и G, два одномерных распределения. Как вы переходите от связок к R с полями F и G?
lcrmorin

U1U2(0,1)Y1Y2FGY1=F1(U1)Y2=G1(U2)F1G1FG

2
@Were_cat, чтобы процитировать страницу связки в Википедии : «Копула - это многомерное распределение вероятностей, для которого распределение предельной вероятности каждой переменной является равномерным. Копулы используются для описания зависимости между случайными переменными».
QuantIbex
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.