我在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
答案 0 :(得分:4)
基本上,我不认为包裹作者预期会有多少次失败或成功作为输入。它没有意义,你不应该这样做。
每个案例的观察次数是成功次数+失败次数。
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代码有一些不完美的错误检查。