我有一个数据集,其中包含大约12个类别变量,级别范围为2-10,以及其他数字变量。约280条记录。我正在使用mice
中的r
包使用所有默认设置对丢失的数据执行插补。
但是,当我尝试进行如下估算时:
imp <- mice(df)
我继续收到此警告:
glm.fit: algorithm did not converge
我在网上找到的解决方案here和here仅专注于直接使用
glm
函数,但就我而言,这是从mice
内部调用的函数。我试过像这样设置maxit = 50
imp <- mice(df, maxit = 50)
但最终却得到了更多相同警告的实例。知道是什么原因造成的吗?
最佳答案
mice()
在内部对要估算的每个变量进行回归分析,并默认情况下根据数据类型自动选择一种方法。因此,对于您的分类变量,它选择使用glm.fit()
且未收敛的多逻辑方法。
为了简单地消除错误,您可以为所有变量设置method="pmm"
(预测均值匹配),或者预先将分类变量转换为数字。但是,这可能会导致错误的结果,因此我强烈建议您考虑一下插补方法,并检查为什么算法无法收敛。