
■
21
3
章
推定
3.1
サイコロ問題
4
面のサイコロ、
6
面のサイコロ、
8
面のサイコロ、
12
面のサイコロ、
20
面のサイコ
ロの入った箱を持っているとする。
Dungeons & Dragons
というゲームをしたことがあ
れば、言いたことがわかるだろう。
箱からサイコロをランダムに選んで、振って、
6
が出たとする。各サイコロを振った
確率は、どうなるか。
このような問題に取り組む
3
ステップ戦略を示そう。
1.
仮説の表現を選ぶ。
2.
データの表現を選ぶ。
3.
尤度関数を書く。
これまでの例では、文字列を使って仮説とデータを表したが、このサイコロ問題では
数を使う。具体的には、整数
4, 6, 8, 12, 20
で仮説を表す。
suite = Dice([4, 6, 8, 12, 20])
そして、
1
から
20
の整数でデータを表す。こういう表現だと、尤度関数が簡単になる。
class Dice(Suite):
def Likelihood(
self, data, hypo):
if hypo < data:
return 0
else:
return 1.0/hypo