brms::brm - 根据功能定义一些起始值

时间:2021-05-21 08:09:18

标签: r bayesian stan brms

我想仅为某些系数并根据函数手动设置 brms::brm 模型的起始值(不是:先验)。

我当前的代码是这样的(你可以忽略 x 变量和 unit,我只想操作 zas.factorF1 和 {{ 1}}):

as.factorF2

此代码有效;但是,我想手动设置一些起始值 (library(tidyverse) library(brms) df <- data.frame(x1 = rnorm(100, mean = 1, sd = 2), x2 = rnorm(100, mean = 2, sd = 2), x3 = rnorm(100, mean = 3, sd = 2), z = rnorm(100, mean = 4, sd = 2), Fa = wakefield::r_sample_factor(n = 100, x = c(1, 2, 3)), unit = wakefield::r_sample_factor(n = 100, x = 1:10), Y = rnorm(100, mean = 15, sd = 5) ) %>% tibble::tibble() brmsmodel <- brm(Y ~ as.factor(Fa) + # Fa has levels 1, 2, 3 x1 + x2 + x3 + z + (1 + x1 | unit), data = df, prior = c(prior(normal(0, 1), class = "b", coef = "z"), prior_string("normal(0, 1)", class = "b", coef = paste("as.factorFa", 2:3, sep=""))), chains = 1, iter = 25, warmup = 10, seed = 123, init = "0") ) 以从均匀分布 inits 中提取,类似于先验。

我想要这样的东西(伪代码)

(X ~ U[0,1])

唯一的其他类似 question 未得到答复,并且没有特别要求为 某些系数起始值调用函数

我只找到了 inits: 1) init = runif(0, 1), class = "b", coef = "z" 2) init = runif(0, 1), class = "b", coef = "as.factorFa2" 3) init = runif(0, 1), class = "b", coef = "as.factorFa2" other inits: random (将所有起始值设置为 0)或默认的 inits = "0"。有人可以建议如何做到这一点吗?提前致谢!

0 个答案:

没有答案