cal_metrics <- function(label, pred){
? roc.p=pROC::roc(label, pred,ci =T)
? if (roc.p$auc>0.5){
? ? cutoff=roc.p$thresholds[which.max(roc.p$sensitivities+roc.p$specificities)]
? ? sensitivity=roc.p$sensitivities[which.max(roc.p$sensitivities+roc.p$specificities)]
? ? specificity=roc.p$specificities[which.max(roc.p$sensitivities+roc.p$specificities)]
? ? ci = roc.p$ci
? ? df=data.frame(type='positive classification',
? ? ? ? ? ? ? ? ? auc=round(roc.p$auc,3),cutoff=cutoff,
? ? ? ? ? ? ? ? ? sensitivity=sensitivity,specificity=specificity,ci_lower = ci[1],ci_upper=ci[3])
? ? return(df)
? }
? else{
? ? cutoff=roc.p$thresholds[which.min(roc.p$sensitivities+roc.p$specificities)]
? ? sensitivity=roc.p$sensitivities[which.min(roc.p$sensitivities+roc.p$specificities)]
? ? specificity=roc.p$specificities[which.min(roc.p$sensitivities+roc.p$specificities)]
? ? ci = roc.p$ci
? ? df=data.frame(type='negative classification',
? ? ? ? ? ? ? ? ? auc=1-round(roc.p$auc,3),cutoff=cutoff,
? ? ? ? ? ? ? ? ? sensitivity=1-sensitivity,specificity=1-specificity,ci_lower = ci[1],ci_upper=ci[3])
? ? return(df)
? }
}