03_sqlstudio/contingency4.sql (18 lines of code) (raw):
WITH contingency_table AS (
SELECT
THRESH,
COUNTIF(dep_delay < THRESH AND arr_delay < 15) AS true_positives,
COUNTIF(dep_delay < THRESH AND arr_delay >= 15) AS false_positives,
COUNTIF(dep_delay >= THRESH AND arr_delay < 15) AS false_negatives,
COUNTIF(dep_delay >= THRESH AND arr_delay >= 15) AS true_negatives,
COUNT(*) AS total
FROM dsongcp.flights, UNNEST([5, 10, 11, 12, 13, 15, 20]) AS THRESH
WHERE arr_delay IS NOT NULL AND dep_delay IS NOT NULL
GROUP BY THRESH
)
SELECT
ROUND((true_positives + true_negatives)/total, 2) AS accuracy,
ROUND(false_positives/(true_positives+false_positives), 2) AS fpr,
ROUND(false_negatives/(false_negatives+true_negatives), 2) AS fnr,
*
FROM contingency_table