
12
■
2
章
計算統計学
Pmf()
は、値なしの空
Pmf
を生成する。メソッド
Set
が、各値に確率
1/6
を設定する。
次は、文字列の中に各語がいくつ出現するか数えるという例である。
pmf = Pmf()
for word in word_list:
pmf.Incr(word, 1)
Incr
は、各語の「確率」
*
1
を
1
ずつ増やす。その語が
Pmf
になかったら、追加される。
私は、この例で、「確率」と、かぎ括弧で囲んだ。この確率が正規化されていない、
つまり、これらの確率の総和が
1
にならないからだ。したがって、これは本当の意味の
確率ではない。
しかし、この例で、語の出現回数は確率に比例する。したがって、すべての語を数
え上げた後で、各語の出現回数を全体の語数で割れば確率が求められる。
Pmf
は、そ
れをまさに行うメソッド
Normalize
を提供している。
pmf.Normalize()
Pmf
のオブジェクトに対しては、次のように値を指定して、その確率を求めることが
できる。
print pmf.Prob('the')
これは、語「
the
」の頻度を、語の表の中の割合として出力する。
Pmf
は、
Python
ディクショナリを使って値とその確率を保持するので、
Pmf
の中の値
は、ハッシュ可能な型であればよい。確率は、任意の数値型でよいが、普通は浮動小
数点数(型
float
)である。
2.2
クッキー問題
ベイズの定理の文脈では、
Pmf
を使って、仮説に確率を割り当てるのは自然なことで
ある。クッキー問題では、仮説は
B
1
と
B
2
で