#' Convert results to summary table
create_summary_table <- function(results) {
# Extract metrics
metrics <- map_dfr(results, function(result) {
data.frame(
reader_id = result$reader_id,
accuracy1 = result$outcome1$accuracy,
sensitivity1 = result$outcome1$sensitivity,
specificity1 = result$outcome1$specificity,
accuracy2 = result$outcome2$accuracy,
sensitivity2 = result$outcome2$sensitivity,
specificity2 = result$outcome2$specificity,
accuracy3 = result$outcome3$accuracy,
accuracy4 = result$outcome4$accuracy,
sensitivity4 = result$outcome4$sensitivity,
specificity4 = result$outcome4$specificity
)
})
# Calculate summary statistics
summary_table <- matrix(0, 4, 7)
# Count non-NA values
summary_table[, 1] <- c(
sum(!is.na(metrics$accuracy1)),
sum(!is.na(metrics$accuracy2)),
sum(!is.na(metrics$accuracy3)),
sum(!is.na(metrics$accuracy4))
)
# Mean accuracy
summary_table[, 2] <- c(
mean(metrics$accuracy1, na.rm = TRUE),
mean(metrics$accuracy2, na.rm = TRUE),
mean(metrics$accuracy3, na.rm = TRUE),
mean(metrics$accuracy4, na.rm = TRUE)
)
# SD accuracy
summary_table[, 3] <- c(
sd(metrics$accuracy1, na.rm = TRUE),
sd(metrics$accuracy2, na.rm = TRUE),
sd(metrics$accuracy3, na.rm = TRUE),
sd(metrics$accuracy4, na.rm = TRUE)
)
# Mean sensitivity
summary_table[, 4] <- c(
mean(metrics$sensitivity1, na.rm = TRUE),
mean(metrics$sensitivity2, na.rm = TRUE),
NA,
mean(metrics$sensitivity4, na.rm = TRUE)
)
# SD sensitivity
summary_table[, 5] <- c(
sd(metrics$sensitivity1, na.rm = TRUE),
sd(metrics$sensitivity2, na.rm = TRUE),
NA,
sd(metrics$sensitivity4, na.rm = TRUE)
)
# Mean specificity
summary_table[, 6] <- c(
mean(metrics$specificity1, na.rm = TRUE),
mean(metrics$specificity2, na.rm = TRUE),
NA,
mean(metrics$specificity4, na.rm = TRUE)
)
# SD specificity
summary_table[, 7] <- c(
sd(metrics$specificity1, na.rm = TRUE),
sd(metrics$specificity2, na.rm = TRUE),
NA,
sd(metrics$specificity4, na.rm = TRUE)
)
summary_table
}
# Create summary table
summary_table <- create_summary_table(results)