Add explainers/treatment-equality.md.
None of this repo's existing fairness-metric explainers cover Treatment Equality (Berk et al. 2018) - the criterion requiring the ratio of false negatives to false positives to be equal across groups, not the individual rates. Checked assets/explainers-data.json's 53 current slugs/titles - Equal Opportunity covers the true-positive-rate gap, Equalized Odds covers max(TPR gap, FPR gap), Predictive Parity covers PPV, and Accuracy Equality covers overall accuracy - none of the four checks the FN:FP ratio within each group, which is a genuinely distinct question: two groups can have identical TPR and FPR gaps yet a different balance of which kind of error dominates within each group.
Suggested structure (match equal-opportunity.md or accuracy-equality.md): one-sentence definition -> why it matters (distinguishing it from the other four confusion-matrix-based metrics above) -> core concept -> concrete example tied to a repo audit -> runnable detection code -> limitations -> related concepts/projects/further reading.
Note on frozen numbers: the six metrics faircode/benchmark.py actually computes (demographic_parity_diff, disparate_impact_ratio, equal_opportunity_diff, equalized_odds_diff, predictive_parity_diff, accuracy_equality_diff - confirmed via the metric column in paper/results-frozen/results_fairness.csv) do not include a treatment-equality ratio, so a worked example needs its own from-scratch confusion-matrix computation on raw audit data - the same precedent already used by Individual Fairness (a fresh model run, not a frozen-CSV quote). That's fine under the freeze - it isn't re-running the benchmark - just don't present it as a frozen number.
Related: equal-opportunity, equalized-odds, accuracy-equality, confusion-matrix.
See CONTRIBUTING.md: add explainers/<slug>.md plus a one-line entry in assets/explainers-data.json; the build script generates the page.
Freeze-safe: explainers are fully open for contribution during the paper freeze. If you quote any Fair Code benchmark result, use the frozen numbers in paper/results-frozen/ (never re-run your own) - see CLAUDE.md.
Add
explainers/treatment-equality.md.None of this repo's existing fairness-metric explainers cover Treatment Equality (Berk et al. 2018) - the criterion requiring the ratio of false negatives to false positives to be equal across groups, not the individual rates. Checked
assets/explainers-data.json's 53 current slugs/titles - Equal Opportunity covers the true-positive-rate gap, Equalized Odds covers max(TPR gap, FPR gap), Predictive Parity covers PPV, and Accuracy Equality covers overall accuracy - none of the four checks the FN:FP ratio within each group, which is a genuinely distinct question: two groups can have identical TPR and FPR gaps yet a different balance of which kind of error dominates within each group.Suggested structure (match equal-opportunity.md or accuracy-equality.md): one-sentence definition -> why it matters (distinguishing it from the other four confusion-matrix-based metrics above) -> core concept -> concrete example tied to a repo audit -> runnable detection code -> limitations -> related concepts/projects/further reading.
Note on frozen numbers: the six metrics
faircode/benchmark.pyactually computes (demographic_parity_diff,disparate_impact_ratio,equal_opportunity_diff,equalized_odds_diff,predictive_parity_diff,accuracy_equality_diff- confirmed via the metric column inpaper/results-frozen/results_fairness.csv) do not include a treatment-equality ratio, so a worked example needs its own from-scratch confusion-matrix computation on raw audit data - the same precedent already used by Individual Fairness (a fresh model run, not a frozen-CSV quote). That's fine under the freeze - it isn't re-running the benchmark - just don't present it as a frozen number.Related: equal-opportunity, equalized-odds, accuracy-equality, confusion-matrix.
See CONTRIBUTING.md: add
explainers/<slug>.mdplus a one-line entry inassets/explainers-data.json; the build script generates the page.