首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >brms模型不收敛

brms模型不收敛
EN

Stack Overflow用户
提问于 2017-10-18 01:32:22
回答 1查看 716关注 0票数 0

我有这个brms模型

代码语言:javascript
复制
library(brms)
library(dplyr)
x = rep( c(-20:20,-20:20), 5)
y = c(x[1:41]^2, (x[42:82]+5)^2)
group = c(rep("A",41), rep("B",41) )
data = data.frame( x= x, y = y , group = group)
f = brm(y~ gp(x, cov ="exp_quad") +(1|group), data = data, control = list( adapt_delta = .95) )
f

而且模型也不符合。我得到了这个错误

代码语言:javascript
复制
Warning messages:
1: The model has not converged (some Rhats are > 1.1). Do not analyse the results! 
We recommend running more iterations and/or setting stronger priors. 
2: There were 1644 divergent transitions after warmup. Increasing adapt_delta above 0.95 may help.
See http://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup 

你知道怎么让它合身吗?

EN

回答 1

Stack Overflow用户

发布于 2020-03-25 00:53:21

Brian很可能是正确的,您已经创建了一些没有任何方差的测试数据。例如,假设这是一个玩具数据集,而您正在使用真实的数据集,则需要按照警告消息中的说明进行操作。我会尝试使用我在这里所做的更改来调用brm:

f = brm(y~ gp(x, cov ="exp_quad") + (1|group), data = data, control = list( adapt_delta = .99), iter = 6000)

adapt_delta始终是一个介于0和1之间的值,所以如果您收到一条警告消息,要求您将其设置为大于0.99时,您可以尝试0.999。您没有在调用中指定迭代次数,所以它使用默认值,我相信是2000。我已经翻了三倍了。此外,如果您的计算机上有多个内核,则应该在调用中设置cores = 4,以便每个链都可以在其自己的内核上运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46795923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档