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
)
コメント