ここから本文です
OneSegの長寿と健康を願うひとりがき
新人間主義(新自由主義に対抗して); 法人(グローバル企業)に人権はない

書庫全体表示

ベルヌーイな世界の有様
 ベルヌーイな世界では 事象には 0 OR  1 の札が付けられている。
例えば A党支持派 なら 1 そうでなければ 0 という具合である。
 統計ソフトRでは 

  x1 <- rbinom(30,1,0.3)

 と書いて 3割の支持率がある世界から 30人のサンプルを抽出したことになる。 
 例えば x1 は
[1] 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0
である。 サンプルからの支持率は 6/30=0.2… となるが 0.3からはだいぶ遠い。
世界の実情(支持率=0.3という現実)はなかなか測りがたいが

Bern<-function(x,lambda){
  b<-1
  for(xi in x) b<- b* lambda^xi*(1-lambda)^(1-xi)
  b} 

 から 支持率=lambda の場合に、上のようなデータが抽出される確率を推定できる。尤度(ゆうど) likelifoodと呼んでいる。

データのみからの推計

 f<-function(l) -Bern(x1,l)
optimize(f,c(0,1))$minimum
[1] 0.2000167

 lambda=0.2 のとき データはもっともらしいということになる。
もっともサンプル数を増やせばBernを最大にするlは0.3に近づいてくる。

xk<-rbinom(1000,1,.3)
f<-function(l)-(Bern(xk,l))
optimize(f,c(0,1))$minimum
[1] 0.3039811

尤度のグラフを描けば以下のようになる。

Likelifood.Bern<-function(x){
  Lf<-NULL
  for(lambda in seq(0,1,0.01)){
    l<-(Bern(x,lambda))
    Lf<-rbind(Lf,c(lambda,l)) }
  Lf<-data.frame(lambda=Lf[,1],Likelifood=Lf[,2])
  s<-sum(Lf$Likelifood)
  Lf$Likelifood<-Lf$Likelifood/s
  Lf}
#
plot(Likelifood.Bern(xk),type="l",col=3,main="Likelihood distribution")
lines(Likelifood.Bern(x1),col=4)

イメージ 1

 青が n=30 緑が n=1000 の場合である。サンプル数が増えると隠された世界の値(0.3)に近づいてゆく。

思い込みと事後分布
 あらかじめ事前分布(経験 言い伝え 思い込み 占い 信念 お告げ など)が知られていれば パラメータまたは母数(ここでは平均値)の推定(事後分布)は効率的に(あまり手間と金をかけずに)できるだろう(できたらいいな)。
 ベーズによれば
 Posterior = Likelihood * Prior / Evidence
である。
 Likelihood = Π lambda^xi*(1-lambda)^(1-xi)
であったから Priorに数学的に形の似たBetaを使えば計算が楽になるのである(理論的に正しいと言っているわけではない)。
 Prior = beta(a,b)*renge^(a-1)*(1-renge)^(b-1)
もっともらしくConjugate Distributionなどと呼ぶ。

Beta<-function(a,b,renge=seq(0,1,0.01)){
        prob<-beta(a,b)*renge^(a-1)*(1-renge)^(b-1)
        data.frame(lambda=renge,prb=prob)}
plot(Beta(a=20,b=40),type="l",col=2,main="Distribution of the prior a=20 b=40")
イメージ 2

このとき(a=20,b=40 から得られる値はもっともらしく悪くない経験値であり)Posteriorの分布は以下のようである。

Posterior.Bern<-function(x,a,b,renge){
  prob<-NULL
  for(l in renge){
    p<-Bern(x=x,lambda=l)*Beta(a=a,b=b,renge=l)
    prob<-c(prob,p$prb)}
  sp<-sum(prob)      #1/k(x,c,d) const
  prob<- prob/sp     #Beta(c,d) prob
  data.frame(lambda=renge,prob=prob)}
#
Post1<-Posterior.Bern(x=x1,a=20,b=40,renge=seq(0,1,0.01))
Postk<-Posterior.Bern(x=xk,a=20,b=40,renge=seq(0,1,0.01))

plot(Postk$lambda,Postk$prob,type="l",col=3,main="Posterior distribution a=20, b=40")
lines(Post1$lambda,Post1$prob,col=4)
イメージ 3

 n = 30 でもLikelihoodよりはるかにましになっている。
 ところが予測がいい加減だととんでもないことになる。

Post1<-Posterior.Bern(x=x1,a=20,b=4,renge=seq(0,1,0.01))
Postk<-Posterior.Bern(x=xk,a=20,b=4,renge=seq(0,1,0.01))
plot(Postk$lambda,Postk$prob,type="l",col=3,main="Posterior distribution a=20, b=4")
lines(Post1$lambda,Post1$prob,col=4)
イメージ 4

Data数が多ければ妖言に惑わされることはないが、経験不足の時はまじめに努力しなければならないことがよくわかる。
ベイズはうっかり人生哲学になってしまった。
なんにでも意味を読み取ろうとするのは あまりいい趣味ではないかもしれない。
ちなみにこの時のBetaの分布は以下ようになる。
イメージ 5
 なるほど 右傾化し過ぎかもしれない。

参考:

  • 顔アイコン

    ...

    猫

    2016/7/3(日) 午後 5:58

  • 顔アイコン

    > 猫さん
    ...

    [ One_Seg (一弧) ]

    2016/7/5(火) 午前 0:11

  • アバター

    ちんぷんかんぷんです〜

    飛べ飛べみみとごろ

    2016/7/5(火) 午後 9:50

  • > 飛べ飛べみみとごろさん
    Deep Learning 機械学習 の基本なので コンピュータがやってくれますから 解らなくても 問題ありませんが 結構いいかげんな代物だということを 知っておく必要はあるでしょう。

    [ One_Seg (一弧) ]

    2016/7/5(火) 午後 11:27

One_Seg  (一弧)
One_Seg (一弧)
男性 / O型
人気度
Yahoo!ブログヘルプ - ブログ人気度について
友だち(20)
  • 取締られ役代表
  • helikiti娘[へりきち娘」
  • toshimi
  • SNOW
  • mas*k*12*1momo
  • 猫
友だち一覧
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

スマートフォンで見る

モバイル版Yahoo!ブログにアクセス!

スマートフォン版Yahoo!ブログにアクセス!

よしもとブログランキング

もっと見る
本文はここまでですこのページの先頭へ

[PR]お得情報

いまならもらえる!ウィスパーWガード
薄いしモレを防ぐパンティライナー
話題の新製品を10,000名様にプレゼント
ふるさと納税サイト『さとふる』
お米、お肉などの好きなお礼品を選べる
毎日人気ランキング更新中!
いまならもらえる!ウィスパーうすさら
薄いしモレを防ぐ尿ケアパッド
話題の新製品を10,000名様にプレゼント
コンタクトレンズで遠近両用?
「2WEEKメニコンプレミオ遠近両用」
無料モニター募集中!
ふるさと納税サイト『さとふる』
実質2000円で特産品がお手元に
11/30までキャンペーン実施中!

その他のキャンペーン

みんなの更新記事