私はThink Bayes(ここから無料です:http : //www.greenteapress.com/thinkbayes/)で作業しており、エクササイズ3.1に取り組んでいます。問題の概要は次のとおりです。
「鉄道は機関車に1..Nの順序で番号を付けています。ある日、60番の機関車が見えます。鉄道が持っている機関車の数を見積もります。」
このソリューションは、次のように尤度関数と指数事前分布で見つかります。
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)
概念的には、これは、仮説の1つより大きいトレイン番号(1 ... 1000)が表示された場合、小さい仮説すべてが正しい可能性がゼロであることを示しています。残りの仮説には、1 / number_of_trainsの確率でこの番号の列車が表示されます。
私が作成者に取り組んでいる演習では、少し余分なものを追加します。これは、会社が1つしかないことを前提としています。ただし、実際には、大企業と中小企業、および大企業(どちらも同じくらい可能性があります)が混在しています。ただし、これは、大企業の列車の方が多いため、大企業の列車を見る可能性が高くなることを意味します。
ここで問題は、これを尤度関数にどのように反映するかです。
これはスタックオーバーフローではないので、実際にコーディングのヘルプを求めているのではなく、尤度関数の観点からこの問題についてどのように考えるかについて単に助けているだけかもしれません。