【发布时间】:2016-11-04 02:19:02
【问题描述】:
我在 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
【问题讨论】:
-
succ中的最后一个数字是 4 很重要,因为成功和失败的总和为 0。相比之下,这不起作用:> succ=c(3,0,1,4,2,4,4,7,15,1) > 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); Error in family$linkfun(mustart) : Value -0.75 out of range (0, 1) -
我几乎可以肯定它只是忽略了成功+失败
-
@Sycorax 最后的评论,正如在别处讨论的那样,逻辑 glm 似乎适合伯努利 (0,1) 结果,并且不采用实际数据的 logits。所以#success 和#failures 格式是底层伯努利结果的综合表示。因此,这里的基本问题是 R 如何将负数的失败重新编码为伯努利结果?似乎当#success + #failure=0(和#failure
-
我不认为这是题外话。这不是关于 R 或 glm() 的实现细节,而是关于理论上理解一个令人惊讶的结果。投票保持开放。
-
我不清楚这是一个有意义的统计问题。 “如何正确处理负数的失败”不是一个有意义的统计问题。相反,在我看来,问题是“R 的开发人员如何决定处理用户输入无意义数据的情况”。他们也可以选择返回一个错误,从统计的角度来看,这同样可以辩护。
标签: r regression