brmsパッケージ(rstanラップパッケージ)で切断正規分布を指定したい

brmsパッケージの事前分布あるいはファミリーの分布について、忘れないようにメモしておく。 0切断正規分布(半正規分布;half normal distribution)を事前分布に指定したいときは以下のように事前分布を書く。 要するに、prior=のところで、lb= 0 で下限を0に設定する。 蛇足だが、ub= で上限を設定できる。 たぶんあってると思う。


fit<-brm(
  formula = y ~ x,
  family = gaussian(),
  data = dat,
  iter = 40000,
  warmup = 20000,
  chains = 4,
  seed = 1,
  prior = c(set_prior("normal(0,1000)",class = "b", lb = 0), 
            set_prior("normal(0,1000)", class = "Intercept")),
  save_all_pars = TRUE
)


   で次。0切断正規分布(半正規分布;half normal distribution)をファミリーに指定したいときは以下のように書く。 どうやらAdditional Response Informationという機能らしく、 trunc(lb = 0, up = 100)のようにして範囲を指定してやれる。lb= 0 で下限を0に設定する。ub= も入れると上限も設定できたりするようだ。 たぶんあってると思う。 ただ、0切断分布で収束しなけりゃ、対数正規分布とかガンマ分布とかワイブル分布とかも候補なのか・・・ 事後予測チェックでpp_check( fit )予測分布と観測データの適合度をチェックすると良いでしょう。 間違っていたらごめんなさい。

fit<-brm(
  formula = y|trunc(lb = 0) ~ x,  #今回はub=入れていない。
  family = gaussian(),
  data = dat,
  iter = 40000,
  warmup = 20000,
  chains = 4,
  seed = 1,
  save_all_pars = TRUE
)


  

コメント