计算函数并比较 table 中的一列与多列
Calculating a function and comparing one column with multiple columns in a table
我对一个简单的任务有很大的疑问。我有一个由真实值(0 和 1)和来自不同模型的几个预测值组成的数据集。我正在使用包 'Metrics' 并且我想使用 AUC(度量中的函数“auc”)评估每个预测。
这是一个可重现的例子。我有一个 table:
evaluate <- "true prediction_1 prediction_2 prediction_3
1 0.9 0.5 0.8
1 0.9 0.4 0.7
1 0.8 0.6 0.75
0 0.1 0.3 0.2
0 0.05 0.4 0.1
0 0.15 0.45 0.15"
Table <- read.table(text=evaluate, header = TRUE)
让我们得到第一个预测的 AUC:
require(Metrics)
auc(Table[,1], Table[,2])
[1] 1
类似地,我们可以得到第二次预测的AUC:
auc(Table[,1], Table[,3])
[1] 0.8333333
但是如何同时获得所有列的AUC? (不是对它们求和,而是在每一对上迭代函数)
我想输入如下内容:
auc(Table[,1], Table[,2:4])
并得到一个 table,其中每个预测都分配有其 AUC 值,但这不起作用...
[1] 13.16667
Warning message:
In auc(Table[, 1], Table[, 2:4]) :
longer object length is not a multiple of shorter object length
我想这很简单,但我正在努力寻找答案,所以如果有人能帮助我或指出正确的道路,我将不胜感激!
使用 mapply
.
mapply(auc, list(Table[,1]), Table[-1])
# [1] 1.0000000 0.8333333 1.0000000
mapply
对其参数中给出的列表按元素计算 auc
。因为 Table[,1]
被强制转换为向量,所以我们需要再次 list
它。我们也可以使用 Table[,1, drop=FALSE]
,但使用 list
.
输出更好
我们也可以用sapply
sapply(Table[-1], function(x) auc(Table[,1], x))
# prediction_1 prediction_2 prediction_3
# 1.0000000 0.8333333 1.0000000
我对一个简单的任务有很大的疑问。我有一个由真实值(0 和 1)和来自不同模型的几个预测值组成的数据集。我正在使用包 'Metrics' 并且我想使用 AUC(度量中的函数“auc”)评估每个预测。 这是一个可重现的例子。我有一个 table:
evaluate <- "true prediction_1 prediction_2 prediction_3
1 0.9 0.5 0.8
1 0.9 0.4 0.7
1 0.8 0.6 0.75
0 0.1 0.3 0.2
0 0.05 0.4 0.1
0 0.15 0.45 0.15"
Table <- read.table(text=evaluate, header = TRUE)
让我们得到第一个预测的 AUC:
require(Metrics)
auc(Table[,1], Table[,2])
[1] 1
类似地,我们可以得到第二次预测的AUC:
auc(Table[,1], Table[,3])
[1] 0.8333333
但是如何同时获得所有列的AUC? (不是对它们求和,而是在每一对上迭代函数) 我想输入如下内容:
auc(Table[,1], Table[,2:4])
并得到一个 table,其中每个预测都分配有其 AUC 值,但这不起作用...
[1] 13.16667
Warning message:
In auc(Table[, 1], Table[, 2:4]) :
longer object length is not a multiple of shorter object length
我想这很简单,但我正在努力寻找答案,所以如果有人能帮助我或指出正确的道路,我将不胜感激!
使用 mapply
.
mapply(auc, list(Table[,1]), Table[-1])
# [1] 1.0000000 0.8333333 1.0000000
mapply
对其参数中给出的列表按元素计算 auc
。因为 Table[,1]
被强制转换为向量,所以我们需要再次 list
它。我们也可以使用 Table[,1, drop=FALSE]
,但使用 list
.
我们也可以用sapply
sapply(Table[-1], function(x) auc(Table[,1], x))
# prediction_1 prediction_2 prediction_3
# 1.0000000 0.8333333 1.0000000