当#wault失败时,为什么逻辑回归仍然有效?

时间:2016-11-04 02:19:02

标签: r regression

我在R中运行二项式glm并且在某些情况下失败次数为负数。 (这是因为数据中存在一些测量错误)。我希望glm函数不适用于这些情况,因为log(#sucescesses /#failuress)是未定义的。令我惊讶的是,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

1 个答案:

答案 0 :(得分:4)

基本上,我不认为包裹作者预期会有多少次失败或成功作为输入。它没有意义,你不应该这样做。

通过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代码有一些不完美的错误检查。