繁体   English   中英

R:如何确保glm模型的拟合值是二进制的

[英]R: how to make sure the fitted values of a glm model are binary

 a = rnorm(10)
 b = rnorm(10)
 c = rnorm(10)
 status = c(rep(0, 5), rep(1, 5))
 status = as.factor(status)
 dat = data.frame(a, b, c, status)
 mod = glm(status~., dat, family = "binomial")

我有一个数据集,我的响应变量是一个二进制变量,即0表示控件,1表示大小写。 当我调用mod$fit来查看拟合值时,它们不是二进制的。 它们是数字。 如何确保拟合值是二进制的? 我尝试了as.factor(status) ,但这不起作用。 我也试过predict(mod, test = data.frame(e = rnorm(10), f = rnorm(10), g = rnorm(10)), type = "response")但是那不给我二进制响应。

如果需要二进制响应,则需要确定一个临界值-这一点都不微不足道(关于ROC(接收者-操作者曲线)以及敏感性和特异性之间的权衡有完整的统计文献),但是有一个合理的默认值选项是选择0.5。

数据:

 dat <- data.frame(a = rnorm(10),
                  b = rnorm(10),
                  c = rnorm(10),
                  status = factor(rep(0:1, each=5)))
 mod <- glm(status~., dat, family = "binomial")

二分法:

 f <- fitted(mod) ## or predict(mod,type="response")
 bf <- ifelse(f<0.5,0,1)  ## or as.numeric(f<0.5)

如果您对统计/非编程方面还有其他疑问,最好在CrossValidated提问

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM