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,∞)
n∼P(λ),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=1∞p(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α~)∏ni=1Γ(yi+α~)Γ(nα~+∑ni=1yi)Γ(α~)n⋅λnn!
Führend zu:
p(n|Y,α~,λ)=Γ(nα~)∏ni=1Γ(yi+α~)Γ(nα~+∑ni=1yi)Γ(α~)n⋅λnn!⋅(∑j=m∞Γ(jα~)∏ji=1Γ(yi+α~)Γ(jα~+∑ji=1yi)Γ(α~)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)=Γ(∑ni=1yi+1)∏ni=1Γ(yi+1)∏i=1nωyii
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:
y∈Ny1…ym>0ym+1…yn=0nn
Pr(n|λ)=λn(exp{λ}−1)n!, n∈Z+
Ebenso wie zuvor behandeln wir die multinomialen Wahrscheinlichkeiten als Dirichlet, verteilt mit einem symmetrischen Hyperparameter , dh für ein gegebenes ,
Ωα~n
Pr(Ω|α~,n)=Γ(nα~)Γ(α~)n∏i=1nωα~−1i
Das Integrieren (Marginalisieren) über den Wahrscheinlichkeitsvektor ergibt das multinomiale Dirichlet:
Pr(Y|α~,n)=∫Pr(Y|Ω,n)Pr(Ω|α~,n)=Γ(nα~)Γ(∑ni=1yi+nα~)Γ(α~)n∏i=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∈{1…n}j<im≤nYn−mP[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!(n−m)!Pr(Y|α~,n)
Und dies kann über integriert werden, um zu ergeben:
n
Pr(P[Y]|α~,λ)=∑j=m∞Pr(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))