수년에 걸쳐 많은 관심을 받아 왔으며 많은 다른 추정 문제 (예 : 마크 회수)를 포괄하는 '종 표본 추출'이라는 흥미로운 문제입니다. JAGS는이 경우 도움이되지 않습니다 .JAGS는 다양한 반복 차원에서 Markov 체인을 처리 할 수 없습니다. 가역 점프 MCMC와 같은 문제를 위해 설계된 MCMC 체계에 의지해야합니다.
다음은 설명하는 특정 모델에 적합한 한 가지 방법입니다 . Jeff Miller ( arxived ) 의 작업에서 처음 접한 방법입니다 .
파트 I (원래 질문)
내가 할 한 가지 가정은 주어진 범주를 관찰하면 더 낮은 순위의 범주가 있음을 의미합니다. 즉,면 9에서 다이 롤을 관찰하면면 1-8이 존재 함을 의미합니다. 그것은하지 않습니다 이 이런 식으로 - 범주는 임의의 수 -하지만 내 예를 그렇게 가정합니다. 이는 다른 종 추정 문제와 달리 0 값을 관찰 할 수 있음을 의미합니다.
다항식 표본이 있다고 가정 해 보겠습니다.
와이= {와이1,와이2, ... ,와이미디엄,와이m + 1, ... ,와이엔} ∼ M ( {피1,피2, ... ,피미디엄,피m + 1, ... ,피엔} )
여기서 은 관측 된 최대 범주이고, 은 (알 수없는) 범주 수이며, 모든 은 0입니다. 매개 변수 은 유한하므로 매개 변수 은 유한하며 그것을위한 선행. 를 지원하기 전에 적절하고 별개의 모든 것이 작동합니다. 예를 들어 0으로 잘린 포아송을 예로 들어 보겠습니다.미디엄엔{와이m + 1, ... ,와이엔}엔[ 1 , ∞ )
n ~ P( λ ) , n > 0
다항식 확률에 앞서 편리한 것은 Dirichlet입니다.
피= {피1, ... ,피엔} ∼ D ( {α1, ... ,α엔} )
그리고 간단히 .α1=α2= ⋯ =α엔=α~
문제를 다루기 쉽도록 가중치를 소외시킵니다.
p ( Y|α~, n ) =∫피p ( Y| 피, n ) p ( P|α~, n ) d피
이 경우 잘 연구 된 Dirichlet- 다항식 분포를 이끄는 것 입니다. 목표는 조건부 후부를 추정하는 것입니다.
p ( n | Y,α~, λ ) =p ( Y| n,α~) p ( n | λ )p ( Y|α~, λ )
여기서 및 는 고정 하이퍼 파라미터 라고 가정 합니다. 다음을 쉽게 알 수 있습니다.α~λ
p ( Y|α~, λ ) =∑n = 1∞p ( Y| n,α~) p ( n | λ )
여기서 여기서 입니다. 이 무한 시리즈는 이전의 꼬리가 너무 무겁지 않은 한 오히려 빠르게 수렴해야하므로 대략적인 편입니다. 잘린 포아송의 경우 형식은 다음과 같습니다.p ( Y| n,α~) = 0n < m
p ( Y|α~, λ ) =1(이자형λ− 1 )∑n = m∞Γ ( nα~)∏엔나는 = 1Γ (와이나는+α~)Γ ( nα~+∑엔나는 = 1와이나는) Γ (α~)엔⋅λ엔아니 !
이어지는 :
p ( n | Y,α~, λ ) =Γ ( nα~)∏엔나는 = 1Γ (와이나는+α~)Γ ( nα~+∑엔나는 = 1와이나는) Γ (α~)엔⋅λ엔아니 !⋅(∑j = m∞Γ ( jα~)∏제이나는 = 1Γ (와이나는+α~)Γ ( jα~+∑제이나는 = 1와이나는) Γ (α~)제이⋅λ제이j !)− 1
어떤에 대한 지원이 . Bayes 규칙 분모의 무한 계열을 너무 많은 노력없이 근사 할 수 있으므로이 경우 MCMC가 필요하지 않습니다.[ m , ∞ )
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와 및 의 대체 업데이트를 사용해야 합니다.α~엔α~
물론 이것은 추정에 대한 한 가지 접근법입니다. 약간의 검색만으로 쉽게 베이지안과 비 베이지 맛을 찾을 수 있습니다.
파트 II (답변 답변)
와이= {와이1, ... ,와이미디엄,와이m + 1, ... ,와이엔} 은 대응 확률 갖는 부분적으로 관측 된 다항식 벡터입니다 :
Ω = {ω1, ... ,ω미디엄,ωm + 1, ... ,ω엔}
P의 R (Y| Ω,n)=Γ (∑엔나는 = 1와이나는+ 1 )∏엔나는 = 1Γ (와이나는+ 1 )∏나는 = 1엔ω와이나는나는
여기서 , 및 이지만 그렇지 않으면 인덱스는 임의적입니다. 이전과 마찬가지로 문제는 실제 개수의 을 추론하는 것이며 , 0으로 자른 포아송 (Poisson)과 같은 시작합니다 .
와이∈ N와이1…와이미디엄> 0와이m + 1…와이엔= 0엔엔
P r (n | λ)=λ엔( 특급{ λ } - 1 ) N !, n ∈ 지+
또한 이전과 마찬가지로 다항식 확률 를 대칭 하이퍼 파라미터 분배 된 Dirichlet으로 , 즉 주어진 ,
Ωα~엔
P r (Ω |α~, n ) =Γ ( nα~)Γ (α~)엔∏나는 = 1엔ωα~− 1나는
확률 벡터에 통합 (marginalizing)하면 다항식 Dirichlet이 제공됩니다.
P의 R (Y|α~, n ) = ∫P의 R (Y| Ω,n) P r (Ω |α~, n ) =Γ ( nα~)Γ (∑엔나는 = 1와이나는+ nα~) Γ (α~)엔∏나는 = 1엔Γ (와이나는+α~)
여기서 우리는 위의 파트 I의 모델과 다릅니다. 1 부에서는 범주에 대한 암시 적 순서가있었습니다. 예를 들어, 형 다이에서 범주 (측면)에는 암시 적 순서가 있으며 모든 범주에 대한 관찰은 의미합니다. 더 적은 카테고리의 존재 . Part II에는 암시적인 순서가없는 부분적으로 관찰 된 다항식 랜덤 벡터가 있습니다. 다시 말해서, 데이터는 데이터 포인트를 관측 된 카테고리 로 정렬되지 않은 파티션으로 나타낸다 . 관찰되지 않은 범주에 의해 증가한 비 순차 파티션을 표시하겠습니다 .엔나는 ∈ { 1 … n }j < 나는m ≤ N와이n - m피[ Y]
동일한 수의 범주 에 대해 조건부 정렬되지 않은 파티션의 확률은 동일한 파티션을 초래하는 범주의 순열 수를 고려하여 찾을 수 있습니다.
엔
P r ( P[ Y] |α~, n ) =아니 !( n - m ) !P의 R (Y|α~, n )
그리고 이것은 을 통해 통합되어 다음 을 제공 할 수 있습니다 :
엔
P r ( P[ Y] |α~, λ ) =∑j = m∞P r ( P[ Y] |α~, n ) P r ( n | λ )
Bayes의 규칙을 사용하여 사후 검색 :
P r (n | P[ Y] ,α~, λ ) =P r ( P[ Y] | n ,α~) P r ( n | λ )P r ( P[ Y] |α~, λ )
위의 정의에서 연결하면됩니다. 다시 말하지만 분모는 빠르게 수렴되는 무한 계열입니다.이 간단한 모델에서는 MCMC가 적절한 근사치를 제공 할 필요가 없습니다.
1 부에서 R 코드를 수정하여 :
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))