J'essaie de calculer cette distribution postérieure:
Le problème est que le numérateur, qui est le produit d'un tas de les probabilités sont trop faibles. (Ma est grande, environ 1500).
Par conséquent, les valeurs postérieures pour tous tous sont calculés à 0 (je fais des calculs dans R).
Pour clarifier, chaque a sa propre , ensemble ces fait un vecteur de éléments pour 's. Chaque a sa propre -élément vecteur de .
EDIT: Ajout d'un exemple de reproduction (pour le numérateur)
p <- sample(seq(0,1,by=0.01), 1500, replace=T)
y <- sample(c(0,1), 1500, replace=T)
dbern(y, p) # 1500-element vector, each element is < 1
prod(dbern(y, p)) # produce 0
exp(sum(log(dbern(y, p)))) # produce 0 since the sum is very negative
r
likelihood
posterior
Heisenberg
la source
la source
Réponses:
Il s'agit d'un problème courant avec le calcul des probabilités pour toutes sortes de modèles; les tâches généralement effectuées consistent à travailler sur les journaux et à utiliser un facteur d'échelle commun qui ramène les valeurs dans une plage plus raisonnable.
Dans ce cas, je suggère:
Étape 1: Choisissez un assez "typique"θ , θ0 . Divisez la formule pour le numérateur et le dénominateur du terme général par le numérateur pourθ =θ0 , afin d'obtenir quelque chose qui sera beaucoup moins susceptible de déborder.
Étape 2: travailler sur l'échelle logarithmique, cela signifie que le numérateur est une exp de sommes de différences de journaux, et le dénominateur est une somme d'exp de sommes de différences de journaux.
NB: Si l'un de vos p vaut 0 ou 1, retirez-les séparément et ne prenez pas les journaux de ces termes; ils sont faciles à évaluer tels quels!
[En termes plus généraux, cette mise à l'échelle et travail sur l'échelle du journal peut être considérée comme prenant un ensemble de log-vraisemblances,lje et ce faisant: Journal(∑jeelje) = c + log(∑jeelje- c) . Un choix évident pourc est de faire le plus grand terme 0, ce qui nous laisse: Journal(∑jeelje) =maxje(lje) + journal(∑jeelje-maxje(lje)) . Notez que lorsque vous avez un numérateur et un dénominateur, vous pouvez utiliser le mêmec pour les deux, qui seront alors annulés. Dans ce qui précède, cela correspond à prendre le avec la probabilité de log la plus élevée.]θ0
Les termes usuels du numérateur auront tendance à être de taille plus modérée, et donc dans de nombreuses situations, le numérateur et le dénominateur sont tous deux relativement raisonnables.
S'il y a une gamme de tailles dans le dénominateur, additionnez les plus petites avant d'ajouter les plus grandes.
Si seuls quelques termes dominent fortement, vous devez concentrer votre attention sur la précision du calcul de ceux-ci.
la source
Essayez de tirer parti des propriétés de l'utilisation des logarithmes et de la somme plutôt que de prendre le produit de nombres décimaux. Après la sommation, utilisez simplement l'anti-log pour le remettre dans votre forme la plus naturelle. Je pense que quelque chose comme ça devrait faire l'affaire
la source