「全ての確率はコイン投げに通ず」 japan.r 発表資料

Post on 16-Apr-2017

8.957 Views

Category:

Data & Analytics

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

全ての確率は コイン投げに通ず

2015/12/5 JapanR 発表資料 2015/12/15 基礎からのベイズ統計学輪読会 LT資料

Ken’ichi Matsui (@kenmatsu4)

自己紹介: @kenmatsu4・Facebookページ   https://www.facebook.com/matsukenbook ・Twitterアカウント   @kenmatsu4 ・Qiitaでブログを書いています(統計、機械学習、Python等)    http://qiita.com/kenmatsu4    (4600 contributionを超えました!)

・趣味    - バンドでベースを弾いたりしています。    - 主に東南アジアへバックパック旅行に行ったりします    (カンボジア、ミャンマー、バングラデシュ、新疆ウイグル自治区 etc) 旅行の写真 : http://matsu-ken.jimdo.com

Twitterアイコン

Pythonタグで1位に なりました!(>∀<人)

http://goo.gl/yxNJgQ

http://goo.gl/JNPfv3

http://goo.gl/0Tqgrd

http://www.slideshare.net/matsukenbook

本題です。

http://nbviewer.ipython.org/github/bakfoo/pyconjp/blob/master/probprog3.ipynb

結局,確率的プログラミングにおいて,プログラマがやることは,  • データを用意する  • パラメータの種類を決め,確率分布を決める  • パラメータ込みで事前分布を数式で表す  • パラメータ込みで尤度を数式で表す  • MCMCサンプリング法を選ぶ あとは計算機がMCMCサンプリングをして,パラメータの推定値を返す. 結局,事前分布や尤度の確率分布を上手にモデリングするには, 確率分布とその確率分布の関係をよく知っていなければならない.

柏野さん@PyconJP

なるほど!

そこで紹介されていたのが、

これ!

http://www.math.wm.edu/~leemis/2008amstat.pdf

これ!

http://www.math.wm.edu/~leemis/2008amstat.pdf

多いな! ((((;゚Д゚)))))))

これ!

http://www.math.wm.edu/~leemis/2008amstat.pdf

多いな! ((((;゚Д゚)))))))

76個あります

5分間で出来る限り 説明してみます!(`・ω・́)

今日はそのうち12個!

Let’s Start!!!

1/76 ベルヌーイ分布 Bernoulli Distribution

01: ベルヌーイ分布

表は1 裏は0

試行を1度行い、成功か失敗など2値例:コイン投げ

確率関数

P (X = x) = p

x(1� p)1�x

(x = 0, 1)

パラメーターp:1 (表) が出る確率

01: ベルヌーイ分布

#  ベルヌーイ分布からのサンプリングを実行  

#  パラメーター  p  =  0.7  trial_size  =  10000  set.seed(71)  

#  ベルヌーイ分布に従う乱数生成  data  <-­‐  rbern(trial_size,  p)  

#  ベルヌーイ分布の確率分布  dens  <-­‐  data.frame(y=c((1-­‐p),p)*trial_size,  x=c(0,  1))  

#  グラフ描画  ggplot()  +          layer(data=data.frame(x=data),  mapping=aes(x=x),  geom="bar",                      stat="bin",  bandwidth=0.1  )  +  layer(data=dens,  mapping=aes(x=x,  y=y),  geom="bar",                      stat="identity",  width=0.05,  fill="#777799",  alpha=0.7)  

Rコード

紫:理論的な確率 黒:乱数から生成したヒストグラム

ここで、 もう一度タイトルを

全ての確率は コイン投げに通ず

2015/12/5 JapanR 発表資料

Ken’ichi Matsui (@kenmatsu4)

全ての確率は コイン投げに通ず

2015/12/5 JapanR 発表資料

Ken’ichi Matsui (@kenmatsu4)

これから、このコイン投げ (ベルヌーイ分布)を起点として

様々な確率分布に従う 乱数を作っていきます。

2/76 二項分布 Binomial Distribution

02: 二項分布

ベルヌーイ試行をn回実施し、何回成功したかの回数 を確率変数とした分布。

例:フリースロー 1セット30回実施。   1回あたりの成功率70%で計何回入ったか

確率関数

パラメーター

p:1 (表) が出る確率 [フリースローの成功確率]

P (X = x) =n

C

r

p

x(1� p)n�x

n:1セットあたりの回数

(x = 1, 2, · · · , n)

02: 二項分布

n回実施

表の出た回数 x

コイン投げ(表の確率: p)

02: 二項分布

#  パラメーター  p  =  0.7  trial_size  =  10000  sample_size  =  30  set.seed(71)  

#  ベルヌーイ分布に従う乱数生成  gen_binom_var  <-­‐  function()  {      return(sum(rbern(sample_size,  p)))  }  result  <-­‐  rdply(trial_size,  gen_binom_var())  

#  二項分布の密度関数  dens  <-­‐  data.frame(y=dbinom(seq(sample_size),                                          sample_size,  0.7))*trial_size  

#  グラフ描画  ggplot()  +      layer(data=resuylt,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",      binwidth=1,  fill="#6666ee",  color="gray"  )  +  layer(data=dens,  mapping=aes(x=seq(sample_size)+.5,  y=y),            geom="line",  stat="identity",  position="identity",colour="red"      )  +  ggtitle("Bernoulli  to  Binomial.")  

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

Rコード

3/76 ポワソン分布 Poisson Distribution

03: ポワソン分布1セット回数 n → ∞ 、1回あたり成功率 p → 0 npを一定とした時の分布例:棒の傷のチェックを考える。1cm幅で傷の有無を を調べる。ベルヌーイ試行の繰り返し → 二項分布 → 無限に分割してポアソン分布。

1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm

10cm 全部で傷が7つ

0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm 0.5cm

∞ に分割

確率関数

パラメーター

この例の場合、棒一本あたりの傷の平均的な数λ:平均生起回数

P (X = x) =e

��

x

x!(x = 1, 2, · · · ,1)

( λ = np の関係が保たれている)

棒1本あたりの傷の数 の分布→ポアソン分布

上限がなくなった!

03: ポアソン分布

n回実施

03: ポアソン分布コイン投げ(表の確率: p)

np一定で n→∞

03: ポアソン分布

trial_size  =  5000;  width  <-­‐  1;  #  もともとの問題設定  p  =  0.7;  n  =  10;  np  <-­‐  p*n  #  n→∞、p→0、np=一定    n  =  100000;  p  <-­‐  np/n  

#  ベルヌーイ分布に従う乱数生成  gen_binom_var  <-­‐  function()  {      return(sum(rbern(n,  p)))  }  result  <-­‐  rdply(trial_size,  gen_binom_var())  

#  ポアソン分布の密度関数  dens  <-­‐  data.frame(y=dpois(seq(20),  np))*trial_size  

#  グラフ描画  ggplot()  +      layer(data=result,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(20)+.5,  y=y),                            geom="line",  stat="identity",  position="identity",  colour="red"      )  +  ggtitle("Bernoulli  to  Poisson.")  

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

Rコード

4/76 正規分布 Normal Distribution

04: 正規分布

二項分布のnを大きくすると正規分布で近似できる。

確率密度関数

パラメーター

σ:標準的偏差μ:平均値

f(x) =

1p2⇡�

2exp

⇢�1

2

(x� µ)

2

2

(�1 < x < 1)

例:死ぬまでフリースロー投げて計何回入ったか

04: 正規分布 (ポアソン分布との違い)

1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm

10cm

1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm

20cm

1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm

1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm

→ ∞ cm

1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm

延々と伸ばす

n回実施コイン投げ(表の確率: p)

n → ∞

04: 正規分布

04: 正規分布

#  パラメーター  n  <-­‐  10000;  p  <-­‐  0.7;  trial_size  =  10000  width=10  

#  ベルヌーイ分布に従う乱数生成  gen_binom_var  <-­‐  function()  {      return(sum(rbern(n,  p)))  }  result  <-­‐  rdply(trial_size,  gen_binom_var())  

#  正規分布の密度関数  dens  <-­‐  data.frame(y=dnorm(seq(6800,7200),  mean=n*p,                                                          sd=sqrt(n*p*(1-­‐p)))*trial_size*width)  

#  グラフ描画  ggplot()  +      layer(data=result,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(6800,7200),  y=y),                            geom="line",  stat="identity",  position="identity",                            colour="red")  +  ggtitle("Bernoulli  to  Normal.")  

Rコード

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

5/76 標準正規分布 Standard Normal Distribution

05: 標準正規分布

正規分布を平均0、標準偏差1にしたもの

確率密度関数

パラメーターなし

(�1 < x < 1)

f(x) =

1p2⇡

exp

⇢�1

2

x

2

n回実施コイン投げ(表の確率: p)

n → ∞

05: 標準正規分布

平均を0にずらす

標準偏差を1に 縮める

05: 標準正規分布

#  パラメーター  n  <-­‐  10000;  p  <-­‐  0.7  trial_size  =  30000  width=0.18  

#  ベルヌーイ分布に従う乱数生成  gen_binom_var  <-­‐  function()  {      return(sum(rbern(n,  p)))  }  result  <-­‐  rdply(trial_size,  gen_binom_var())  m  <-­‐  mean(result$V1);  sd  <-­‐  sd(result$V1);  result  <-­‐  (result  -­‐  m)/sd  

#  標準正規分布の密度関数  dens  <-­‐  data.frame(y=dnorm(seq(-­‐4,4,0.05),  mean=0,                                                          sd=1)*trial_size*width)  

#  グラフ描画  ggplot()  +      layer(data=result,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(-­‐4,4,0.05),  y=y),                            geom="line",  stat="identity",  position=“identity",                          colour="red"      )  +  ggtitle("Bernoulli  to  Standard  Normal.")  

Rコード

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

6/76 カイ二乗分布 Chi Square Distribution

06: カイ二乗分布標準正規分布に従う確率変数 を2乗してk個 足し合わせた                  が従う分布確率密度関数

パラメーターk:自由度 (2乗した標準正規分布の確率変数の       足し合わせた数)

f(x, k) =(1/2)k/2

�(k/2)x

k/2�1e

�x/2

(0 x)

Xi

Z = X21 + · · ·+X2

k

平均を0にずらす

n回実施コイン投げ(表の確率: p)

n → ∞

06: カイ二乗分布

平均を0にずらす

標準偏差を1に 縮める

平均を0にずらす

k=1のとき

二乗したところに積んでいく

k=3のとき

k=3つ サンプリングする

k=3つの長さを 足したものを プロットする

05: カイ二乗分布

#  パラメーター  p  <-­‐  0.7;  n  <-­‐  1000;  trial_size  <-­‐  100000;  width  <-­‐  0.3;  df  <-­‐  3  #  ベルヌーイ分布に従う乱数生成(3まわし)  gen_binom_var  <-­‐  function()  {      return(sum(rbern(n,  p)))  }  gen_chisq_var  <-­‐  function()  {      result  <-­‐  rdply(trial_size,  gen_binom_var())      return(((result$V1  -­‐  mean(result$V1))/sd(result$V1))**2)  }  #  自由度dfの分だけ生成する  result  <-­‐  rlply(df,  gen_chisq_var(),.progress  =  "text")  res  <-­‐  data.frame(x=result[[1]]  +  result[[2]]  +  result[[3]])  #  カイ二乗分布の密度関数(自由度=3)  xx  <-­‐  seq(0,20,0.1)  dens  <-­‐  data.frame(y=dchisq(x=xx,  df=df)*trial_size*width)  #  グラフ描画  ggplot()  +  layer(data=data,  mapping=aes(x=x),  geom="bar",  stat  =  "bin",                                    binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=xx,  y=y),                            geom="line",  stat="identity",  position="identity",                                      colour="blue"    )  +  ggtitle("Bernoulli  to  Chisquare")  

Rコード

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

7/76 指数分布 Exponential Distribution

07: 指数分布ポアソン分布が単位長(もしくは単位時間)に平均 何回生起するか、を表す分布であったが、同じ事象 を違う角度で捉え直したのが指数分布。

1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm 1cm

10cm 全部で傷が7つポアソン分布的考え方

指数分布的考え方

次発生するまでに、どのくらいの距離(時間)か

07: 指数分布

確率密度関数

パラメーター

λ:単位長(時間)に平均的に生起する回数

f(x,�) =

⇢�e

��x (x � 0)0 (x < 0)

n回実施コイン投げ(表の確率: p)

np一定で n→∞

07: 指数分布

平均を0にずらす

間隔の長さをプロット

trial_size  =  7000;  width  <-­‐  .01;  #  もともとの問題設定  p  =  0.7;  n  =  10;  np  <-­‐  p*n;    #  n→∞、p→0、np=一定    n  =  10000;  p  <-­‐  np/n  #  ベルヌーイ分布に従う乱数生成  gen_exp_var  <-­‐  function()  {      cnt  <-­‐  0      while  (TRUE)  {          cnt  <-­‐  cnt  +  1          if  (rbern(1,  p)==1){              return(cnt)    #  1が出たらそれが何回目かを返す          }      }  }  data  <-­‐  data.frame(x=rdply(trial_size,  gen_exp_var())/n)  names(data)  <-­‐  c("n",  "x")  #  指数分布の密度関数  dens  <-­‐  data.frame(y=dexp(seq(0,  1.5,  0.1),  np)*trial_size*width)  ggplot()  +      layer(data=data,  mapping=aes(x=x),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )    +  layer(data=dens,  mapping=aes(x=seq(0,  1.5,  0.1),  y=y),                              geom="line",  stat="identity",  position="identity",  colour="red"    )  +  ggtitle("Bernoulli  to  Exponential.")

Rコード

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

07: 指数分布

8/76 ガンマ分布 Gamma Distribution

08: ガンマ分布

確率密度関数

パラメーター単位長(時間)あたりβ回発生する指数分布の α個の和の確率分布を考えた時、ガンマ分布となる

f(x,↵,�) =

�(↵)

x

↵�1exp(��x)

(0 x < 1)

↵X

i=1

Xi ⇠ �(↵,�)Xi ⇠ Exp(�)

n回実施コイン投げ(表の確率: p)

np一定で n→∞

平均を0にずらす

08: ガンマ分布

間隔の長さをプロット

k=5つの長さを 足したものを プロットする

k=5つサンプリング

trial_size  =  7000;  width  <-­‐  .035;  #  もともとの問題設定  p  =  0.7;  n  =  10;  np  <-­‐  p*n;  #  n→∞、p→0、np=一定    n  =  10000;  p  <-­‐  np/n;  alpha  <-­‐  5  #  ベルヌーイ分布に従う乱数生成  get_interval  <-­‐  function(){      cnt  <-­‐  0      while  (TRUE)  {          cnt  <-­‐  cnt  +  1          if  (rbern(1,  p)==1){  return(cnt)  }      }  }  gen_exp_var  <-­‐  function()  {      data  <-­‐  data.frame(x=rdply(trial_size,  get_interval())/n)      names(data)  <-­‐  c("n",  "x")      return(data)  }  result  <-­‐  rlply(alpha,  gen_exp_var())  data  <-­‐  data.frame(x=result[[1]]$x  +  result[[2]]$x  +  result[[3]]$x  +  result[[4]]$x  +  result[[5]]$x)  #  ガンマ分布の密度関数  dens  <-­‐  data.frame(y=dgamma(seq(0,  3,.01),  shape=alpha,  rate=np)*trial_size*width)  ggplot()  +      layer(data=data,  mapping=aes(x=x),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(0,3,.01),  y=y),                              geom="line",  stat="identity",  position="identity",  colour="red"      )  +  ggtitle("Bernoulli  to  Gamma") Rコード

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

08: ガンマ分布

9/76 逆ガンマ分布 Inverse Gamma Distribution

09: 逆ガンマ分布

確率密度関数

パラメーター

f(x,↵,�) =

�(↵)

x

�(↵+1)exp

✓�

x

(0 x < 1)

単位長(時間)あたりβ回発生する指数分布のα個の和の 確率分布を考えた時、ガンマ分布となる

Xi ⇠ Exp(�) Z =↵X

i=1

Xi ⇠ �(↵,�)

1/Z ⇠ IG(↵,�)この時、Zの逆数が従う分布を逆ガンマ分布と言う。

平均を0にずらす

n回実施コイン投げ(表の確率: p)

np一定で n→∞

平均を0にずらす

間隔の長さをプロット

09: 逆ガンマ分布

k=5つの長さを 足したものを プロットする

k=5つ サンプリング

全てのデータをy=1/x で変換

z

z

ww

trial_size  =  7000;  width  <-­‐  .;  #  もともとの問題設定  p  =  0.7;  n  =  10;  np  <-­‐  p*n;  #  n→∞、p→0、np=一定    n  =  10000;  p  <-­‐  np/n;  alpha  <-­‐  5  #  ベルヌーイ分布に従う乱数生成  get_interval  <-­‐  function(){      cnt  <-­‐  0      while  (TRUE)  {          cnt  <-­‐  cnt  +  1          if  (rbern(1,  p)==1){  return(cnt)  }      }  }  gen_exp_var  <-­‐  function()  {      data  <-­‐  data.frame(x=rdply(trial_size,  get_interval())/n)      names(data)  <-­‐  c("n",  "x")      return(data)  }  result  <-­‐  rlply(alpha,  gen_exp_var())  data  <-­‐  data.frame(x=1/(result[[1]]$x  +  result[[2]]$x  +  result[[3]]$x  +                                                    result[[4]]$x  +  result[[5]]$x))  #  逆ガンマ分布の密度関数  dens  <-­‐  data.frame(y=dinvgamma(seq(0,  23,.01),  shape=5,  rate=1/np)*trial_size*width)  ggplot()  +      layer(data=data,  mapping=aes(x=x),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=seq(0,3,.01),  y=y),                              geom="line",  stat="identity",  position="identity",  colour="red"      )  +  ggtitle("Bernoulli  to  Inversegamma") Rコード

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

09: 逆ガンマ分布

10/76 標準一様分布 Standard Uniform Distribution

10: 標準一様分布

確率密度関数

パラメーター

なし

0から1の間で等確率で発生するような現象を 表す分布

f(x) =

⇢1 (0 x 1)

0 (otherwise)

10: 標準一様分布コイン投げ(表の確率: p) q回実施

試行結果を各桁に割り当て

表=1 裏=0 表=1 裏=0 表=1 裏=01回目 2回目 q回目

※ もっと効率の良いやり方もあると思いますが分かりやすさのため…

Z = x1(1/2)1 + x2(1/2)

2 + · · ·+ xq(1/2)q

width  <-­‐  0.02  p  <-­‐  0.5;  sample_size  <-­‐  1000  trial_size  <-­‐  100000  

gen_unif_rand  <-­‐  function()  {      #  sample_size桁の2進少数をベルヌーイ分布に  

   #  従う乱数から生成      return  (sum(rbern(sample_size,  p)  *  (rep(1/2,  sample_size)                        **  seq(sample_size))))  }  

gen_rand  <-­‐  function(){          return(  rdply(trial_size,  gen_unif_rand())  )  }  system.time(res  <-­‐  gen_rand())  

ggplot()  +      layer(data=res,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  ggtitle("Bernoulli  to  Standard  Uniform")  

Rコード

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

10: 標準一様分布

11/76 一様分布 Standard Uniform Distribution

確率密度関数

パラメーター

a:下限b:上限

f(x, a, b) =

⇢(b� a)

�1(a x b)

0 (otherwise)

aからbの間では等確率で発生するような現象を 表す分布

11: 一様分布

コイン投げ(表の確率: p)

q回実施11: 一様分布

平行移動と引き延ばし

a  <-­‐  5  b  <-­‐  8;  width  <-­‐  0.05  p  <-­‐  0.5  sample_size  <-­‐  1000  trial_size  <-­‐  500000  

gen_unif_rand  <-­‐  function()  {      #  sample_size桁の2進少数をベルヌーイ分布に  

   #  従う乱数から生成      return  (sum(rbern(sample_size,  p)  *  (rep(1/2,  sample_size)                        **  seq(sample_size))))  }  

gen_rand  <-­‐  function(){          return(  rdply(trial_size,  gen_unif_rand())  )  }  system.time(res  <-­‐  gen_rand())  res$V1  <-­‐  res$V1  *  (b-­‐a)  +  a  

ggplot()  +    layer(data=res,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  ggtitle("Bernoulli  to  Uniform")  +  xlim(4,9)

Rコード

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

11: 一様分布

12/76 ベータ分布 Beta Distribution

12: ベータ分布

確率密度関数

パラメーターα:並べ替えたあとのサンプリングするポジションβ:同じくポジションだが、後ろから数えたときのもの

f(x,↵,�) =1

B(↵,�)x

↵�1(1� x)��1

(0 < x < 1)

独立に標準一様分布に従う (α+β-1) 個の確率変数

を大きさの順に並べ替えたとき、小さい方から α番め(大きい方からは β番目)の確率変数 X の分布がベータ分布 B(α,β) となる。

→ B(・)はベータ関数

Xi ⇠ U(0, 1)iid (i = 1, 2, · · · ,↵+ � � 1)

… …α個

β個

コイン投げ(表の確率: p)

q回実施12: ベータ分布

大きさの順に並べて 2つめの値をプロット

3つサンプリング

width  <-­‐  0.03;  p  <-­‐  0.5  digits_length  <-­‐  30;  set_size  <-­‐  3  trial_size        <-­‐  30000  gen_unif_rand  <-­‐  function()  {      #  digits_length桁の2進少数をベルヌーイ分布  

   #  に従う乱数から生成      return  (sum(rbern(digits_length,  p)  *        (rep(1/2,  digits_length)  **          seq(digits_length))))  }  gen_rand  <-­‐  function(){          return(  rdply(set_size,  gen_unif_rand())$V1  )  }  

unif_dataset  <-­‐  rlply(trial_size,  gen_rand,  .progress='text')  p  <-­‐  ceiling(set_size  *  0.5);  q  <-­‐  set_size  -­‐  p  +  1  get_nth_data  <-­‐  function(a){  return(a[order(a)][p])  }  disp_data  <-­‐  data.frame(lapply(unif_dataset,  get_nth_data))  names(disp_data)  <-­‐  seq(length(disp_data));  disp_data  <-­‐  data.frame(t(disp_data))  names(disp_data)  <-­‐  "V1"  x_range  <-­‐  seq(0,  1,  0.001)  

dens  <-­‐  data.frame(y=dbeta(x_range,  p,  q)*trial_size*width)  ggplot()  +      layer(data=disp_data,  mapping=aes(x=V1),  geom="bar",  stat  =  "bin",                  binwidth=width,  fill="#6666ee",  color="gray"      )  +  layer(data=dens,  mapping=aes(x=x_range,  y=y),                            geom="line",  stat="identity",  position="identity",  colour="red"      )  +  ggtitle("Bernoulli  to  Beta")   Rコード

赤の曲線:理論的な確率 ヒストグラム:乱数から生成

12: ベータ分布

To be continued…

参考このスライドのRのコード https://gist.github.com/matsuken92/671ae282429d6ad97aec

工科系のための統計概論 http://www.amazon.co.jp/dp/4563008168

指数分布とポアソン分布のいけない関係 http://www.slideshare.net/teramonagi/ss-11296227

ベータ分布の性質 http://www.kwansei.ac.jp/hs/z90010/sugakuc/toukei/beta/beta.htm

top related