Skip to content

Commit a47be7b

Browse files
committed
Corrections to race categorization logic
Based on this wiki: https://github.com/cfpb/hmda-platform/wiki/Race-Categorization
1 parent 8be4aec commit a47be7b

File tree

1 file changed

+27
-25
lines changed
  • publication/src/main/scala/hmda/publication/reports/util

1 file changed

+27
-25
lines changed

publication/src/main/scala/hmda/publication/reports/util/RaceUtil.scala

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,38 +17,40 @@ object RaceUtil {
1717
race match {
1818
case AmericanIndianOrAlaskaNative =>
1919
larSource.filter { lar =>
20-
(lar.race1 == 1 && applicantNonWhite(lar) && coApplicantNonWhite(lar)) ||
21-
(lar.race1 == 1 && lar.race2 == "5" && coApplicantNonWhite(lar))
20+
lar.race1 == 1 && coApplicantNonWhite(lar) &&
21+
(applicantRace2Thru5Blank(lar) || lar.race2 == "5")
2222
}
2323

2424
case Asian =>
2525
larSource.filter { lar =>
26-
(lar.race1 == 2 && applicantNonWhite(lar) && coApplicantNonWhite(lar)) ||
27-
(lar.race1 == 2 && lar.race2 == "5" && coApplicantNonWhite(lar))
26+
lar.race1 == 2 && coApplicantNonWhite(lar) &&
27+
(applicantRace2Thru5Blank(lar) || lar.race2 == "5")
2828
}
2929

3030
case BlackOrAfricanAmerican =>
3131
larSource.filter { lar =>
32-
(lar.race1 == 3 && applicantNonWhite(lar) && coApplicantNonWhite(lar)) ||
33-
(lar.race1 == 3 && lar.race2 == "5" && coApplicantNonWhite(lar))
32+
lar.race1 == 3 && coApplicantNonWhite(lar) &&
33+
(applicantRace2Thru5Blank(lar) || lar.race2 == "5")
3434
}
3535

3636
case HawaiianOrPacific =>
3737
larSource.filter { lar =>
38-
(lar.race1 == 4 && applicantNonWhite(lar) && coApplicantNonWhite(lar)) ||
39-
(lar.race1 == 4 && lar.race2 == "5" && coApplicantNonWhite(lar))
38+
lar.race1 == 4 && coApplicantNonWhite(lar) &&
39+
(applicantRace2Thru5Blank(lar) || lar.race2 == "5")
4040
}
4141

4242
case White =>
43-
larSource.filter(lar => lar.race1 == 5 && coApplicantNonWhite(lar))
43+
larSource.filter { lar =>
44+
lar.race1 == 5 && applicantRace2Thru5Blank(lar) && coApplicantNonMinority(lar)
45+
}
4446

4547
case TwoOrMoreMinority =>
4648
larSource.filter(lar => applicantTwoOrMoreMinorities(lar) && coApplicantNonWhite(lar))
4749

4850
case Joint =>
4951
larSource.filter { lar =>
5052
(applicantTwoOrMoreMinorities(lar) || coApplicantTwoOrMoreMinorities(lar)) &&
51-
(applicantWhite(lar) || coApplicantWhite(lar))
53+
(lar.race1 == 5 || coApplicantWhite(lar))
5254
}
5355

5456
case NotProvided =>
@@ -57,28 +59,19 @@ object RaceUtil {
5759
}
5860
}
5961

60-
private def applicantWhite(lar: LoanApplicationRegisterQuery): Boolean = {
61-
lar.race1 == 5 &&
62-
lar.race2 == "" &&
63-
lar.race3 == "" &&
64-
lar.race4 == "" &&
65-
lar.race5 == ""
66-
}
67-
68-
private def applicantNonWhite(lar: LoanApplicationRegisterQuery): Boolean = {
69-
lar.race1 != 5 &&
70-
lar.race2 == "" &&
62+
private def applicantRace2Thru5Blank(lar: LoanApplicationRegisterQuery): Boolean = {
63+
lar.race2 == "" &&
7164
lar.race3 == "" &&
7265
lar.race4 == "" &&
7366
lar.race5 == ""
7467
}
7568

7669
private def coApplicantWhite(lar: LoanApplicationRegisterQuery): Boolean = {
7770
lar.coRace1 == 5 &&
78-
lar.coRace2 != "5" &&
79-
lar.coRace3 != "5" &&
80-
lar.coRace4 != "5" &&
81-
lar.coRace5 != "5"
71+
lar.coRace2 == "" &&
72+
lar.coRace3 == "" &&
73+
lar.coRace4 == "" &&
74+
lar.coRace5 == ""
8275
}
8376

8477
private def coApplicantNonWhite(lar: LoanApplicationRegisterQuery): Boolean = {
@@ -89,6 +82,15 @@ object RaceUtil {
8982
lar.coRace5 != "5"
9083
}
9184

85+
private def coApplicantNonMinority(lar: LoanApplicationRegisterQuery): Boolean = {
86+
val race1NonMinority = lar.coRace1 == 5 || lar.coRace1 == 6 || lar.coRace1 == 7 || lar.coRace1 == 8
87+
race1NonMinority &&
88+
(lar.race2 == "5" || lar.race2 == "") &&
89+
(lar.race3 == "5" || lar.race3 == "") &&
90+
(lar.race4 == "5" || lar.race4 == "") &&
91+
(lar.race5 == "5" || lar.race5 == "")
92+
}
93+
9294
private def applicantTwoOrMoreMinorities(lar: LoanApplicationRegisterQuery): Boolean = {
9395
lar.race1 != 5 &&
9496
((lar.race2 != "" && lar.race2 != "5") ||

0 commit comments

Comments
 (0)