Як імітувати копулу Гаусса?


16

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

Чи існує метод, що не MCMC для моделювання з цієї копули?


8
Припустимо, що для i = 1 , 2 , звичайно: Створіть ( X , Y ) N ( 0 , Σ ) . Візьміть F - 1 ( Φ ( X ) ) і G - 1 ( Φ ( Y ) ) . Готово. Σii=1i=1,2(X,Y)N(0,Σ)F1(Φ(X))G1(Φ(Y))
кардинал

1
R також має пакет під назвою "копула", який може імітувати більшість стандартних копул.
напівблін

Відповіді:


21

Існує дуже простий метод імітації копули Гаусса, який заснований на визначеннях багатофакторного нормального розподілу та копули Гаусса.

Почну з надання необхідного визначення та властивостей багатоваріантного нормального розподілу, за ним - копула Гаусса, а потім надам алгоритм моделювання з копули Гаусса.

Багатоваріантний нормальний розподіл
Випадковий вектор має багатоваріантний нормальний розподіл, якщо X d = μ + A Z , де Z - k -вимірний вектор незалежних стандартних нормальних випадкових величин, μ - a 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Σ

Отже, алгоритм моделювання вибірок з копули Гаусса з кореляційною матрицею P :nP

  1. Виконайте розбиття Холеського та встановіть A як отриману нижню трикутну матрицю.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.

введіть тут опис зображення


Де після цього з’являються F і G?
lcrmorin

@Were_cat, що ти маєш на увазі?
QuantIbex

В оригінальному питанні є згадка про F і G, два одновимірних розподілу. Як ви переходите від копул до rv з полями F і G?
lcrmorin

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

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