首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小鼠: glm.fit:算法没有收敛

小鼠: glm.fit:算法没有收敛
EN

Stack Overflow用户
提问于 2019-11-13 06:50:50
回答 3查看 3.2K关注 0票数 3

我有一个数据集,大约有12个分类变量,级别在2-10之间,以及其他数值变量。大约280张唱片。我使用r中的r包对丢失的数据执行所有默认设置的归责。然而,当我试图这样做的时候:

代码语言:javascript
复制
imp <- mice(df)

我继续收到这样的警告:

代码语言:javascript
复制
glm.fit: algorithm did not converge

我在网上找到的解决方案这里这里只关注直接使用glm函数,但在我的例子中,它是一个从mice内部调用的函数。我试过设置maxit = 50,就像这样

代码语言:javascript
复制
imp <- mice(df, maxit = 50)

但最终只得到了更多相同警告的实例。知道是什么导致的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-04 11:25:45

我决定贴出我的问题的答案,只是为了说明我是如何解决这个问题的,这有点不寻常,而且考虑到我在网上找到的解决方案都没有在我的案例中奏效。

我意识到警告实际上来自logreg函数(对于只有两个级别的分类变量),而不是来自polyreg。因此,考虑到glm.fit()函数不仅在mice中调用,而且在logreg中调用,我最终在Github上找到mice代码,复制logreg函数,用maxit的控制参数编辑glm.fit()调用,将其重命名为?mice 'Details‘部分中指定的,并使用它。工作良好(经过更多的调试,lol),算法现在收敛。

票数 5
EN

Stack Overflow用户

发布于 2019-11-13 07:58:09

mice()内部对每个变量进行回归分析,即根据数据类型自动计算和自动选择方法。因此,对于您的分类变量,它选择了一个使用glm.fit()的多元逻辑方法,并且没有收敛。

为了简单地消除错误,您可以为所有变量设置method="pmm" (预测平均匹配),或者预先将分类变量转换为数字。然而, --这可能会导致错误的结果,我强烈建议过度考虑您的估算方法,并检查算法为什么不能收敛。

票数 3
EN

Stack Overflow用户

发布于 2020-12-22 19:39:58

我遇到了一个类似的错误,这个问题来自于predictorMatrix中一些变量是完全共线的。老鼠建立的模型是无法辨认的,这就是我的问题所在。为了谷歌人的利益,在这里张贴信息,重复检查预测矩阵,例如,虚拟变量不是共线变量。删除其中一个级别允许logreg方法很好地工作。

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

https://stackoverflow.com/questions/58831710

复制
相关文章

相似问题

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