[英]Wrong(?) Thresholds in dataframe using R and PROC
我正在尝试计算项目的新截止值,但似乎 a) 我根本不了解阈值或 b) 我在计算时做错了
我使用的数据
data_sub$ENTLASSMANAGEMENT_BIN:二进制变量,包含 0 和 1 data_sub$DOKU_INDEXWERT:决定 ENTLASSMANAGEMENT_BIN 是 0 还是 1 的值。1 到 41 之间的数字
glm.fit=glm(data_sub$ENTLASSMANAGEMENT_BIN ~ data_sub$DOKU_INDEXWERT, family=binomial)
lines(data_sub$DOKU_INDEXWERT, glm.fit$fitted.values)
画出我的 ROC
par(pty = "s")
roc(data_sub$ENTLASSMANAGEMENT_BIN, glm.fit$fitted.values,
plot = TRUE, legacy.axes=TRUE, col="#377eb8", lwd=4, print.auc=TRUE)
这个 ROC 对我来说看起来不错,所以我想我只需要获得阈值,我就可以选择一个新的截止值。
所以我制作了一个新的 dataframe,其中包含真阳性百分比 (tpp) 和假阳性百分比 (fpp) 以及阈值:
roc.info <- roc(data_sub$ENTLASSMANAGEMENT_BIN, glm.fit$fitted.values, legacy.axes=TRUE)
roc.df <- data.frame(tpp=roc.info$sensitivities*100,
fpp= (1- roc.info$specificities)*100,
threshholds=roc.info$thresholds)
head(roc.df)
但是门槛对我来说似乎很奇怪:
> head(roc.df)
tpp fpp threshholds
1 100.00000 100.00000 -Inf
2 98.31461 72.64957 0.1178571
3 96.62921 58.11966 0.2178571
4 92.13483 41.02564 0.3095238
5 89.88764 34.18803 0.3750000
6 87.07865 28.20513 0.4940476
它们不应该类似于 data_sub$DOKU_INDEXWERT 中的数字吗? 如果它们高于我的截止值的最高数字,我不明白我该如何解释这些......
我是不是计算错了? 或者我只是误解了阈值?
谢谢!
我想我发现了我的错误:无论如何这可能对其他人有用。 我使用了 glm.fit$fitted.values 因为否则我会得到我的数据应该是数字的错误。 我现在改用 as.numeric(data_sub$DOKU_INDEXWERT) 并且它有效
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.