Estou tentando calcular esta distribuição posterior:
O problema é que o numerador, que é o produto de um monte de probabilidades é muito pequeno. (Meu é grande, cerca de 1500).n
Portanto, os valores posteriores para todos são calculados como 0 (estou fazendo cálculos em R).
Para esclarecer, cada tem seu próprio , juntos esses formam um vetor de elementos para . Cada tem seu próprio vetor de elemento de .
EDIT: Adicionando um exemplo de reprodução (para o numerador)
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
fonte
fonte
Respostas:
Esse é um problema comum com o cálculo de probabilidades para todos os tipos de modelos; os tipos de coisas comumente feitas são trabalhar nos logs e usar um fator de escala comum que traga os valores para um intervalo mais razoável.
Nesse caso, sugiro:
Etapa 1: Escolha um , θ 0 razoavelmente "típico" . Divida a fórmula para o numerador e o denominador do termo geral pelo numerador para θ = θ 0 , a fim de obter algo que será muito menos provável que ocorra.θ θ0 0 θ = θ0 0
Etapa 2: trabalhe na escala de log, isso significa que o numerador é uma exp de somas de diferenças de logs e o denominador é uma soma de exp de somas de diferenças de logs.
NB: Se algum dos seus p's for 0 ou 1, retire-os separadamente e não faça registros desses termos; eles são fáceis de avaliar como estão!
[Em termos mais gerais, este aumento de escala e trabalhando-a-a-registo de escala-pode ser visto como tendo um conjunto de log-probabilidades, e fazendo isso: log ( Σ i e L i ) = c + log ( Σ i e l i - c ) . Uma escolha óbvia para ceuEu registro( ∑EueeuEu) = c + log( ∑EueeuEu- c) c registro( ∑EueeuEu) = maxEu( lEu) + log( ∑EueeuEu- maxEu( lEu)) c para ambos, que será cancelado. Acima, isso corresponde a obter com a maior probabilidade de log.]θ0 0
Os termos usuais no numerador tendem a ter um tamanho mais moderado e, em muitas situações, o numerador e o denominador são relativamente razoáveis.
Se houver uma variedade de tamanhos no denominador, some os menores antes de adicionar os maiores.
Se apenas alguns termos dominam fortemente, concentre sua atenção em fazer o cálculo para aqueles relativamente precisos.
fonte
Tente capitalizar as propriedades do uso dos logaritmos e da soma em vez de usar o produto de números decimais. Após o somatório, use o anti-log para colocá-lo novamente em sua forma mais natural. Eu acho que algo assim deve fazer o truque
fonte