2015年10月24日土曜日

ベイズの基礎:課題19-11,13 平均文字数 / 文

標準偏差 for Normal Prior Part2 からの続き。

今回の課題19-1119-13 はセットで、19-11 の 標準偏差 for Normal Prior Part1 で示した手順で事前確率を仮定する。19-13 では、その事前確率を使って 標準偏差 for Normal Prior Part2 の手順で事後確率を求める。

ちなみに、今回でトピック19 は終了で、次回からトピック20


Activity 19-11: Average Sentence Length of Shakespeare’s Plays

課題:William Shakespeare の著作の本で、一文あたりの単語数の平均と、90%の確率であり得る平均単語数を仮定して、正規分布をグラフで示せ。

最後の「90%の確率」の意味は「平均単語数がある単語数以下である確率が90%」。少しややこしい表現だが、原文は以下の通り
Make a guess at M90, the value such that you are 90 percent confident that the average sentence length is smaller than that value.

つまり、平均単語数が 100 以下であるのは、ほぼ間違いない確率(そんな長い1文は通常ありえない)。ではその確率を 90% まで落とした時に平均単語数の長さはどの程度になっているか、ということ。50 とした場合、50より大きい平均になる確率は 10% 以下ということ。

さて、課題に取り組む。

私は Shakespeare の本を読んだことがないが、一般的な英文の長さから 15 と仮定した。しかし「90%の確率の平均」は全く想像がつかないので、平均の 2倍の 30 とした。よって

 m0 = 15, M90 = 30

と仮定。

本来は、適当な Shakespeare の本か、同年代の作家の本を元に m0 と M90 を仮定すべきかもしれないが、今回は「楽な」方法を採用。

左の 標準偏差 for Normal Prior Part1 で紹介した標準偏差 h0 の算出方法に従い求める。

(h0 <- (30 - 15)/(qnorm(0.9,0,1)))
## [1] 11.70456
この事前確率の正規分布は左のようになる。マイナス値も含むかなり「弱い確信」の分布となってしまった。

curve(dnorm(x,15,h),
 from=-25,to=60,n=100,
 xlab="M",ylab="",
 main="Normal Prior for Actiivty 19-11")
text(-10,0.03,"M=15,h0=11.7")

Activity 19-13: Average Sentence Length of Shakespeare (Continued.)

課題:William Shakespeare 著 "The Taming of The Shrew" から無作為に選んだ 20ページの最初のセンテンスの単語数が以下の通りだった


15 6 8 13 34 23 6 23 18 4 2 15 6 4 5 17 38 17 9 7


課題19-11 より m0 = 15, h0 = 11.70456、そして上記観測データを使って、左の手順で事後確率を算出する(標準偏差 for Normal Prior Part2 参照)。


> h0
[1] 11.70456
>  m0 <- 15
>  c0 <- 1/h0^2
>  cD <- length(x)/var(x)
>  c1 <- c0 + cD
>  m1 <- (c0*m0+cD*mean(x))/c1
>  h1 <- 1/sqrt(c1)
>  m1; h1
[1] 13.55274
[1] 2.194673
> curve(dnorm(x,m1,h1),from=11,to=16,n=100,xlab="M",ylab="",main="Normal Prior for Activitiy 19-2")
> text(7.5,0.15,"M=13.6,h=2.2")

 事前確率:M=15, h=11.7
 事後確率:M=13.5, h=2.2

標準偏差の小ささに驚いた。まぁ、事前確率の標準偏差が大きすぎた気もするが...。

二つをY軸目盛りを比較すれば精度の違い一目瞭然だが、一応二つを重ねる。
> curve(dnorm(x,m1,h1),from=-25,to=60,n=1000,xlab="M",ylab="",col="red")
> curve(dnorm(x,m0,h0),from=-25,to=60,n=1000,xlab="M",ylab="",add=T)
> text(-10,0.05,"M=15,h=11.7")
> text(22,0.15,"M=13.6,h=2.2",col="red")

課題20-1 Controlled Experiment の重要性 に続く。

0 件のコメント:

コメントを投稿