R/glance.R

# Generate one line summaries by extending broom's S3 `glance()`

#' @include Classifiers-class.R
NULL


#' View summary stats for a classifier object.
#'
#' @family tidy
#'
#' @export
#' @rdname glance.Classifier
#' @examples
#' data(classifiers, package="AnalyticsToolkit")
#' glance_ClassifierPoint(classifiers$classifier_points[[1]])
glance_ClassifierPoint <- function(Classifier){
    tp <- sum(Classifier@Y_ & Classifier@Y)
    fp <- sum(Classifier@Y_ & !Classifier@Y)
    fn <- sum(!Classifier@Y_ & Classifier@Y)
    tn <- sum(!Classifier@Y_ & !Classifier@Y)
    n = sum(tp, fp, tn, fn)

    data.frame(
        acc = (tp + tn) / n,
        sens = tp / (tp + fn),
        spec = tn / (tn + fp),
        ppv = tp / (tp + fp),
        npv = tn / (tn + fn),
        fpr = fp / (tn + fp)
    )
}



#' @export
#' @rdname glance.Classifier
#' @examples
#' data(classifiers, package="AnalysisToolkit")
#' glance_ClassifierCurve(classifiers$classifier_curves[[1]])
glance_ClassifierCurve <- function(Classifier) {
    preds <- ROCR::prediction(predictions=Classifier@pY, labels=Classifier@Y)

    # Compute operating-point independent stat: auc
    auc <- ROCR::performance(preds, "auc") %>% slot("y.values") %>% unlist

    # Find Operating Point ----
    cP <- as(Classifier, "ClassifierPoint")

    summary_tbl <- glance_ClassifierPoint(cP)
    summary_tbl <- tibble::add_column(summary_tbl, "auc"=auc, .before = 1)
    summary_tbl
}
mbadge/AnalysisToolkitR documentation built on May 27, 2019, 1:08 p.m.