Created by Yoshitake TAKEBAYASHI / @psycle44
Noma, H. Statist. Med. 2011, 30 3304–3312
$$N(θ,σ^2)$$
$$\ f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-θ)^2}{2\sigma^2}} $$ 平均(θ)と分散(σ^2) で分布の型が決まる
P(D|θ)が最大になるθを推定する P(D|θ)=ある母数(θ)の下でデータ(D)が得られる確率
P(θ|D)を推定する P(θ|D)=あるデータ(D)の下で母数(θ)が得られる確率
P(D|θ)が最大になるθを推定する
信頼区間の意味
何度も観測を繰り返せば 95%の確率で真値がこの範囲に入る
真値は一定で観測が確率的に変動する
P(θ|D)を推定する
信用区間の意味
$$P(θ|D)$$
はどう求めるのか?MarcovChainMonteCarlo Methods
step1: x1の初期値を指定する step2: x2を初期値で固定し, x1をサンプリング step3: x1をstep2の値に固定し, x2をサンプリング step4: x2をstep3の値に固定して, x1をサンプリング 以下、 step3,4を繰り返す。
MCMCによるサンプリングが適切であれば定常分布に収束する
定常分布: 初期値を変えても必ず同一の分布に達する
サンプリング初期は不安定なので推定に使わない
stanはデフォルトで半分捨てる
1.01を越えなければ良い
chain間の分散がchain内の分散より小さいと1に近づく
chain間の差を検討
MCMCの最初の方と最後の方の平均に差がないか検定 Z値が±1.96以内に入っていれば差はない→収束してる
自己相関が5を超えると良くない
①データを表現する統計モデルの記述 ②パラメータの事前分布を設定 ③MCMCの実行 ④収束診断 ⑤事後分布の解釈
$$f(Y)=α+βX+ε$$
Yは正規分布
$$f(Y)=N(α+βX,ε)$$
αとβの分布について情報なし
library(rstan)
N <- 500
x <- rnorm(N, mean = 50, sd = 10)
y <- 10 + 0.8 * x + rnorm(N, mean =0, sd = 7)
stancode <- '
data{ int N;
real x[N];
real y[N];
}
parameters { real alpha;
real beta;
real s;
}
model{ for(i in 1:N)
y[i] ~ normal(alpha + beta * x[i], s); #推定するモデル
alpha ~ normal(0, 100); #パラメータの事前分布
beta ~ normal(0, 100); #パラメータの事前分布
s ~ inv_gamma(0.001, 0.001);
}
'
世界で二番目に簡単なStanコード
datastan <- list(N=N, x=x, y=y)
fit <- stan(model_code = stancode,data=datastan,iter=5000,chain=4)
my_shinystan <- as.shinystan(fit)
launch_shinystan(my_shinystan)
事後分布・自己相関
トレースプロット
ベイズ推定の報告の仕方