
3.2
機関車問題
■
23
3.2
機関車問題
機関車問題は、モステラーの『確率の
50
の挑戦問題とその解』[
Mosteller 87
]に掲載
されていた。
「ある鉄道会社では、機関車に
1..N
という番号を付けている。ある日、
60
番という
機関車を目撃したとすると、鉄道会社は何台の機関車を所有しているのか推測せ
よ」
この観察から、鉄道会社に
60
両以上の機関車があることはわかっている。しかし、
それ以上一体どれだけあるのか。ベイズ推論を適用すると、この問題を次の
2
ステップ
で解くことができる。
1.
このデータを見る前に
N
について何を知っていたか。
2.
N
が与えられたとしたら、データ(
60
番の機関車)を目撃する機会はどのような
ものか。
最初の質問の答えは事前確率。
2
番目の答えは尤度。
事前確率を選ぶための基礎情報はあまりないが、単純なものから始めて、他を考慮
していこう。
N
は、
1
から
1000
までの範囲ではどれも同じくらいと仮定しよう。
hypos = xrange(1, 1001)
必要なのは尤度関数である。
N
両の機関車の車両を仮定したとすると、
60
番を目撃
する確率はどれぐらいだろうか。
1
両しか運行しない会社がある(または、
1
両だけに注
目する)と仮定して、機関車のどれを目撃するかは等確率だとするなら、特定の機関車
を目撃する機会は
1/
N
となる。
尤度関数は次のようになる。
class Train(Suite):
def Likelihood(self, data, hypo):
if hypo < data: ...