RStanで平均値と分散をベイズで推定する

8月頭に東京にベイズの集中講義を聞き行ってから、結局何をしていいかわからず「進捗ダメです」状態だったのですが、RStanで平均値・分散を計算をしている記事を見つけたので実行してみることに。

ぶっちゃけ、タイトルに書いてあることをしたいなら元記事見てもらった方が100万倍良いです。あくまでやったことの記録

とりあえず普通に分散と平均値

dat <- read.csv("norm.csv",  header=TRUE, na.strings=".")
norm.mean <- mean(dat$D.1)
norm.var <-  sum((dat$D.1-mean(dat$D.1))^2)/(length(dat$D.1))
norm.mean
norm.var 


結果はこんな感じ。

ベイズ推定で

data{
  int N;
  real length_data[N];
}

parameters{
  real mu;
  real<lower=0> sigma;
}
model{
  for(i in 1:N)
    length_data[i] ~ normal(mu, sqrt(sigma));
}

写経したStanコード

library(rstan)
model.norm<- stan_model("norm-mean.stan")
fit_stan_1 <- stan(file = "norm-mean.stan",data = data_stan_1, seed = 1)
fit_stan_1

結果
通常のものとそんなに変わらない結果なのであってるかな?
まだ勉強始めたばっかなので、正解不正解もわからないという体たらく。

Source:Logics of Blue