[英]Result of glm() for logistic regression
这可能是一个微不足道的问题,但我不知道在哪里可以找到答案。 我想知道在 R 中使用glm()
进行逻辑回归时,如果响应变量Y
的因子值为 1 或 2, glm()
的结果是否对应于logit(P(Y=1))
或logit(P(Y=2))
? 如果Y
具有逻辑值TRUE
或FALSE
怎么办?
为什么不自己测试呢?
output_bool <- c(rep(c(TRUE, FALSE), c(25, 75)), rep(c(TRUE, FALSE), c(75, 25)))
output_num <- c(rep(c(2, 1), c(25, 75)), rep(c(2, 1), c(75, 25)))
output_fact <- factor(output_num)
var <- rep(c("unlikely", "likely"), each = 100)
glm(output_bool ~ var, binomial)
#>
#> Call: glm(formula = output_bool ~ var, family = binomial)
#>
#> Coefficients:
#> (Intercept) varunlikely
#> 1.099 -2.197
#>
#> Degrees of Freedom: 199 Total (i.e. Null); 198 Residual
#> Null Deviance: 277.3
#> Residual Deviance: 224.9 AIC: 228.9
glm(output_num ~ var, binomial)
#> Error in eval(family$initialize): y values must be 0 <= y <= 1
glm(output_fact ~ var, binomial)
#>
#> Call: glm(formula = output_fact ~ var, family = binomial)
#>
#> Coefficients:
#> (Intercept) varunlikely
#> 1.099 -2.197
#>
#> Degrees of Freedom: 199 Total (i.e. Null); 198 Residual
#> Null Deviance: 277.3
#> Residual Deviance: 224.9 AIC: 228.9
因此,如果我们使用 TRUE 和 FALSE,我们会得到正确的答案,如果我们使用 1 和 2 作为数字,则会得到错误,如果我们使用 1 和 2 作为具有两个水平的因子,则如果 TRUE 值具有更高的因子水平,则会得到正确的结果比错误。 但是,我们必须小心我们的因子是如何排序的,否则我们会得到错误的结果:
output_fact <- factor(output_fact, levels = c("2", "1"))
glm(output_fact ~ var, binomial)
#>
#> Call: glm(formula = output_fact ~ var, family = binomial)
#>
#> Coefficients:
#> (Intercept) varunlikely
#> -1.099 2.197
#>
#> Degrees of Freedom: 199 Total (i.e. Null); 198 Residual
#> Null Deviance: 277.3
#> Residual Deviance: 224.9 AIC: 228.9
(注意截距和系数有翻转符号)
由代表 package (v0.3.0) 于 2020 年 6 月 21 日创建
测试很好。 如果您想要文档,它位于?binomial
中(与?family
相同):
对于“二项式”和“准二项式”系列,可以通过以下三种方式之一指定响应:
- 作为一个因素:“成功”被解释为不具有第一级的因素(因此通常具有第二级)。
- 作为一个数值向量,其值介于“0”和“1”之间,解释为成功案例的比例(由“权重”给出的案例总数)。
- 作为一个双列 integer 矩阵:第一列给出成功的次数,第二列给出失败的次数。
它没有明确说明逻辑( TRUE
/ FALSE
)情况下会发生什么; 为此,您必须知道,在将逻辑强制转换为数值时, FALSE
→ 0 和TRUE
→ 1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.