Bir kalıbın kaç tarafı var? JAGS'ta Bayesci çıkarım


9

Sorun

Bilinmeyen sayıda taraf ile ölmeye benzer bir sistem üzerinde bazı çıkarımlarda bulunmak istiyorum. Kalıp birkaç kez yuvarlanır, bundan sonra kalıbın sahip olduğu taraf sayısına karşılık gelen bir parametre üzerinden olasılık dağılımını çıkarmak istiyorum, θ.

Sezgi

Eğer 40 rulodan sonra 10 kırmızı, 10 mavi, 10 yeşil ve 10 sarı görüyorsanız, θ 4'te zirve yapmalı ve her iki tarafın yuvarlanma eğilimleri 1/4 merkezli dağılımlardır.

θ Verilerde gözlenen farklı tarafların sayısı olmak üzere önemsiz bir alt sınır vardır.

Üst sınır hala bilinmiyor. Muhtemelen düşük bir önyargıya sahip olan beşinci bir taraf olabilir. Beşinci kategoriden yoksun ne kadar fazla veri gözlemlerseniz, θ = 4 posterior olasılığı o kadar yüksek olur.

Yaklaşmak

JAGS'ı burada uygun görünen benzer problemler için (R ve rjags aracılığıyla) kullandım.

Verilere ilişkin olarak, obs <- c(10, 10, 10, 10)yukarıdaki örnekte yer alan gözlemlere karşılık geldiğini varsayalım.

Bence gözlemler obs ~ dmulti(p, n), nerede p ~ ddirch(alpha)ve olmak üzere, çok terimli bir dağılımla modellenmelidir n <- length(obs).

θ ima edilen kategori sayısıyla bağlantılıdır alpha, bu yüzden alphaolası farklı sayıda kategoriyi kapsayacak şekilde nasıl modelleme yapabilirim ?

Alternatifler?

Bayesian analizlerinde oldukça yeniyim, bu yüzden yanlış ağacı tamamen havlıyor olabilirsiniz, bu sorun hakkında farklı görüşler sağlayabilecek alternatif modeller var mı?

Çok teşekkürler! David

Yanıtlar:


6

Bu, 'tür örnekleme' olarak adlandırılan, yıllar boyunca çok dikkat çeken ve diğer birçok tahmin problemini (mark-recapture gibi) kapsayan ilginç bir sorundur. JAGS bu durumda size yardımcı olmayacaktır - JAGS, iterasyonlar boyunca değişken bir boyuta sahip Markov zincirlerini işleyemez. Geri dönüşümlü atlama MCMC gibi sorunlar için tasarlanmış bir MCMC planına başvurulmalıdır.

Jeff Miller'ın ( arxived ) çalışmasında ilk karşılaştığım, tanımladığınız belirli model için uygun olan bir yaklaşım .

Bölüm I (Orijinal soru)

Yapacağım bir varsayım, belirli bir kategorideki bir gözlemin, daha düşük seviyedeki kategorilerin varlığını ima ettiği. Yani, 9 tarafındaki bir kalıp rulosunun gözlemlenmesi, 1-8 taraflarının varlığını ima eder. Bu şekilde olmak zorunda değil - kategoriler keyfi olabilir - ama örneğimde bunu varsayacağım. Bu, diğer tür tahmini problemlerinin aksine 0 değerlerinin gözlemlenebilir olduğu anlamına gelir.

Diyelim ki çok terimli bir örneğimiz var,

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

nerede m gözlemlenen maksimum kategori, n (bilinmeyen) kategori sayısı ve tümü {ym+1,,yn} 0'a eşittir. nsonlu ve bunun için bir önceliğe ihtiyacımız var. Herhangi bir ayrık, uygun destek ile önce[1,)çalışacak; örneğin sıfır kesilmiş bir Poisson'u ele alalım:

nP(λ),n>0

Çok terimli olasılıklar için uygun bir öneri Dirichlet'tir,

P={p1,,pn}D({α1,,αn})

Ve basit bir şekilde α1=α2==αn=α~.

Sorunu daha izlenebilir hale getirmek için ağırlıkları marjinalleştiriyoruz:

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

Bu durumda, iyi çalışılmış Dirichlet-multinom dağılımına yol açar . Amaç, koşullu posterioru tahmin etmektir,

p(n|Y,α~,λ)=p(Y|n,α~)p(n|λ)p(Y|α~,λ)

Açıkça varsaydığım yer α~ ve λsabit hiperparametrelerdir. Bunu görmek kolaydır:

p(Y|α~,λ)=n=1p(Y|n,α~)p(n|λ)

Nerede p(Y|n,α~)=0 nerede n<m. Bu sonsuz seri oldukça hızlı bir şekilde birleşmelidir (önceki kuyruk çok ağır olmadığı sürece) ve bu yüzden yaklaşık olarak kolay. Kesik Poisson için şu şekle sahiptir:

p(Y|α~,λ)=1(eλ1)n=mΓ(nα~)i=1nΓ(yi+α~)Γ(nα~+i=1nyi)Γ(α~)nλnn!

Giden:

p(n|Y,α~,λ)=Γ(nα~)i=1nΓ(yi+α~)Γ(nα~+i=1nyi)Γ(α~)nλnn!(j=mΓ(jα~)i=1jΓ(yi+α~)Γ(jα~+i=1jyi)Γ(α~)jλjj!)1

Hangi desteği var [m,). Bu durumda MCMC'ye ihtiyaç yoktur, çünkü Bayes kuralının paydasında sonsuz seriler çok fazla çaba sarf edilmeden yaklaşık olarak tahmin edilebilir.

İşte R'de özensiz bir örnek:

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")

Sezginiz doğrudur: Kategoriler arasında seyrek örnekleme, toplam kategori sayısı hakkında daha fazla belirsizlik yaratır. Tedavi etmek istersenα~ bilinmeyen bir parametre olarak, MCMC'yi ve alternatif güncellemelerini kullanmanız gerekir. n ve α~.

Tabii ki, bu kestirime bir yaklaşımdır. Biraz arama yaparak diğerlerini (Bayesian ve Bayes dışı lezzetler) kolayca bulacaksınız.

Bölüm II (Yoruma cevap)

Y={y1,...,ym,ym+1,...,yn} karşılık gelen olasılıkları olan kısmen gözlenen bir multinomiyal vektördür Ω={ω1,...,ωm,ωm+1,...,ωn}:

Pr(Y|Ω,n)=Γ(Σben=1nyben+1)Πben=1nΓ(yben+1)Πben=1nωbenyben

Nerede yN-, y1...ym>0 ve ym+1...yn=0ancak aksi halde endeksler abitrary'dir. Daha önce olduğu gibi, sorun gerçek kategori sayısını çıkarmaktırnve bir önceki n sıfır kesik Poisson gibi:

Pr(n|λ)=λn(tecrübe{λ}-1)n!, nZ+

Ayrıca daha önce olduğu gibi, çok terimli olasılıkları ele alıyoruz Ω Dirichlet'in simetrik hiperparametre ile dağıtılması α~, yani belirli bir n,

Pr(Ω|α~,n)=Γ(nα~)Γ(α~)nΠben=1nωbenα~-1

Olasılıklar vektörü üzerine entegrasyon (marjinalleştirme), çok terimli Dirichlet'i verir:

Pr(Y|α~,n)=Pr(Y|Ω,n)Pr(Ω|α~,n)=Γ(nα~)Γ(i=1nyi+nα~)Γ(α~)ni=1nΓ(yi+α~)

Burada, yukarıdaki Bölüm I'deki modelden ayrıldığımız yer. Bölüm I'de, kategoriler için örtük bir sıralama vardı: örneğin,ntaraflı kalıp, kategoriler (taraflar) örtülü bir sıralamaya ve herhangi bir kategorinin gözlemlenmesine sahiptir i{1n} daha küçük kategorilerin varlığını ima eder j<i. Kısım II'de, örtük bir sıralaması olmayan, kısmen gözlenen çok terimli rastgele bir vektörünüz vardır. Başka bir deyişle, veriler veri noktalarının sırasız bir bölümünümngözlenen kategoriler. Kaynaklanan bölümlenmemiş bölümü göstereceğimY tarafından artırıldı nm gözlemlenmeyen kategoriler, P[Y].

Gerçek sayıda kategoriye bağlı koşulsuz bölümlemenin olasılığı n, aynı bölümle sonuçlanan kategorilerin permütasyon sayısı dikkate alınarak bulunabilir:

Pr(P[Y]|α~,n)=n!(nm)!Pr(Y|α~,n)

Ve bu entegre edilebilir n vermek:

Pr(P[Y]|α~,λ)=Σj=mPr(P[Y]|α~,n)Pr(n|λ)

Posterioru almak için Bayes kuralını kullanma:

Pr(n|P[Y],α~,λ)=Pr(P[Y]|n,α~)Pr(n|λ)Pr(P[Y]|α~,λ)

Sadece yukarıdaki tanımlardan takın. Yine, payda hızlı bir şekilde yakınlaşacak sonsuz bir seridir: bu basit modelde, MCMC'nin yeterli bir yaklaşım göstermesine gerek yoktur.

Bölüm I'deki R kodunu değiştirerek:

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))

Çok eksiksiz cevabınız için çok teşekkürler. (Çok yavaş yanıtım için özür dilerim). Bu tür bir soruya geri döndüm ve hala matematikte yoluma devam ediyorum. Sistemimde kategoriler sıralı değildir, bu nedenle belirli bir kategorideki bir gözlemin, daha düşük bir sıradaki kategorilerin varlığını ima ettiği varsayımı geçersizdir.
davipatti

@davipatti İkinci bölümde cevap verdi.
Nate Pope
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.