我有一个包含两列y和x的数据集。
我根据y
执行了不同的算法来预测x
。
对于每种算法,我都有一个预测值的向量:p1
,p2
。
我使用了包auc
的函数pROC
。
auc (response = test$x, predictor = p1)
auc (response = test$x, predictor = p2)
我在6位小数处有完全相同的AUC值。我的实施是否可能,或者出了什么问题?
更新: p1
和p2
不同。
> pROC::auc (response = test$correct_value, predictor = p1)
Area under the curve: 0.8231
> pROC::auc (response = test$correct_value, predictor = p2)
Area under the curve: 0.8231
> head (p1)
11 14 17 22 25 26
0.01378549 0.01378549 0.01378549 0.01203714 0.01259412 0.01259412
> head (p2)
11 14 17 22 25 26
0.7511921 0.7511921 0.7511921 0.6272434 0.6715637 0.6715637
答案 0 :(得分:1)
@Jan van der Laan确实注意到all(rank(p1) == rank(p2))
。但还有更多内容!
如果我正确理解您的问题,您可以使用基于单个随机变量glm
的{{1}}模型进行预测。那么以下情况也是如此:
x
原因是单个随机变量> pROC::auc (response = test$correct_value, predictor = x)
Area under the curve: 0.8231
> all(rank(p1) == rank(x))
[1] TRUE
的线性函数不可能重新排序数据。由于秩是ROC分析的唯一相关信息,如果要改进预测,则必须通过非线性函数(x
或类似函数)传递数据,或者在等式中引入更多随机变量