我正在尝试使用50个连续的解释变量来预测二进制结果(大多数变量的范围是到)。我的数据集几乎有24,000行。当我在R中运行时,我得到:∞glm
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
我已阅读过其他建议,可能会发生完美分离,但我确信数据中并非如此(尽管存在准完全分离;如何测试情况是否如此?) 。如果删除一些变量,则“不收敛”错误可能会消失。但这并不总是会发生。
我尝试在bayesglm
函数中使用相同的变量,并得到相同的错误。
您将采取什么步骤来弄清楚这里到底发生了什么?您如何找出导致问题的变量?
另一个想法:
—
戴维·哈里斯
bayesglm
试图通过添加先验来避免分离,但是有24,000行,先验可能会被可能性淹没。尝试收缩prior.scale
,可能会大量收缩。还应考虑提高先验的自由度,这将有助于排除与分离有关的较大价值。
感谢大卫的建议。我不认为发生分离是因为对每个解释变量进行排序时,因解释变量的高或低值,因变量并不总是true或false。除非这被认为是分离的:否则所有x7> 32的因变量都为true,但是在10种情况下x7仅> 32。有没有办法在逻辑回归之外验证分离?还是查看引起分离的变量?我尝试了您的bayesglm建议(我将prior.scale设置为1,将prior.df设置为Inf),但仍然收到Hauck Donner错误。
—
Dcook
“您如何找出导致问题的变量?” 二进制搜索始终是一个很好的后备。您只有50个变量,因此,如果用一个单独的变量将其完全分开,则会发现6次迭代。如果是两个变量,最坏的情况是最多可以找到49 + 6 = 55次迭代。
—
smci
bayesglm
纸,他们认为分离是“一个共同的问题,即使当样品尺寸大和预测的数目是小的”