问题描述
我想仅为某些系数并根据函数手动设置 brms::brm
模型的起始值(不是:先验)。
我当前的代码是这样的(你可以忽略 x
变量和 unit
,我只想操作 z
和 as.factorF1
和 {{ 1}}):
as.factorF2
此代码有效;但是,我想手动设置一些起始值 (library(tidyverse)
library(brms)
df <- data.frame(x1 = rnorm(100,mean = 1,sd = 2),x2 = rnorm(100,mean = 2,x3 = rnorm(100,mean = 3,z = rnorm(100,mean = 4,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,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)",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,coef = "z"
2) init = runif(0,coef = "as.factorFa2"
3) init = runif(0,coef = "as.factorFa2"
other inits: random
(将所有起始值设置为 0)或默认的 inits = "0"
。有人可以建议如何做到这一点吗?提前致谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)