Зворотний відбір CDF для змішаного розподілу


9

Позаконтекстна коротка версія

Нехай - випадкова величина з CDF y

F(){θ y = 0 θ+(1θ)×CDFlog-normal(;μ,σ) y > 0

Скажімо, я хотів імітувати малюнки за допомогою зворотного методу CDF. Це можливо? Ця функція точно не має зворотного. Потім знову є вибіркове зворотне перетворення для розподілу суміші двох нормальних розподілів, що говорить про те, що існує відомий спосіб застосувати вибіркове обернене перетворення тут.y

Мені відомо про двоетапний метод, але я не знаю, як застосувати його до моєї ситуації (див. Нижче).


Довга версія з фоном

Я встановив таку модель для відповіді, що оцінюється векторною, , використовуючи MCMC (конкретно, Стен):yi=(y1,,yK)i

θkilogit1(αkxi),μkiβkxiσk22F(){θ y = 0 θ+(1θ)×CDFlog-normal(;μ,σ) y > 0ukF(yk),zkΦ1(uk)zN(0,R)×kf(yk)(α,β,σ,R)priors

де індексує спостережень, - кореляційна матриця, а - вектор предикторів / регресорів / ознак.iNRx

Тобто моя модель є регресійною моделлю, в якій умовний розподіл відповіді вважається копулою Гаусса з нуля-завищеними логарифмичними нормами. Я вже писав про цю модель раніше; виявляється, що Song, Li та Yuan (2009, Gated ) розробили його і називають його вектором GLM, або VGLM. Далі їх специфікація максимально наближена до дослівного, оскільки я міг би її отримати: Мій

f(y;μ,φ,Γ)=c{G1(y1),,Gm(ym)|Γ}i=1mg(yi;μi,φi)c(u|Γ)=|Γ|1/2exp(12qT(ImΓ1)q)q=(q1,,qm)T,qi=Φ1(ui)
FKвідповідає їх , мій відповідає їх , а мій відповідає їх ; подробиці наведені на сторінці 62 (стор. 3 файлу PDF), але вони інакше ідентичні тому, що я написав тут.GmzqRΓ

Нульова завищена частина приблизно відповідає специфікації Лю і Чана (2010 р., Необ’єднана ).

Зараз я хотів би імітувати дані з розрахункових параметрів, але я трохи розгублений, як це робити. Спочатку я подумав, що можу просто імітувати безпосередньо (у коді R):y

for (i in 1:N) {
    for (k in 1:K) {
        Y_hat <- rbinom(1, 1, 1 - theta[i, k])
        if (Y_hat == 1)
            Y_hat <- rlnorm(1, mu[i, k], sigma[k])
    }
}

який не використовує на всіх. Я хотів би спробувати реально використовувати матрицю кореляції, яку я оцінив.R

Наступною моєю ідеєю було взяти креслення і потім перетворити їх назад у . Це також, схоже, збігається з відповідями, отриманими у зразках з копули в R та двовимірному відборі для розподілу, вираженими в теоремі копули Скляра? . Але який чорт тут мій ? Обратна вибірка перетворень для розподілу суміші двох нормальних розподілів дозволяє здатися, що це можливо, але я не маю уявлення, як це зробити.zyF1


@ Xi'an - це копула Гаусса для оцінки залежності між компонентами. y
shadowtalker

1
Нитка, на яку ви посилаєтесь на вибірку із сумішей Normals, стосується безпосередньо вашої проблеми без істотних змін: замість того, щоб використовувати зворотні CDFs Normals, використовуйте зворотні CDF двох ваших компонентів. Зворотний CDF атома при - це постійна функція, завжди дорівнює . y=00
whuber

@whuber Мене просто бентежить, як використовувати обернені CDF двох компонентів: що я малюю, з чого я малюю, а потім у що я підключаю кожну річ?
shadowtalker

1
@ Xi'an чудово пояснює, що у своїй відповіді на питання про звичайну суміш: ви використовуєте єдину змінну для вибору компонента суміші, а потім ви отримуєте значення з цього компонента (будь-яким способом, який вам подобається). У вашому випадку винятково легко отримати значення з першого компонента: це завжди ! Для виведення значення з другого компонента використовуйте будь-який генератор логічних випадкових чисел, який вам подобається. У кожному випадку ви значите число: немає "підключення" для виконання; вся мета генерації випадкових чисел - отримати це число. 0
whuber

@whuber нова відповідь очистила його для мене. Дякую вам обом.
shadowtalker

Відповіді:


5

Відповідь на довгу версію з фоном:

Ця відповідь на довгу версію дещо вирішує інше питання, і, як ми маємо труднощі при формулюванні моделі та проблеми, я вирішу перефразувати її тут, сподіваюся, правильно.

Для метою є моделювання векторів таким чином, що, за умови коваріату , з . Отже, якщо хочеться моделювати дані з цієї моделі, можна зробити наступне:1iIyi=(y1i,,yKi)xi

yki={0 with probability logit1(αkxi)log(σkzki+βkxi) with probability 1logit1(αkxi)
zi=(z1i,,zKi)NK(0,R)

Для ,1iI

  1. Створитиzi=(z1i,,zKi)NK(0,R)
  2. Створитиu1i,,uKiiidU(0,1)
  3. Вивести заyki=I{uki>logit1(αkxi)}log{σkzki+βkxi}1kK

Якщо хтось зацікавлений у поколінні з задньої частини урахуванням , це є більш важкою проблемою, хоча це можливо і за допомогою вибірки Гіббса або ABC.(α,β,μ,σ,R)yki


1
Я знав, що мені щось не вистачає. "Все очевидно заднім числом". Мій намір: мене цікавить значення , так що так, мені цікаво малювати з спільної задньої частини параметрів. Я хочу, щоб модельований 'я бачив, чи відповідає модель. F(yi|xi)y
shadowtalker

1
Як другу проблему набагато складніше? Я вже оцінив модель і маю задню нічию. Якщо ви хочете, ми можемо продовжувати спілкуватися, щоб не захаращувати тут коментарі.
shadowtalker

1
О, загалом, так. На щастя, у мене Стен і пробовідборник, які не повертаються, роблять там важку роботу для мене.
shadowtalker

7

Відповідь на позашлункову коротку версію:

"Інвертування" PDF-файлу, який не перетворюється в математичному сенсі (як ваш змішаний розподіл), можливо, як описано в більшості підручників Монте-Карло. (Як і наша , див. Лемму 2.4.) Якщо визначити узагальнений зворотний тоді Це означає, що коли має стрибок при , для . Іншими словами, якщо ви намалюєте рівномірний і він закінчується меншим, ніж , ваше покоління

F(u)=inf{xR; F(x)u}
XF is equivalent to X=F(U) when UU(0,1).
F(y)θy=0F(u)=0uθU(0,1)θXдорівнює . В іншому випадку, коли , ви в кінцевому підсумку створюєте з безперервної частини, а саме - log-normal у вашому випадку. Це означає використання другого рівномірного випадкового покоління, , незалежного від першого рівномірного малювання та встановлення для отримання нормального покоління журналу.x=0u>θvy=exp(μ+σΦ1(v))

Це майже те, що ваш R-код

Y_hat <- rbinom(1, 1, theta[i, k]) if (Y_hat == 1) Y_hat <- rlnorm(1, mu[i, k], sigma[k])

робить. Ви генеруєте Бернуллі з ймовірністю і якщо він дорівнює , ви перетворюєте його на нормальний журнал. Оскільки це дорівнює 1 з ймовірністю замість цього слід перетворити його на нормальне моделювання журналу, коли воно замість нього дорівнює нулю , і закінчується модифікованим кодом R:θki1θki

Y_hat <- rbinom(1, 1, theta[i, k])
    if (Y_hat == 0)
        Y_hat <- rlnorm(1, mu[i, k], sigma[k])

Отже, все разом, моя імітаційна процедура буде: 1) намалювати , 2) обчислити , потім 3) обчислити якщо і іншому випадку. Правильно? zuk=Φ(zk)yk=0ukθyk=Flog-normal1(uk)
shadowtalker

Ні, неправильно. Ви намалюєте першу рівномірну форму, яка визначатиме значення " і "log-normal", а потім другу форму, якщо ви вирішили використовувати "log-normal". Дивіться відредаговану версію моєї відповіді. 0
Сіань

Але це ігнорує компонент ; звідси моє запитання. Я зробив уточнюючу редагування, а також вирішив помилку в своєму псевдокоді. z
shadowtalker

Моя відповідь - за коротку версію та код R, який ви надали. Я сподіваюся, що це допомагає для довговікової версії, але ваша формула для спільної моделі все ще неправильна. Ви повинні визначити модель на , не використовуючи обмундирування ...y
Сіань

Як ця модель неправильна? Я просто підключив свої до формули роботою (відповідає у їх позначеннях). Це недійсне? F1,,FKG1,,Gm
shadowtalker
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.