为什么逻辑回归在#failures 为负时仍然有效?

why does logistic regression still work when # failures is negative?

我是 运行 R 中的二项式 glm,在某些情况下失败次数为负数。 (发生这种情况是因为数据中存在一些测量误差)。我希望 glm 函数不适用于这些情况,因为 log(#successes/#failures) 未定义。令我惊讶的是,glm 运行并提供了回归系数的估计值。我不明白为什么 glm 有效,也不明白如何解释结果。

例如:

succ=c(3,0,1,4,2,4,4,7,15,4);
fail=c(1016,1506,1285,1152,868,610,432,211,129,-4);
x_age=c(42.5,47.5,52.5,57.5,62.5,67.5,72.5,77.5,82.5,87.5);

glm(cbind(succ,fail) ~ x_age, family=binomial);

Call:  glm(formula = cbind(succ, fail) ~ x_age, family = binomial)

Coefficients:
(Intercept)        x_age  
     -14.15         0.14  

Degrees of Freedom: 8 Total (i.e. Null);  7 Residual
Null Deviance:      105 
Residual Deviance: 17.7         AIC: 47.3

基本上,我认为程序包作者不会预期负数的失败或成功作为输入。这没有意义,你不应该这样做。

浏览 R 源代码:

每个案例的观察次数为成功次数+失败次数。

n <- y[, 1] + y[, 2]

则y被指定为成功概率:

 y <- ifelse(n == 0, 0, y[, 1]/n)

设$s_i$为成功次数。 设 $f_i$ 为失败次数。

在 $s_i + f_i \neq 0$ 的情况下,我们有 $ y_i = \frac{s_i}{s_i + f_i}$.

在 $s_i + f_i = 0$ 的情况下,我们有 $y_i = 0$.

观察它的作用!在您成功 4 次和失败 -4 次的情况下,成功的概率设置为零!

然后设置 mustart:

mustart <- (n * y + 0.5)/(n + 1)

设 $s_i$ 为成功,$f_i$ 为失败。总之,我们有:

如果 $s_i + f_i \neq 0$ 我们有:

$$ \mu^{start}_i = \frac{s_i + .5}{s_i + f_i + 1}$$

而如果 $s_i + f_i = 0$ 我们有: $$ \mu^{start}_i = \frac{1}{2}$$

然后 c function logit_link 检查 mustart 是否在范围 (0,1) 内。因此,如果您通过了 4 次成功和 -2 次失败,这将引发错误,但不会引发成功 + 失败 = 0 的错误。

if (x < 0 || x > 1)
error(_("Value %g out of range (0, 1)"), x);

无论如何,我看不出这与统计数据有什么关系。在我看来,这段 R 代码似乎有一些不完善的错误检查。