Wie viele Seiten hat ein Würfel? Bayesianische Folgerung in JAGS

9

Problem

Ich möchte auf ein System schließen, das analog dazu ist, mit einer unbekannten Anzahl von Seiten zu sterben. Der Würfel wird mehrmals gewürfelt, wonach ich eine Wahrscheinlichkeitsverteilung über einen Parameter ableiten möchte, der der Anzahl der Seiten des Würfels entspricht, θ.

Intuition

Wenn Sie nach 40 Rollen 10 Rot-, 10 Blau-, 10 Grün- und 10 Gelbtöne beobachtet haben, scheint es, dass θ bei 4 seinen Höhepunkt erreichen sollte, und die Verzerrungen beim Rollen jeder Seite sind Verteilungen, die auf 1/4 zentriert sind.

θ hat eine triviale Untergrenze, dh die Anzahl der verschiedenen Seiten, die in den Daten beobachtet werden.

Die Obergrenze ist noch unbekannt. Es könnte eine fünfte Seite geben, die wahrscheinlich eine geringe Tendenz hätte. Je mehr Daten Sie beobachten, denen eine fünfte Kategorie fehlt, desto höher ist die hintere Wahrscheinlichkeit von θ = 4.

Ansatz

Ich habe JAGS für ähnliche Probleme (über R und rjags) verwendet, was hier angemessen erscheint.

Nehmen wir obs <- c(10, 10, 10, 10)in Bezug auf die Daten an, dass sie den Beobachtungen im obigen Beispiel entsprechen.

Ich denke, die Beobachtungen sollten mit einer multinomialen Verteilung modelliert werden obs ~ dmulti(p, n), wo p ~ ddirch(alpha)und n <- length(obs).

θ ist mit der Anzahl der Kategorien verknüpft, die durch impliziert werden alpha. Wie kann ich also modellieren alpha, um verschiedene mögliche Anzahlen von Kategorien zu erfassen?

Alternativen?

Ich bin ziemlich neu in Bayes'schen Analysen, könnte also den falschen Baum völlig bellen. Gibt es alternative Modelle, die unterschiedliche Einblicke in dieses Problem liefern könnten?

Danke vielmals! David

Davipatti
quelle

Antworten:

6

Dies ist ein interessantes Problem, das als "Artenprobenahme" bezeichnet wird und im Laufe der Jahre viel Aufmerksamkeit erhalten hat und viele andere Schätzprobleme umfasst (z. B. die Wiedererfassung von Markierungen). Es genügt zu sagen, dass JAGS Ihnen in diesem Fall nicht hilft - JAGS kann keine Markov-Ketten mit einer variablen Dimension über Iterationen hinweg verarbeiten. Man muss auf ein MCMC-Schema zurückgreifen, das für solche Probleme ausgelegt ist, wie beispielsweise das MCMC mit reversiblem Sprung.

Hier ist ein Ansatz, der für das spezifische Modell geeignet ist, das Sie beschreiben und das ich zum ersten Mal in der Arbeit von Jeff Miller ( arxived ) kennengelernt habe .

Teil I (Originalfrage)

Eine Annahme, die ich machen werde, ist, dass eine Beobachtung einer bestimmten Kategorie die Existenz von Kategorien mit einem niedrigeren Rang impliziert. Das heißt, das Beobachten eines Würfelwurfs auf Seite 9 impliziert die Existenz der Seiten 1-8. Es muss nicht so sein - die Kategorien könnten beliebig sein - aber ich gehe in meinem Beispiel davon aus. Dies bedeutet, dass im Gegensatz zu anderen Problemen bei der Artenschätzung 0-Werte beobachtbar sind.

Nehmen wir an, wir haben eine multinomiale Stichprobe.

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

Dabei ist die maximal beobachtete Kategorie, die (unbekannte) Anzahl von Kategorien und alle gleich 0. Der Parameter ist endlich, und wir brauchen ein Prior dafür. Jeder diskrete, ordnungsgemäße Vorgänger mit Unterstützung für wird funktionieren; Nehmen Sie zum Beispiel ein Poisson mit Null-Verkürzung:mn{ym+1,,yn}n[1,)

nP(λ),n>0

Ein geeigneter Prior für die multinomialen Wahrscheinlichkeiten ist das Dirichlet,

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

Und nehmen Sie einfach an: .α1=α2==αn=α~

Um das Problem leichter handhabbar zu machen, werden die Gewichte marginalisiert:

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

Was in diesem Fall zur gut untersuchten Dirichlet-Multinomialverteilung führt . Das Ziel ist dann, den bedingten posterioren zu schätzen,

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

Wo ich explizit davon dass und feste Hyperparameter sind. Es ist leicht zu sehen, dass:α~λ

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

Wobei wobei . Diese unendliche Reihe sollte ziemlich schnell konvergieren (solange der Schwanz des Prior nicht zu schwer ist) und ist daher leicht zu approximieren. Für den abgeschnittenen Poisson hat es die Form:p(Y|n,α~)=0n<m

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

Führend zu:

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

Welches hat Unterstützung auf . In diesem Fall ist MCMC nicht erforderlich, da die unendliche Reihe im Nenner der Bayes-Regel ohne großen Aufwand angenähert werden kann.[m,)

Hier ist ein schlampiges Beispiel in 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")

Ihre Intuition ist richtig: Eine spärliche Auswahl über Kategorien hinweg führt zu einer größeren Unsicherheit über die Gesamtzahl der Kategorien. Wenn Sie als unbekannten Parameter behandeln möchten, müssen Sie MCMC und alternative Aktualisierungen von und .α~nα~

Dies ist natürlich ein Ansatz zur Schätzung. Mit ein wenig Suche finden Sie leicht andere (mit Bayes'schen und nicht-Bayes'schen Aromen).

Teil II (Antwort auf Kommentar)

Y={y1,,ym,ym+1,,yn} ist ein teilweise beobachteter multinomialer Vektor mit entsprechenden Wahrscheinlichkeiten : Ω={ω1,,ωm,ωm+1,,ωn}

Pr(Y|Ω,n)=Γ(i=1nyi+1)i=1nΓ(yi+1)i=1nωiyi

Wobei , und aber ansonsten sind die Indizes willkürlich. Nach wie vor besteht das Problem darin, die wahre Anzahl der Kategorien , und wir beginnen mit einem Prior auf wie beispielsweise einem Poisson mit Null-Verkürzung: yNy1ym>0ym+1yn=0nn

Pr(n|λ)=λn(exp{λ}1)n!, nZ+

Ebenso wie zuvor behandeln wir die multinomialen Wahrscheinlichkeiten als Dirichlet, verteilt mit einem symmetrischen Hyperparameter , dh für ein gegebenes , Ωα~n

Pr(Ω|α~,n)=Γ(nα~)Γ(α~)ni=1nωiα~1

Das Integrieren (Marginalisieren) über den Wahrscheinlichkeitsvektor ergibt das multinomiale Dirichlet:

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

Hier weichen wir vom Modell in Teil I oben ab. In Teil I gab es eine implizite Reihenfolge nach Kategorien: Beispielsweise haben in einem seitigen Würfel die Kategorien (Seiten) eine implizite Reihenfolge, und die Beobachtung einer Kategorie impliziert die Existenz kleinerer Kategorien . In Teil II haben wir einen teilweise beobachteten multinomialen Zufallsvektor, der keine implizite Ordnung hat. Mit anderen Worten, die Daten stellen eine ungeordnete Aufteilung der Datenpunkte in beobachtete Kategorien dar. Ich werde die ungeordnete Partition, die sich aus ergibt, ergänzt durch nicht beobachtete Kategorien, als .ni{1n}j<imnYnmP[Y]

Die Wahrscheinlichkeit der ungeordneten Partition, die von einer wahren Anzahl von Kategorien abhängig ist , kann unter Berücksichtigung der Anzahl von Permutationen von Kategorien ermittelt werden, die zu derselben Partition führen: n

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

Und dies kann über integriert werden, um zu ergeben: n

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

Verwenden der Bayes-Regel zum Abrufen des Seitenzahns:

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

Schließen Sie einfach die obigen Definitionen an. Auch hier ist der Nenner eine unendliche Reihe, die schnell konvergiert: In diesem einfachen Modell muss MCMC keine angemessene Annäherung geben.

Durch Ändern des R-Codes aus Teil 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))
Nate Papst
quelle
Vielen Dank für Ihre sehr vollständige Antwort. (Entschuldigung für meine sehr langsame Antwort). Ich bin auf diese Art von Frage zurückgekommen und arbeite mich immer noch durch die Mathematik. In meinem System sind die Kategorien nicht ordinal, daher ist die Annahme, dass eine Beobachtung einer bestimmten Kategorie die Existenz von Kategorien mit einem niedrigeren Rang impliziert, ungültig.
Davipatti
@davipatti Beantwortet im zweiten Teil.
Nate Pope