如何在R中的两列之间查找精度

时间:2018-10-28 20:46:16

标签: r

我有两列:一列代表预测值,另一列代表真实值。
我想计算这些列之间的精度,如果两列都有缺失值,则使缺失值计数为true。
所以什么时候

Pred True
1     2
2     2
NA    NA
3     2

准确度为50%。
另外,我该如何对字符值做同样的事情?

2 个答案:

答案 0 :(得分:2)

您可以这样做:

pred <- c(1,2,NA,3)
true <- c(2,2,NA,2)
(sum(pred==true, na.rm=T) + sum(is.na(pred) & is.na(true))) / length(pred)

即,将predtrue等于sum(pred==true, na.rm=T)的次数加上它们都是NAsum(is.na(pred) & is.na(true))的次数。除以向量长度。

答案 1 :(得分:1)

您可以执行以下操作:

sum(data$Pred == data$True, na.rm = T) / nrow(data) *100

以您定义它的方式获得准确性。它适用于整数和字符串。问题是,您无法真正比​​较NA,因此,如果两列都具有给定行的NA,而您实际上认为这是一个准确的预测,则需要分别计算这些实例。例如,您可以只获取两列均为NA的索引的并集,并将其添加到总和中:

s <- sum(data$Pred == data$True, na.rm = T)
na <- length(union(which(is.na(data$Pred)), which(is.na(data$True))))
(s + na) / nrow(data) * 100