You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#545: COMPAS's "Reduction" figure used the raw percentage-point gap
(86.77 - 15.69 = 71.08 -> "71%") instead of the relative reduction
(86.77 - 15.69) / 86.77 = 81.9% -> "82%") that every other row in the
same table uses. Fixed in COMPAS/README.md, the root README's
Results-at-a-Glance row, and the "Result: N% reduction" line in the
root README's COMPAS section. This understated COMPAS's actual
mitigation effectiveness.
#546: Benefits Denial's audit.yaml lists five proxy_features
(marital.status, occupation, relationship, hours.per.week, fnlwgt) and
fair.py removes all five with documented reasoning, but both READMEs
listed only four, omitting fnlwgt. Added fnlwgt to the proxy list in
Benefits Denial/README.md and the root README (summary-table row,
"five proxy variables" counts, and the fair.py code-block comment list).
Closes#545Closes#546
These match the "Results at a Glance" table in the [main README](../README.md#results-at-a-glance) and the frozen snapshot in `paper/results-frozen/`. The scripts are deterministic at `random_state=42`, so a correct local run reproduces them exactly. If your numbers differ, check the seed, the split, and your package versions before opening an issue - and never edit the frozen numbers to match a local run (see [CLAUDE.md](../CLAUDE.md)).
> **Key insight:** Removing race alone isn't enough. Proxy variables like custody status carry the same racial signal because of historical over-policing of Black communities. Both the protected attribute *and* its proxies must be removed.
377
377
@@ -546,7 +546,7 @@ Automated welfare and benefits systems use income-prediction models to screen ap
546
546
547
547
#### The Problem - `unfair.py`
548
548
549
-
Trained with sex, race, age, and national origin directly, plus four proxy variables that reconstruct those attributes even after the protected columns are removed.
549
+
Trained with sex, race, age, and national origin directly, plus five proxy variables that reconstruct those attributes even after the protected columns are removed.
550
550
551
551
| Group | Ineligibility Flag Rate |
552
552
|-------|:-----------------------:|
@@ -568,7 +568,7 @@ Trained with sex, race, age, and national origin directly, plus four proxy varia
568
568
569
569
#### The Fix - `fair.py`
570
570
571
-
Dropped all four protected attributes and all four proxy variables. Retained only the features a means-tested programme can legitimately consult under equality law.
571
+
Dropped all four protected attributes and all five proxy variables. Retained only the features a means-tested programme can legitimately consult under equality law.
572
572
573
573
```python
574
574
# THE FIX: Policy-defined economic signals only
@@ -586,6 +586,7 @@ features = [
586
586
# marital.status removed ✓ (proxy: encodes sex via spousal status)
587
587
# hours.per.week removed ✓ (proxy: encodes sex via caregiving gap)
588
588
# occupation removed ✓ (proxy: encodes race via occupational segregation)
589
+
# fnlwgt removed ✓ (proxy: census sampling weight, no causal link)
0 commit comments