Il s'agit d'un problème intéressant appelé «échantillonnage des espèces», qui a fait l'objet de beaucoup d'attention au fil des ans et englobe de nombreux autres problèmes d'estimation (comme le marquage-recapture). Il suffit de dire que JAGS ne vous aidera pas dans ce cas - JAGS ne peut pas gérer les chaînes de Markov avec une dimension variable sur plusieurs itérations. Il faut recourir à un schéma MCMC conçu pour de tels problèmes, comme le MCMC à saut réversible.
Voici une approche qui convient au modèle spécifique que vous décrivez, que j'ai rencontrée pour la première fois dans le travail de Jeff Miller ( arxived ).
Partie I (question d'origine)
Une hypothèse que je ferai est qu'une observation d'une catégorie donnée implique l'existence de catégories de rang inférieur. Autrement dit, l'observation d'un jet de dé sur le côté 9 implique l'existence des côtés 1-8. Il n'a pas a être de cette façon - les catégories pourrait être arbitraire - mais je suppose que oui dans mon exemple. Cela signifie que 0 valeurs sont observables, contrairement à d'autres problèmes d'estimation des espèces.
Disons que nous avons un échantillon multinomial,
Y={y1,y2,…,ym,ym+1,…,yn}∼M({p1,p2,…,pm,pm+1,…,pn})
où est la catégorie maximale observée, est le nombre (inconnu) de catégories, et tous égaux à 0. Le paramètre est fini, et nous avons besoin un avant pour cela. Tout préalable discret et approprié avec support sur fonctionnera; prenons par exemple un Poisson tronqué à zéro:n { y m + 1 , … , y n } n [ 1 , ∞ )mn{ym+1,…,yn}n[1,∞)
n∼P(λ),n>0
Un a priori pratique pour les probabilités multinomiales est le Dirichlet,
P= { p1, … , Pn} ∼ D ( { α1, … , Αn} )
Et pour supposer .α1= α2= ⋯ = αn= α~
Pour rendre le problème plus traitable, nous marginalisons les poids:
p ( Y| α~, n ) = ∫Pp ( Y| P, n ) p ( P| α~, n ) dP
Ce qui, dans ce cas, conduit à la distribution multinomiale de Dirichlet bien étudiée . Le but est alors d'estimer le postérieur conditionnel,
p ( n | Y, α~, λ ) = p ( Y| n, α~) p ( n | λ )p ( Y| α~, λ )
Où je suppose explicitement que et sont des hyperparamètres fixes. Il est facile de voir que: λα~λ
p ( Y| α~, λ ) = ∑n = 1∞p ( Y| n, α~) p ( n | λ )
Où où . Cette série infinie devrait converger assez rapidement (tant que la queue du prieur n'est pas trop lourde), et est donc facile à estimer. Pour le Poisson tronqué, il a la forme:n < mp ( Y| n, α~) = 0n < m
p ( Y| α~, λ ) = 1( eλ- 1 )∑n = m∞Γ ( n α~) ∏ni = 1Γ ( yje+ α~)Γ ( n α~+ ∑ni = 1yje) Γ ( α~)n⋅ λnn !
Menant à:
p ( n | Y, α~, λ ) = Γ ( n α~) ∏ni = 1Γ ( yje+ α~)Γ ( n α~+ ∑ni = 1yje) Γ ( α~)n⋅ λnn !⋅ ( ∑j = m∞Γ ( j α~) ∏ji = 1Γ ( yje+ α~)Γ ( j α~+ ∑ji = 1yje) Γ ( α~)j⋅ λjj !)- 1
Qui a un support sur . Il n'y a pas besoin de MCMC dans ce cas car la série infinie du dénominateur de la règle de Bayes peut être approximée sans trop d'effort.[ m , ∞ )
Voici un exemple bâclé dans 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")
Votre intuition est correcte: un échantillonnage épars entre les catégories conduit à une plus grande incertitude sur le nombre total de catégories. Si vous souhaitez traiter comme un paramètre inconnu, vous devez utiliser MCMC et des mises à jour alternatives de et . n ˜ αα~nα~
Bien sûr, il s'agit d'une approche d'estimation. Vous en trouverez facilement d'autres (de saveurs bayésiennes et non bayésiennes) avec un peu de recherche.
Partie II (réponse au commentaire)
Oui= { y1, … , Ym, ym + 1, … , Yn} est un vecteur multinomial partiellement observé avec les probabilités correspondantes :
Ω = { ω1, … , Ωm, ωm + 1, … , Ωn}
P r (Y| Ω,n)= Γ ( ∑ni = 1yje+ 1 )∏ni = 1Γ ( yje+ 1 )∏i = 1nωyjeje
Où , et mais sinon les indices sont aléatoires. Comme précédemment, le problème est d'inférer le vrai nombre de catégories , et nous commençons par un a priori sur tel qu'un Poisson tronqué à zéro:
y∈ Ny1… Ym> 0ym + 1… Yn= 0nn
P r (n | λ)= λn( exp{ λ } - 1 ) n !, n ∈ Z +
De même que précédemment, nous traitons les probabilités multinomiales comme Dirichlet distribué avec un hyperparamètre symétrique , c'est-à-dire pour un donné ,
Ωα~n
P r (Ω | α~, n ) = Γ ( n α~)Γ ( α~)n∏i = 1nωα~- 1je
L'intégration (marginalisation) sur le vecteur de probabilités donne le Dirichlet multinomial:
P r (Y| α~, n ) = ∫P r (Y| Ω,n) P r (Ω | α~, n ) = Γ ( n α~)Γ ( ∑ni = 1yje+ n α~) Γ ( α~)n∏i = 1nΓ ( yje+ α~)
Voici où nous nous écartons du modèle de la partie I ci-dessus. Dans la partie I, il y avait un ordre implicite aux catégories: par exemple, dans un dé à côtés, les catégories (côtés) ont un ordre implicite et l'observation de toute catégorie implique la existence de catégories inférieures . Dans la partie II, nous avons un vecteur aléatoire multinomial partiellement observé qui n'a pas d'ordre implicite. En d'autres termes, les données représentent une partition non ordonnée des points de données en catégories observées. Je dénoterai la partition non ordonnée qui résulte de augmentée de catégories non observées, comme .ni ∈ { 1 … n }j < im ≤ nOuin - mP[ Oui]
La probabilité de la partition non ordonnée conditionnée à un vrai nombre de catégories , peut être trouvée en considérant le nombre de permutations de catégories qui aboutissent à la même partition:
n
P r ( P[ Oui] | α~, n ) = n !( n - m ) !P r (Y| α~, n )
Et cela peut être intégré sur pour donner:
n
P r ( P[ Oui] | α~, λ ) = ∑j = m∞P r ( P[ Oui] | α~, n ) P r (n | λ)
Utilisation de la règle de Bayes pour récupérer le postérieur:
P r (n | P[ Oui] , α~, λ ) = P r ( P[ Oui] | n , α~) P r ( n | λ )P r ( P[ Oui] | α~, λ )
Branchez-vous simplement à partir des définitions ci-dessus. Encore une fois, le dénominateur est une série infinie qui convergera rapidement: dans ce modèle simple, il n'est pas nécessaire que MCMC donne une approximation adéquate.
En modifiant le code R de la partie 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))