use*_*594 6 r predict glm logistic-regression
我有一些预测变量和二进制目标的数据.例如:
df <- data.frame(a=sort(sample(1:100,30)), b= sort(sample(1:100,30)),
target=c(rep(0,11),rep(1,4),rep(0,4),rep(1,11)))
Run Code Online (Sandbox Code Playgroud)
我使用了一个logistic regresion模型 glm()
model1 <- glm(formula= target ~ a + b, data=df, family=binomial)
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试预测输出(例如,相同的数据应该足够)
predict(model1, newdata=df, type="response")
Run Code Online (Sandbox Code Playgroud)
这生成概率数的向量.但我想预测实际的课程.我可以在概率数上使用round(),但这假设低于0.5的任何东西都是'0'类,而上面的任何东西都是'1'类.这是正确的假设吗?即使每个阶级的人口可能不相等(或接近相等)?或者有没有办法估算这个门槛?
在glm模型中使用的最佳阈值(或截止)点是最大化特异性和灵敏度的点.此阈值点可能不会在模型中给出最高预测值,但不会偏向正面或负面.该ROCR软件包包含可以帮助您执行此操作的功能.检查performance()此包中的功能.它会让你得到你想要的东西.这是您期望获得的图片:

在找到截止点之后,我通常自己编写一个函数来查找具有高于截止值的预测值的数据点的数量,并将其与它们所属的组匹配.