从装有brms的模型中检索警告

问题描述 投票:0回答:1

我正在尝试在模型拟合后使用

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中所述),但这不是我在这种情况下寻求的解决方案。

如何提取这些警告?

r brms
1个回答
0
投票

我几乎可以肯定警告不会作为对象的一部分存储,因此如果您在拟合模型时没有自己存储它们,那么您就不走运了;该信息将不再可用。

为了尝试确认,我们可以查看存储/恢复的

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)
© www.soinside.com 2019 - 2024. All rights reserved.