R 使用插入符号计算模型训练期间的PPV和NPV

R 使用插入符号计算模型训练期间的PPV和NPV,r,classification,r-caret,R,Classification,R Caret,我正在使用插入符号软件包来训练分类问题的模型。我知道defaultSummary可以用来计算准确度/Kappa(和SDs),而twoClassSummary将计算Sens/Spec。我也希望以同样的方式尽可能轻松地计算阳性和阴性预测值(PPV/NPV和SDs)。我提出了一个解决方案,但不知道是否有人能证实这个解决方案似乎是合理的 首先,我生成预测值: predictiveValues <- function (data, lev = NULL, model = NULL){ PPVob

我正在使用
插入符号
软件包来训练分类问题的模型。我知道
defaultSummary
可以用来计算准确度/Kappa(和SDs),而
twoClassSummary
将计算Sens/Spec。我也希望以同样的方式尽可能轻松地计算阳性和阴性预测值(PPV/NPV和SDs)。我提出了一个解决方案,但不知道是否有人能证实这个解决方案似乎是合理的

首先,我生成预测值:

predictiveValues <- function (data, lev = NULL, model = NULL){
  PPVobj <- posPredValue(data[, "pred"], data[, "obs"])
  NPVobj <- negPredValue(data[, "pred"], data[, "obs"])
  out <- c(PPVobj, NPVobj)
  names(out) <- c("PPV", "NPV")
  out}
我的主要问题是,我是否忽略了一个重要的错误检查,twoClassSummary可能会遗漏该检查,但可能会使predictiveValues函数无效。例如,如果CV期间模型的预测中存在NAs,我可能需要在附加函数的某个位置包含na.rm。如果没有开发者级的
caret
知识,我认为这是不清楚的

或者,有没有一种我忽略了的更简单的方法

谢谢大家能提供的帮助。
亚当

很确定这很好用。有时,您会在性能指标中看到NAs,但它的表现与您预期的一样
custom.summary  <- function(data, lev = NULL, model = NULL){
  a <- defaultSummary(data, lev, model)
  b <- twoClassSummary(data, lev, model)
  c <- predictiveValues(data, lev, model)
  out<-c(a,b,c)
  out}