gpt4 book ai didi

r - 使用 glmer.nb 的 nb.control 参数

转载 作者:行者123 更新时间:2023-12-01 01:48:29 26 4
gpt4 key购买 nike

我正在使用 glmer.nb 研究负二项式模型lme4 内的函数R 包。实际模型本身有些复杂,但应该(至少我相信)在统计上是合理的。我现在的问题是因为模型难以收敛并返回此警告:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge with max|grad| = 0.00753068 (tol = 0.001, component 1)

大多数时候,我在标准 glmer 内工作函数,当我收到此警告时,我将此参数添加到 glmer功能:
glmerControl(optimizer="bobyqa", optCtrl = list(maxfun = 100000))
这通常可以解决问题。现在,查看 glmer.nb 的帮助文件,它似乎是 glmer.nb 的类似参数是 nb.control .然而,当我刚刚改变glmerControlnb.control , R 返回找不到该函数的错误。没关系。从帮助文件中给定的语法来看,它看起来像 nb.control应该设置为等于您想要的控制参数的列表。我尝试了各种方法来获得我想要的两个更改,而 R 一直在下降 nb.control带有警告“extra argument(s) ‘nb.control’ disregarded

我曾尝试在互联网上的大量资源中搜索使用 nb.control 的人的示例。争论。我发现的大多数东西(我找不到太多东西,因此这个问题)似乎只是推荐使用 glmerControl来自 glmer 的争论.当我提出这个论点时,它似乎并没有解决问题。

本质上,我只是想知道如何使用 nb.control将优化器更改为 'bobyqa' 并将迭代次数更改为比默认值更高的参数。使用 nb.control 的语法是什么?不是 NULL 的默认值时的参数?任何想法将不胜感激。谢谢!

最佳答案

这有点违反直觉,但您应该使用 control=glmerControl(...)为此,就像您对类似的 glmer 所做的一样适合 - 这将传递到内循环。

设置数据等:

library(lme4)
dd <- expand.grid(f1 = factor(1:3),
f2 = LETTERS[1:2], g=1:9, rep=1:15)
dd$y <- simulate(~f1+f2+(1|g),
newparams=list(beta=rep(1,4),
theta=1),
newdata=dd,
seed=101,
family=negative.binomial(theta=1.5))[[1]]

适合“ Vanilla ”:
m.nb <- glmer.nb(y ~ f1+f2 + (1|g), data=dd)

检查优化信息:
m.nb@optinfo[c("optimizer","control")]
## $optimizer
## [1] "Nelder_Mead"
##
## $control
## $control$verbose
## [1] 0

适合替代优化器/等:
m.nb2 <- glmer.nb(y ~ f1+f2 + (1|g), data=dd,
control=glmerControl(optimizer="bobyqa",
optCtrl=list(maxfun=1e5)))

检查我们是否真的改变了一些东西:
m.nb2@optinfo[c("optimizer","control")]
## $optimizer
## [1] "bobyqa"
##
## $control
## $control$maxfun
## [1] 1e+05
##
## $control$iprint
## [1] 0

关于r - 使用 glmer.nb 的 nb.control 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46533903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com