Estoy trabajando a través de Think Bayes (gratis aquí: http://www.greenteapress.com/thinkbayes/ ) y estoy en el ejercicio 3.1. Aquí hay un resumen del problema:
"Un ferrocarril numera sus locomotoras en el orden 1..N. Un día ves una locomotora con el número 60. Estima cuántas locomotoras tiene el ferrocarril".
Esta solución se encuentra con la función de verosimilitud y la exponencial anterior de la siguiente manera:
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)
Conceptualmente esto es decir, si vemos un número de tren mayor que una de nuestras hipótesis (1 ... 1000), entonces cada hipótesis más pequeña tiene cero posibilidades de ser correcta. El resto de las hipótesis tienen una probabilidad de 1 / number_of_trains de mostrarnos un tren con este número.
En el ejercicio en el que estoy trabajando, el autor agrega un poco más. Esto supone que solo hay una compañía. Sin embargo, en la vida real tendrías una mezcla de compañías grandes y pequeñas y compañías más grandes (ambas igualmente probables). Sin embargo, esto significaría que es más probable que vea un tren de una compañía más grande ya que tendrían más trenes.
Ahora la pregunta es ¿cómo reflejar esto en la función de probabilidad?
Esto no es Stack Overflow, así que realmente no estoy pidiendo ayuda para la codificación, sino que tal vez solo ayude sobre cómo podría pensar sobre este problema en términos de una función de probabilidad.