Сколько сторон у кубика? Байесовский вывод в JAGS

9

проблема

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

Интуиция

Если после 40 бросков вы наблюдали 10 красных, 10 синих, 10 зеленых и 10 желтых, кажется, что θ должен достигать пика в 4, а уклоны прокатки с каждой стороны - это распределения с центром в 1/4.

θ имеет тривиальную нижнюю границу, являющуюся количеством различных сторон, наблюдаемых в данных.

Верхняя граница пока неизвестна. Там может быть пятая сторона, которая, вероятно, будет иметь низкий уклон. Чем больше данных вы наблюдаете, не имея пятой категории, тем выше апостериорная вероятность θ = 4.

Подходить

Я использовал JAGS для подобных проблем (через R и RJAGS), которые здесь уместны.

Что касается данных, допустим, obs <- c(10, 10, 10, 10)чтобы соответствовать наблюдениям в примере выше.

Я думаю, что наблюдения должны быть смоделированы с многочленным распределением obs ~ dmulti(p, n), где p ~ ddirch(alpha)и n <- length(obs).

θ связано с количеством категорий, подразумеваемых alpha, так как я могу моделировать, alphaчтобы охватить различное возможное количество категорий?

Альтернативы?

Я довольно плохо знаком с байесовским анализом, так что, может быть, я полностью ошибаюсь, существуют ли альтернативные модели, которые могут по-разному понять эту проблему?

Большое спасибо! Дэвид

davipatti
источник

Ответы:

6

Эта интересная проблема называлась «выборка видов», которой много лет уделялось много внимания, и она включает в себя множество других проблем оценки (таких как повторная поимка). Достаточно сказать, что JAGS не поможет вам в этом случае - JAGS не может обрабатывать цепочки Маркова с переменным измерением на протяжении итераций. Нужно прибегнуть к схеме MCMC, разработанной для таких задач, как, например, обратимый скачок MCMC.

Вот один подход, который подходит для конкретной модели, которую вы описываете, с которой я впервые столкнулся в работе Джеффа Миллера ( arxived ).

Часть I (Оригинальный вопрос)

Одно из предположений, которое я сделаю, состоит в том, что наблюдение данной категории подразумевает существование категорий меньшего ранга. То есть, наблюдение броска кубика на стороне 9 подразумевает существование сторон 1-8. Так не должно быть - категории могут быть произвольными - но я предполагаю, что так в моем примере. Это означает, что наблюдаются 0 значений, в отличие от других проблем оценки видов.

Допустим, у нас есть полиномиальный образец,

Y={y1,y2,,ym,ym+1,,yn}M({p1,p2,,pm,pm+1,,pn})

где - максимальная наблюдаемая категория, - (неизвестное) количество категорий, и все равны 0. Параметр конечен, и нам нужно априор для этого. Любой дискретный, правильный предшествующий с поддержкой будет работать; Возьмем для примера усеченный до нуля Пуассон:n { y m + 1 , , y n } n [ 1 , )mn{ym+1,,yn}N[1,)

N~п(λ),N>0

Удобным приоритетом для полиномиальных вероятностей является Дирихле,

пзнак равно{п1,...,пN}~D({α1,...,αN})

А для упрощенно предположим, что .α1знак равноα2знак равнознак равноαNзнак равноα~

Чтобы сделать задачу более удобной, мы выделим веса:

p(Y|α~,n)=Pp(Y|P,n)p(P|α~,n)dP

Что в данном случае приводит к хорошо изученному дирихле-полиномиальному распределению. Цель состоит в том, чтобы затем оценить условный апостериор,

п(N|Y,α~,λ)знак равноп(Y|N,α~)п(N|λ)п(Y|α~,λ)

Где я явно предполагаю, что и являются фиксированными гиперпараметрами. Легко увидеть, что: λα~λ

п(Y|α~,λ)знак равноΣNзнак равно1п(Y|N,α~)п(N|λ)

Где где . Этот бесконечный ряд должен сходиться довольно быстро (пока хвост предыдущего не слишком тяжелый), и поэтому его легко аппроксимировать. Для усеченного Пуассона он имеет вид:п < тп(Y|N,α~)знак равно0N<м

п(Y|α~,λ)знак равно1(еλ-1)ΣNзнак равномΓ(Nα~)Πязнак равно1NΓ(Yя+α~)Γ(Nα~+Σязнак равно1NYя)Γ(α~)NλNN!

Ведущий к:

п(N|Y,α~,λ)знак равноΓ(Nα~)Πязнак равно1NΓ(Yя+α~)Γ(Nα~+Σязнак равно1NYя)Γ(α~)NλNN!(ΣJзнак равномΓ(Jα~)Πязнак равно1JΓ(Yя+α~)Γ(Jα~+Σязнак равно1JYя)Γ(α~)JλJJ!)-1

Который имеет поддержку на . В этом случае нет необходимости в MCMC, поскольку бесконечные ряды в знаменателе правила Байеса могут быть аппроксимированы без особых усилий.[м,)

Вот небрежный пример в R:

logPosteriorN <- function(max, Y, lambda, alpha){
    m <- length(Y)
    sumy <- sum(Y)
    pp <- sapply(1:max, function(j){
        prior <- log(lambda)*j - log(exp(lambda)-1) - lgamma(j+1)
        posterior <- lgamma(alpha*j) + sum(lgamma(Y + alpha)) - j*lgamma(alpha) - lgamma(sumy + j*alpha)
        if( j > m ) { posterior <- posterior + (j-m)*lgamma(alpha) } 
        else if( j < m ) { posterior = -Inf }
        prior + posterior
        })
    evidence <- log(sum(exp(pp))) # there's no check that this converges
    pp - evidence
}

## with even representation of sides
Y <- c(10, 10, 10, 10)
post <- logPosteriorN(30, Y, 10, 1.2)
plot(1:30, exp(post), pch=19, type="b")

## with uneven representation of sides
Y <- c(1, 2, 1, 0, 0, 2, 1, 0, 1)
post <- logPosteriorN(30, Y, 10, 1.2)
plot(1:30, exp(post), pch=19, type="b")

Ваша интуиция верна: редкая выборка по категориям приводит к большей неопределенности относительно общего количества категорий. Если вы хотите использовать как неизвестный параметр, вам нужно будет использовать MCMC и альтернативные обновления и . n ˜ αα~Nα~

Конечно, это один из подходов к оценке. Вы легко найдете другие (с байесовским и не байесовским вкусами) с небольшим поиском.

Часть II (Ответ на комментарий)

Yзнак равно{Y1,...,Yм,Yм+1,...,YN} - частично наблюдаемый полиномиальный вектор с соответствующими вероятностями : Ωзнак равно{ω1,...,ωм,ωм+1,...,ωN}

пр(Y|Ω,N)знак равноΓ(Σязнак равно1NYя+1)Πязнак равно1NΓ(Yя+1)Πязнак равно1NωяYя

Где , и но в остальном индексы являются случайными. Как и прежде, проблема заключается в том, чтобы вывести истинное количество категорий , и мы начнем с априора такого как усеченный до нуля Пуассон: YNY1...Yм>0Yм+1...YNзнак равно0NN

пр(N|λ)знак равноλN(ехр{λ}-1)N!, NZ+

Также как и прежде, мы рассматриваем полиномиальные вероятности как Dirichlet, распределенный с симметричным гиперпараметром , т.е. для данного , Ωα~N

пр(Ω|α~,N)знак равноΓ(Nα~)Γ(α~)NΠязнак равно1Nωяα~-1

Интегрирование (маргинализация) по вектору вероятностей дает многочлен Дирихле:

пр(Y|α~,N)знак равнопр(Y|Ω,N)пр(Ω|α~,N)знак равноΓ(Nα~)Γ(Σязнак равно1NYя+Nα~)Γ(α~)NΠязнак равно1NΓ(Yя+α~)

Вот где мы расходимся с моделью в части I выше. В первой части было неявное упорядочение по категориям: например, в стороннем кристалле категории (стороны) имеют неявное упорядочение, и наблюдение любой категории подразумевает существование меньших категорий . Во второй части мы имеем частично наблюдаемый полиномиальный случайный вектор, который не имеет неявного упорядочения. Другими словами, данные представляют собой неупорядоченное разбиение точек данных на наблюдаемых категорий. Я буду обозначать неупорядоченное разбиение, полученное в результате увеличенное на ненаблюдаемые категории , как .Nя{1...N}J<ямNYN-мп[Y]

Вероятность неупорядоченного разбиения, обусловленного истинным числом категорий , можно определить, учитывая количество перестановок категорий, которые приводят к одному и тому же разбиению: N

пр(п[Y]|α~,N)знак равноN!(N-м)!пр(Y|α~,N)

И это можно интегрировать по чтобы получить: N

пр(п[Y]|α~,λ)знак равноΣJзнак равномпр(п[Y]|α~,N)пр(N|λ)

Использование правила Байеса для получения апостериорных:

пр(N|п[Y],α~,λ)знак равнопр(п[Y]|N,α~)пр(N|λ)пр(п[Y]|α~,λ)

Просто подключитесь из приведенных выше определений. Опять же, знаменатель представляет собой бесконечный ряд, который будет быстро сходиться: в этой простой модели MCMC не нужно давать адекватное приближение.

Изменяя код R из части I:

logPosteriorN_2 <- function(max, Y, lambda, alpha){
    m <- length(Y)
    sumy <- sum(Y)
    pp <- sapply(1:max, function(j){
        prior <- log(lambda)*j - log(exp(lambda)-1) - lgamma(j+1)
        likelihood <- lchoose(j, m) + lgamma(m + 1) + lgamma(alpha*j) + sum(lgamma(Y + alpha)) - j*lgamma(alpha) - lgamma(sumy + j*alpha)
        if( j > m ) { likelihood <- likelihood + (j-m)*lgamma(alpha) } 
        else if( j < m ) { likelihood = -Inf }
        prior + likelihood
        })
    evidence <- log(sum(exp(pp))) # there's no check that this converges
    pp - evidence
}

Y_1 <- rep(10, 15)
pos_1 <- logPosteriorN_2(50, Y_1, 6, 1)
plot(1:50, exp(pos_1))
Нейт Папа
источник
Большое спасибо за ваш очень полный ответ. (Извините за мой очень медленный ответ). Я вернулся к этому типу вопросов и все еще работаю над математикой. В моей системе категории не являются порядковыми, поэтому предположение о том, что наблюдение данной категории подразумевает существование категорий меньшего ранга , недопустимо.
Давипатти
@davipatti Ответил во второй части.
Нейт Папа