## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE ) ## ----------------------------------------------------------------------------- # code <- rtmb_code( # data = { # # 入力データの宣言 # }, # setup = { # # データ前処理 # }, # parameters = { # # 推定パラメータの宣言 # }, # transform = { # # パラメータやデータから作る派生量 # }, # model = { # # 尤度と事前分布 # }, # generate = { # # 推定後に計算したい生成量 # } # ) ## ----------------------------------------------------------------------------- # parameters = { # alpha <- Dim() # beta <- Dim(P) # sigma <- Dim(lower = 0) # r <- Dim(G, random = TRUE) # } ## ----------------------------------------------------------------------------- # transform = { # mu <- alpha + X %*% beta # } ## ----------------------------------------------------------------------------- # model = { # beta ~ normal(0, 10) # sigma ~ exponential(1) # Y ~ normal(mu, sigma) # } ## ----------------------------------------------------------------------------- # Y ~ normal(mu, sigma) ## ----------------------------------------------------------------------------- # lp <- lp + normal_lpdf(Y, mu, sigma) ## ----------------------------------------------------------------------------- # generate = { # y_rep <- rnorm(length(Y), mu, sigma) # } ## ----------------------------------------------------------------------------- # fit <- mdl$sample() ## ----------------------------------------------------------------------------- # fit <- mdl$optimize() ## ----------------------------------------------------------------------------- # fit <- mdl$variational() ## ----------------------------------------------------------------------------- # fit <- mdl$classic() ## ----------------------------------------------------------------------------- # parameters = { # alpha <- Dim() # tau <- Dim(lower = 0) # r <- Dim(G, random = TRUE) # } ## ----------------------------------------------------------------------------- # fit <- mdl$optimize(marginal = c("mean", "delta")) ## ----------------------------------------------------------------------------- # # 避けたい例 # if (sigma > 1) { # lp <- lp + normal_lpdf(y, 0, sigma) # } else { # lp <- lp + normal_lpdf(y, 0, 1) # }