Đây là một vấn đề thú vị được gọi là "lấy mẫu loài", đã nhận được rất nhiều sự chú ý trong nhiều năm qua và bao gồm nhiều vấn đề ước tính khác (chẳng hạn như đánh dấu lại). Có thể nói, JAGS sẽ không giúp bạn trong trường hợp này - JAGS không thể xử lý chuỗi Markov với kích thước thay đổi qua các lần lặp. Người ta phải truy vấn sơ đồ MCMC được thiết kế cho các vấn đề như vậy, chẳng hạn như MCMC nhảy đảo ngược.
Đây là một cách tiếp cận phù hợp với mô hình cụ thể mà bạn đang mô tả, lần đầu tiên tôi bắt gặp trong tác phẩm của Jeff Miller (được tạo ra ).
Phần I (Câu hỏi gốc)
Một giả định tôi sẽ đưa ra là một quan sát cho một danh mục nhất định ngụ ý sự tồn tại của các danh mục có thứ hạng thấp hơn. Đó là, quan sát một cuộn chết ở bên 9 ngụ ý sự tồn tại của các bên 1-8. Nó không phải là theo cách này - các loại có thể tùy ý - nhưng tôi sẽ giả định như vậy trong ví dụ của tôi. Điều này có nghĩa là 0 giá trị có thể quan sát được, trái ngược với các vấn đề ước tính loài khác.
Giả sử chúng ta có một mẫu đa cực,
Y= { y1, y2, ... , ym, ym + 1, ... , yn} ~ M ( { p1, p2, ... , pm, pm + 1, ... , pn} )
mn{ ym + 1, ... , yn}n[ 1 , ∞ )
n ~ P( λ ) , n > 0
Một ưu tiên thuận tiện cho các xác suất đa quốc gia là Dirichlet,
P= { p1, ... , pn} ∼ D ( { α1, ... , αn} )
α1= α2= ⋯ = αn= α~
Để làm cho vấn đề trở nên dễ xử lý hơn, chúng tôi gạt ra các trọng số:
p ( Y| α~, N ) = ∫Pp ( Y| P, n ) p ( P| α~, n ) dP
Mà trong trường hợp này dẫn đến phân phối Dirichlet-multinomial được nghiên cứu kỹ lưỡng . Mục tiêu là sau đó để ước tính hậu thế có điều kiện,
p ( n | Y, α~, Λ ) = p ( Y| n, a~) p ( n | λ )p ( Y| α~, λ )
α~λ
p ( Y| α~, λ ) = ∑n = 1∞p ( Y| n, a~) p ( n | λ )
p ( Y| n, a~) = 0n<m
p(Y|α~,λ)=1(eλ−1)∑n=m∞Γ(nα~)∏ni=1Γ(yi+α~)Γ(nα~+∑ni=1yi)Γ(α~)n⋅λnn!
Dẫn tới:
p(n|Y,α~,λ)=Γ(nα~)∏ni=1Γ(yi+α~)Γ(nα~+∑ni=1yi)Γ(α~)n⋅λnn!⋅(∑j=m∞Γ(jα~)∏ji=1Γ(yi+α~)Γ(jα~+∑ji=1yi)Γ(α~)j⋅λjj!)−1
[m,∞)
Đây là một ví dụ cẩu thả trong 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")
α~nα~
Tất nhiên, đây là một cách tiếp cận để ước tính. Bạn sẽ dễ dàng tìm thấy những người khác (của hương vị Bayes và không Bayes) với một chút tìm kiếm.
Phần II (Trả lời nhận xét)
Y={y1,…,ym,ym+1,…,yn}Ω={ω1,…,ωm,ωm+1,…,ωn}
Pr(Y|Ω,n)=Γ(∑ni=1yi+1)∏ni=1Γ(yi+1)∏i=1nωyii
y∈Ny1…ym>0ym+1…yn=0nn
Pr(n|λ)=λn(exp{λ}−1)n!, n∈Z+
Ωα~n
Pr(Ω|α~,n)=Γ(nα~)Γ(α~)n∏i=1nωα~−1i
Pr(Y|α~,n)=∫Pr(Y|Ω,n)Pr(Ω|α~,n)=Γ(nα~)Γ(∑ni=1yi+nα~)Γ(α~)n∏i=1nΓ(yi+α~)
ni∈{1…n}j<im≤nYn−mP[Y]
n
Pr(P[Y]|α~,n)=n!(n−m)!Pr(Y|α~,n)
n
Pr(P[Y]|α~,λ)=∑j=m∞Pr(P[Y]|α~,n)Pr(n|λ)
Pr(n|P[Y],α~,λ)=Pr(P[Y]|n,α~)Pr(n|λ)Pr(P[Y]|α~,λ)
Chỉ cần cắm từ các định nghĩa ở trên. Một lần nữa, mẫu số là một chuỗi vô hạn sẽ hội tụ nhanh chóng: trong mô hình đơn giản này, không cần MCMC đưa ra một xấp xỉ đầy đủ.
Bằng cách sửa đổi mã R từ Phần 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))