这可能是一个微不足道的问题,但我不知道在哪里可以找到答案。我想知道在 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 值具有比 FALSE 更高的因子水平。然而,我们必须小心我们的因素是如何排序的,否则我们会得到错误的结果:
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
(注意截距和系数有翻转的符号)
由 reprex package 创建于 2020-06-21 (v0.3.0)
关于逻辑回归的 glm() 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62502226/