Estou trabalhando no Think Bayes (gratuito aqui: http://www.greenteapress.com/thinkbayes/ ) e estou no exercício 3.1. Aqui está um resumo do problema:
"Uma ferrovia numera suas locomotivas na ordem 1..N. Um dia você vê uma locomotiva com o número 60. Estime quantas locomotivas a ferrovia possui."
Essa solução é encontrada com a função de verossimilhança e a exponencial anterior da seguinte forma:
class Train(Suite):
def __init__(self, hypos, alpha=1.0):
# Create an exponential prior
Pmf.__init__(self)
for hypo in hypos:
self.Set(hypo, hypo**(-alpha))
self.Normalize()
def Likelihood(self, data, hypo):
if hypo < data:
return 0
else:
return (1.0/hypo)
Conceitualmente, isso significa que, se virmos um número de trem maior que uma de nossas hipóteses (1 ... 1000), todas as hipóteses menores terão uma chance zero de estar correta. O restante das hipóteses tem uma chance de 1 / number_of_trains de nos mostrar um trem com esse número.
No exercício em que estou trabalhando, o autor acrescenta um pouco mais. Isso pressupõe que há apenas uma empresa. Na vida real, porém, você teria uma mistura de grandes e pequenas empresas e empresas maiores (ambas igualmente prováveis). No entanto, isso significa que é mais provável que você veja um trem de uma empresa maior, pois eles teriam mais trens.
Agora, a questão é como refletir isso na função de probabilidade?
Isso não é Stack Overflow; portanto, não estou realmente pedindo ajuda para codificação, mas talvez apenas ajude sobre como posso pensar sobre esse problema em termos de uma função de probabilidade.