序
『R によるモンテカルロ法入門』p.177 の例題をやります.
『R によるモンテカルロ法入門』は書き方に省略が多くて意味がわからないところがけっこうあるので『計算統計学の方法』pp.82-pp.88 もあわせて参照しています.
- 作者: C.P.ロバート,G.カセーラ,石田基広,石田和枝
- 出版社/メーカー:丸善出版
- 発売日: 2012/08/23
- メディア:ムック
- 購入: 1人 クリック: 23回
- この商品を含むブログ (2件) を見る
計算統計学の方法―ブートストラップ・EMアルゴリズム・MCMC (シリーズ予測と発見の科学 5)
- 作者:小西貞則,越智義道,大森裕浩
- 出版社/メーカー:朝倉書店
- 発売日: 2008/03/25
- メディア:単行本
- 購入: 5人 クリック: 62回
- この商品を含むブログ (7件) を見る
どっちか買うとしたら『計算統計学の方法』がおすすめです。
本文
観測値 が得られたとます.
対応する確率変数 は, 各カテゴリの発現確率が の多項分布に従います.
第一カテゴリの観測 はふたつのカテゴリからの観測 , の和 だと考えます. 確率変数 は発現確率 の多項分布に従うとします.
の確率関数は,
です.
完全な観測 が得られたとして, の対数尤度は
この対数尤度の条件付き期待値は
ここで, 観測 が得られたという条件のもとでの の条件付き分布は, サイズ , 確率
の二項分布になります.
よって
を に関して最大化するには, で微分して 0 と置いて解けばよいのでパラメータの更新式は,
となります.
モンテカルロ EM では期待値 を以下の経験平均で置き換えます.
はサイズ , 確率 の二項分布からシミュレーションします.
練習問題
上記の設定で, を初期値として EM 系列をプロットします.
また MCEM 系列を1000回シミュレーションして, 分散のレンジをプロットします.
y <- c(125,18,20,34) EM <-function(y,theta0){ theta_history <- theta0 for(i in1:100){ z <- y[1]*(theta0/(2+theta0)) den <- z+y[4] num <- z+y[2]+y[3]+y[4] theta1 <- den/num theta_history <- c(theta_history,theta1)if(abs(theta1-theta0)<1e-6)break theta0 <- theta1 }list(theta=theta1,theta_history=theta_history,iterations=i)} res1 <-EM(y,0.5) it <-res1$iterations m <-100 theta0 <-0.5 theta_history <-matrix(,it+1,1000) theta_history[1,]<- theta0 set.seed(1234)for(i in1:it){ z <- rbinom(1000,size=m*y[1],prob=theta0/(2+theta0))/m den <- z+y[4] num <- z+y[2]+y[3]+y[4] theta1 <- den/num theta_history[i+1,]<- theta1 theta0 <- theta1 } upper=apply(theta_history,1,max) lower=apply(theta_history,1,min) ggplot()+ geom_line(aes(x=0:it,y=res1$theta_history))+ geom_ribbon(aes(x=0:it,ymax=upper,ymin=lower),alpha=0.3)+ xlab("iterations")+ylab("MCEM sequences")+ theme_grey(20)