我正在尝试在模型拟合后使用
brms::brm()
函数提取在拟合贝叶斯模型期间生成的警告。
以以下模型为例:
mdl <- brms::brm(Sepal.Length ~ Sepal.Width*Petal.Length*Petal.Width,
data = iris, seed = 123)
saveRDS(mdl, file = 'mdl.rds')
安装后,我收到两条警告消息:
Warning messages:
1: There were 8 transitions after warmup that exceeded the maximum treedepth. Increase max_treedepth above 10. See
https://mc-stan.org/misc/warnings.html#maximum-treedepth-exceeded
2: Examine the pairs() plot to diagnose sampling problems
现在,如果我保存模型并重新启动会话,我希望能够从
mdl
对象检索这些警告。我无法使用以下命令检索警告:
mdl <- readRDS(file = 'mdl.rds')
mdl # The warnings do not show up
warnings(mdl)
我的目标是从一系列包含带有
brm()
的模型的 .rds 文件中检索警告。我知道我可以在拟合过程中将警告与模型一起保存(如我之前的post中所述),但这不是我在这种情况下寻求的解决方案。
如何提取这些警告?
我几乎可以肯定警告不会作为对象的一部分存储,因此如果您在拟合模型时没有自己存储它们,那么您就不走运了;该信息将不再可用。
为了尝试确认,我们可以查看存储/恢复的
brmsfit
对象的元素名称:
names(mdl)
[1] "formula" "data" "prior" "data2" "stanvars" "model"
[7] "ranef" "save_pars" "algorithm" "backend" "threads" "opencl"
[13] "stan_args" "fit" "basis" "criteria" "file" "version"
[19] "family" "autocor" "cov_ranef" "stan_funs" "data.name"
我们还可以查看
str(mdl)
的输出。这是大量的,所以我将在输出中搜索字符串“warn”(但没有找到它):
capture.output(str(mdl)) |>
grep(pattern = "warn", ignore.case = TRUE, value = TRUE)
## character(0)