Эта интересная проблема называлась «выборка видов», которой много лет уделялось много внимания, и она включает в себя множество других проблем оценки (таких как повторная поимка). Достаточно сказать, что 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 ∼ P( λ ) , n > 0
Удобным приоритетом для полиномиальных вероятностей является Дирихле,
п= { р1, … , РN} ∼ D ( { α1, … , ΑN} )
А для упрощенно предположим, что .α1= α2= ⋯ = αN= α~
Чтобы сделать задачу более удобной, мы выделим веса:
p ( Y| α~, n ) = ∫пp ( Y| п,n)p(P|α~,n)dP
Что в данном случае приводит к хорошо изученному дирихле-полиномиальному распределению. Цель состоит в том, чтобы затем оценить условный апостериор,
p ( n | Y, α~, λ ) = p ( Y| n, α~) p ( n | λ )p ( Y| α~, λ )
Где я явно предполагаю, что и являются фиксированными гиперпараметрами. Легко увидеть, что: λα~λ
p ( Y| α~, λ ) = ∑n = 1∞p ( Y| n, α~) p ( n | λ )
Где где . Этот бесконечный ряд должен сходиться довольно быстро (пока хвост предыдущего не слишком тяжелый), и поэтому его легко аппроксимировать. Для усеченного Пуассона он имеет вид:п < тp ( Y| n, α~) = 0п < м
p ( Y| α~, λ ) = 1( еλ- 1 )Σп = м∞Γ ( n α~) ∏Nя = 1Γ ( уя+ α~)Γ ( n α~+ ∑Nя = 1Yя) Γ ( α~)N⋅ λNн !
Ведущий к:
p ( n | Y, α~, λ ) = Γ ( n α~) ∏Nя = 1Γ ( уя+ α~)Γ ( n α~+ ∑Nя= 1Yя) Γ (α~)N⋅λNн !⋅ ( ∑J = м∞Γ ( j α~) ∏Jя = 1Γ ( уя+ α~)Γ ( j α~+ ∑Jя = 1Yя) Γ ( α~)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= { у1, ... , ум, ум + 1, ... , уN} - частично наблюдаемый полиномиальный вектор с соответствующими вероятностями :
Ω = { ω1, ... , ωм, ωм + 1, ... , ωN}
P r (Y| Ω,n)= Γ ( ∑Nя = 1Yя+ 1 )ΠNя = 1Γ ( уя+ 1 )Πя = 1NωYяя
Где , и но в остальном индексы являются случайными. Как и прежде, проблема заключается в том, чтобы вывести истинное количество категорий , и мы начнем с априора такого как усеченный до нуля Пуассон:
Y∈ NY1... ум> 0Yм + 1... уN= 0NN
P r (n | λ)= λN( опыт{ λ } - 1 ) n !, n ∈ Z +
Также как и прежде, мы рассматриваем полиномиальные вероятности как Dirichlet, распределенный с симметричным гиперпараметром , т.е. для данного ,
Ωα~N
P r (Ω | α~, n ) = Γ ( n α~)Γ ( α~)NΠя = 1Nωα~- 1я
Интегрирование (маргинализация) по вектору вероятностей дает многочлен Дирихле:
P r (Y| α~, n ) = ∫P r (Y| Ω,n) P r (Ω | α~, n ) = Γ ( n α~)Γ ( ∑Nя = 1Yя+ n α~) Γ ( α~)NΠя = 1NΓ ( уя+ α~)
Вот где мы расходимся с моделью в части I выше. В первой части было неявное упорядочение по категориям: например, в стороннем кристалле категории (стороны) имеют неявное упорядочение, и наблюдение любой категории подразумевает существование меньших категорий . Во второй части мы имеем частично наблюдаемый полиномиальный случайный вектор, который не имеет неявного упорядочения. Другими словами, данные представляют собой неупорядоченное разбиение точек данных на наблюдаемых категорий. Я буду обозначать неупорядоченное разбиение, полученное в результате увеличенное на ненаблюдаемые категории , как .Ni ∈ { 1 … n }J < Im ≤ nYн - мп[ Y]
Вероятность неупорядоченного разбиения, обусловленного истинным числом категорий , можно определить, учитывая количество перестановок категорий, которые приводят к одному и тому же разбиению:
N
P r ( P[ Y] | α~, n ) = n !( н - м ) !P r (Y| α~, н )
И это можно интегрировать по чтобы получить:
N
P r ( P[ Y] | α~, λ ) = ∑J = м∞P r ( P[ Y] | α~, n ) P r ( n | λ )
Использование правила Байеса для получения апостериорных:
P r (n | P[ Y] , α~, λ ) = P r ( P[ Y] | n , α~) P r ( n | λ )P r ( P[ 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))