Questions
Total dollar amount approved per census tract
left_join(wilmington_census,
wilmington_hmda_10_19 %>%
filter(
action_taken == 1
) %>%
group_by(year, geoid) %>%
summarise(
total = sum(loan_amount),
count = n()
)
, by="geoid"
) %>%
ggplot() +
geom_sf(aes(
fill=total
)) +
coord_sf(datum=NA) +
labs(title = "Mortgage Lending by census tract",
# subtitle = "Alaska and Hawaii are shifted and not to scale",
caption = "Source: Consumer Financial Protection Bureau",
fill = "Total") +
scale_fill_viridis(direction=-1) +
facet_wrap(~year)
Column `geoid` joining factor and character vector, coercing into character vector

NA
NA
Total amount of dollars approved per census tract (TOTAL 2010 - 2019)
left_join(wilmington_census,
wilmington_hmda_10_19 %>%
filter(
action_taken == 1
) %>%
group_by(geoid) %>%
summarise(
total = sum(loan_amount),
count = n()
)
, by="geoid"
) %>%
ggplot() +
geom_sf(aes(
fill=total
)) +
coord_sf(datum=NA) +
labs(title = "Mortgage Lending by census tract (TOTAL 2010 - 2019)",
# subtitle = "Alaska and Hawaii are shifted and not to scale",
caption = "Source: Consumer Financial Protection Bureau",
fill = "Total") +
scale_fill_viridis(direction=-1)
Column `geoid` joining factor and character vector, coercing into character vector

NA
NA
Number of loans originated per census tract
left_join(wilmington_census,
wilmington_hmda_10_19 %>%
filter(
action_taken == 1
) %>%
group_by(year, geoid) %>%
summarise(
total = sum(loan_amount),
count = n()
)
, by="geoid"
) %>%
ggplot() +
geom_sf(aes(
fill=count
)) +
coord_sf(datum=NA) +
labs(title = "Number of loans originated per census tract",
# subtitle = "Alaska and Hawaii are shifted and not to scale",
caption = "Source: Consumer Financial Protection Bureau",
fill = "Count") +
scale_fill_viridis(direction=-1) +
facet_wrap(~year)
Column `geoid` joining factor and character vector, coercing into character vector

Number of loans originated per census tract (TOTAL 2010 - 2019)
left_join(wilmington_census,
wilmington_hmda_10_19 %>%
filter(
action_taken == 1
) %>%
group_by(geoid) %>%
summarise(
total = sum(loan_amount),
count = n()
)
, by="geoid"
) %>%
ggplot() +
geom_sf(aes(
fill=count
)) +
coord_sf(datum=NA) +
labs(title = "Number of loans originated per census tract (TOTAL 2010 - 2019)",
# subtitle = "Alaska and Hawaii are shifted and not to scale",
caption = "Source: Consumer Financial Protection Bureau",
fill = "Count") +
scale_fill_viridis(direction=-1)
Column `geoid` joining factor and character vector, coercing into character vector

Number of loans denied per census tract
left_join(wilmington_census,
wilmington_hmda_10_19 %>%
filter(
action_taken != 1
) %>%
group_by(year, geoid) %>%
summarise(
total = sum(loan_amount),
count = n()
)
, by="geoid"
) %>%
ggplot() +
geom_sf(aes(
fill=count
)) +
coord_sf(datum=NA) +
labs(title = "Number of loans denied per census tract",
caption = "Source: Consumer Financial Protection Bureau",
fill = "Count") +
scale_fill_viridis(direction=-1) +
facet_wrap(~year)
Column `geoid` joining factor and character vector, coercing into character vector

Number of loans denied per census tract (TOTAL 2010 - 2019)
left_join(wilmington_census,
wilmington_hmda_10_19 %>%
filter(
action_taken != 1
) %>%
group_by(geoid) %>%
summarise(
total = sum(loan_amount),
count = n()
)
, by="geoid"
) %>%
ggplot() +
geom_sf(aes(
fill=count
)) +
coord_sf(datum=NA) +
labs(title = "Number of loans denied per census tract (TOTAL 2010 - 2019)",
caption = "Source: Consumer Financial Protection Bureau",
fill = "Count") +
scale_fill_viridis(direction=-1)
Column `geoid` joining factor and character vector, coercing into character vector

Most common reason for loan denial by census tract
Percent of dollars that went to majority white census tracts
Lending by lender
Location comparison
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3IgaW5jbHVkZT1GQUxTRX0KCiMgc2V0dXAKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoZ2VvanNvbmlvKQpsaWJyYXJ5KHNmKQpsaWJyYXJ5KGJyb29tKQpsaWJyYXJ5KHZpcmlkaXMpCnNldHdkKCJ+L0RvY3VtZW50cy9HaXRIdWIvMjAyMC0xMC1tb3J0Z2FnZS1kaXNjbG9zdXJlLWRhdGEvd29ya3NwYWNlL1IiKQoKIyBnbyBnZXQgZGF0YQoKZGVsYXdhcmVfaG1kYV8wN18xOSA8LSByZWFkX2NzdignLi4vZGF0YS9kZWxhd2FyZV9obWRhXzA3XzE5LmNzdicpCgp3aWxtaW5ndG9uX2NlbnN1cyA8LSBzdF9yZWFkKCcuLi9kYXRhL2FjczIwMThfNXlyX0IwMjAwMV8xNDAwMFVTMTAwMDMwMDIxMDAuc2hwJykKCndpbF90cmFjdHMgPC0gd2lsbWluZ3Rvbl9jZW5zdXMkZ2VvaWQKCndpbG1pbmd0b25faG1kYV8xMF8xOSA8LSBmaWx0ZXIoCiAgZGVsYXdhcmVfaG1kYV8wN18xOSwKICB5ZWFyID49IDIwMTAsCiAgZ2VvaWQgJWluJSB3aWxfdHJhY3RzCikKCmBgYAoKCgojIFF1ZXN0aW9ucwoKIyMjIFRvdGFsIGRvbGxhciBhbW91bnQgYXBwcm92ZWQgcGVyIGNlbnN1cyB0cmFjdApgYGB7cn0KCmxlZnRfam9pbih3aWxtaW5ndG9uX2NlbnN1cywKICAgICAgICAgIHdpbG1pbmd0b25faG1kYV8xMF8xOSAlPiUKICAgICAgICAgIGZpbHRlcigKICAgICAgICAgICAgYWN0aW9uX3Rha2VuID09IDEKICAgICAgICAgICkgJT4lIAogICAgICAgICAgZ3JvdXBfYnkoeWVhciwgZ2VvaWQpICU+JSAKICAgICAgICAgIHN1bW1hcmlzZSgKICAgICAgICAgICAgdG90YWwgPSBzdW0obG9hbl9hbW91bnQpLAogICAgICAgICAgICBjb3VudCA9IG4oKQogICAgICAgICAgKQogICwgYnk9Imdlb2lkIgogICkgJT4lIAogIGdncGxvdCgpICsKICBnZW9tX3NmKGFlcygKICAgIGZpbGw9dG90YWwKICAgICkpICsKICBjb29yZF9zZihkYXR1bT1OQSkgKwogIGxhYnModGl0bGUgPSAiTW9ydGdhZ2UgTGVuZGluZyBieSBjZW5zdXMgdHJhY3QiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJBbGFza2EgYW5kIEhhd2FpaSBhcmUgc2hpZnRlZCBhbmQgbm90IHRvIHNjYWxlIiwKICAgICAgIGNhcHRpb24gPSAiU291cmNlOiBDb25zdW1lciBGaW5hbmNpYWwgUHJvdGVjdGlvbiBCdXJlYXUiLAogICAgICAgZmlsbCA9ICJUb3RhbCIpICsKICBzY2FsZV9maWxsX3ZpcmlkaXMoZGlyZWN0aW9uPS0xKSArCiAgZmFjZXRfd3JhcCh+eWVhcikKICAKCmBgYAojIyMgVG90YWwgYW1vdW50IG9mIGRvbGxhcnMgYXBwcm92ZWQgcGVyIGNlbnN1cyB0cmFjdCAoVE9UQUwgMjAxMCAtIDIwMTkpCmBgYHtyfQoKbGVmdF9qb2luKHdpbG1pbmd0b25fY2Vuc3VzLAogICAgICAgICAgd2lsbWluZ3Rvbl9obWRhXzEwXzE5ICU+JQogICAgICAgICAgZmlsdGVyKAogICAgICAgICAgICBhY3Rpb25fdGFrZW4gPT0gMQogICAgICAgICAgKSAlPiUgCiAgICAgICAgICBncm91cF9ieShnZW9pZCkgJT4lIAogICAgICAgICAgc3VtbWFyaXNlKAogICAgICAgICAgICB0b3RhbCA9IHN1bShsb2FuX2Ftb3VudCksCiAgICAgICAgICAgIGNvdW50ID0gbigpCiAgICAgICAgICApCiAgLCBieT0iZ2VvaWQiCiAgKSAlPiUgCiAgZ2dwbG90KCkgKwogIGdlb21fc2YoYWVzKAogICAgZmlsbD10b3RhbAogICAgKSkgKwogIGNvb3JkX3NmKGRhdHVtPU5BKSArCiAgbGFicyh0aXRsZSA9ICJNb3J0Z2FnZSBMZW5kaW5nIGJ5IGNlbnN1cyB0cmFjdCAoVE9UQUwgMjAxMCAtIDIwMTkpIiwKICAgICAgICMgc3VidGl0bGUgPSAiQWxhc2thIGFuZCBIYXdhaWkgYXJlIHNoaWZ0ZWQgYW5kIG5vdCB0byBzY2FsZSIsCiAgICAgICBjYXB0aW9uID0gIlNvdXJjZTogQ29uc3VtZXIgRmluYW5jaWFsIFByb3RlY3Rpb24gQnVyZWF1IiwKICAgICAgIGZpbGwgPSAiVG90YWwiKSArCiAgc2NhbGVfZmlsbF92aXJpZGlzKGRpcmVjdGlvbj0tMSkKICAKCmBgYAoKCgojIyMgTnVtYmVyIG9mIGxvYW5zIG9yaWdpbmF0ZWQgcGVyIGNlbnN1cyB0cmFjdApgYGB7cn0KbGVmdF9qb2luKHdpbG1pbmd0b25fY2Vuc3VzLAogICAgICAgICAgd2lsbWluZ3Rvbl9obWRhXzEwXzE5ICU+JSAKICAgICAgICAgIGZpbHRlcigKICAgICAgICAgICAgYWN0aW9uX3Rha2VuID09IDEKICAgICAgICAgICkgJT4lIAogICAgICAgICAgZ3JvdXBfYnkoeWVhciwgZ2VvaWQpICU+JSAKICAgICAgICAgIHN1bW1hcmlzZSgKICAgICAgICAgICAgdG90YWwgPSBzdW0obG9hbl9hbW91bnQpLAogICAgICAgICAgICBjb3VudCA9IG4oKQogICAgICAgICAgKQogICwgYnk9Imdlb2lkIgogICkgJT4lIAogIGdncGxvdCgpICsKICBnZW9tX3NmKGFlcygKICAgIGZpbGw9Y291bnQKICAgICkpICsKICBjb29yZF9zZihkYXR1bT1OQSkgKwogIGxhYnModGl0bGUgPSAiTnVtYmVyIG9mIGxvYW5zIG9yaWdpbmF0ZWQgcGVyIGNlbnN1cyB0cmFjdCIsCiAgICAgICAjIHN1YnRpdGxlID0gIkFsYXNrYSBhbmQgSGF3YWlpIGFyZSBzaGlmdGVkIGFuZCBub3QgdG8gc2NhbGUiLAogICAgICAgY2FwdGlvbiA9ICJTb3VyY2U6IENvbnN1bWVyIEZpbmFuY2lhbCBQcm90ZWN0aW9uIEJ1cmVhdSIsCiAgICAgICBmaWxsID0gIkNvdW50IikgKwogIHNjYWxlX2ZpbGxfdmlyaWRpcyhkaXJlY3Rpb249LTEpICsKICBmYWNldF93cmFwKH55ZWFyKQpgYGAKCiMjIyBOdW1iZXIgb2YgbG9hbnMgb3JpZ2luYXRlZCBwZXIgY2Vuc3VzIHRyYWN0IChUT1RBTCAyMDEwIC0gMjAxOSkKYGBge3J9CmxlZnRfam9pbih3aWxtaW5ndG9uX2NlbnN1cywKICAgICAgICAgIHdpbG1pbmd0b25faG1kYV8xMF8xOSAlPiUgCiAgICAgICAgICBmaWx0ZXIoCiAgICAgICAgICAgIGFjdGlvbl90YWtlbiA9PSAxCiAgICAgICAgICApICU+JSAKICAgICAgICAgIGdyb3VwX2J5KGdlb2lkKSAlPiUgCiAgICAgICAgICBzdW1tYXJpc2UoCiAgICAgICAgICAgIHRvdGFsID0gc3VtKGxvYW5fYW1vdW50KSwKICAgICAgICAgICAgY291bnQgPSBuKCkKICAgICAgICAgICkKICAsIGJ5PSJnZW9pZCIKICApICU+JSAKICBnZ3Bsb3QoKSArCiAgZ2VvbV9zZihhZXMoCiAgICBmaWxsPWNvdW50CiAgICApKSArCiAgY29vcmRfc2YoZGF0dW09TkEpICsKICBsYWJzKHRpdGxlID0gIk51bWJlciBvZiBsb2FucyBvcmlnaW5hdGVkIHBlciBjZW5zdXMgdHJhY3QgKFRPVEFMIDIwMTAgLSAyMDE5KSIsCiAgICAgICAjIHN1YnRpdGxlID0gIkFsYXNrYSBhbmQgSGF3YWlpIGFyZSBzaGlmdGVkIGFuZCBub3QgdG8gc2NhbGUiLAogICAgICAgY2FwdGlvbiA9ICJTb3VyY2U6IENvbnN1bWVyIEZpbmFuY2lhbCBQcm90ZWN0aW9uIEJ1cmVhdSIsCiAgICAgICBmaWxsID0gIkNvdW50IikgKwogIHNjYWxlX2ZpbGxfdmlyaWRpcyhkaXJlY3Rpb249LTEpCmBgYAoKIyMjIE51bWJlciBvZiBsb2FucyBkZW5pZWQgcGVyIGNlbnN1cyB0cmFjdApgYGB7cn0KbGVmdF9qb2luKHdpbG1pbmd0b25fY2Vuc3VzLAogICAgICAgICAgd2lsbWluZ3Rvbl9obWRhXzEwXzE5ICU+JSAKICAgICAgICAgIGZpbHRlcigKICAgICAgICAgICAgYWN0aW9uX3Rha2VuICE9IDEKICAgICAgICAgICkgJT4lIAogICAgICAgICAgZ3JvdXBfYnkoeWVhciwgZ2VvaWQpICU+JSAKICAgICAgICAgIHN1bW1hcmlzZSgKICAgICAgICAgICAgdG90YWwgPSBzdW0obG9hbl9hbW91bnQpLAogICAgICAgICAgICBjb3VudCA9IG4oKQogICAgICAgICAgKQogICwgYnk9Imdlb2lkIgogICkgJT4lIAogIGdncGxvdCgpICsKICBnZW9tX3NmKGFlcygKICAgIGZpbGw9Y291bnQKICAgICkpICsKICBjb29yZF9zZihkYXR1bT1OQSkgKwogIGxhYnModGl0bGUgPSAiTnVtYmVyIG9mIGxvYW5zIGRlbmllZCBwZXIgY2Vuc3VzIHRyYWN0IiwKICAgICAgIGNhcHRpb24gPSAiU291cmNlOiBDb25zdW1lciBGaW5hbmNpYWwgUHJvdGVjdGlvbiBCdXJlYXUiLAogICAgICAgZmlsbCA9ICJDb3VudCIpICsKICBzY2FsZV9maWxsX3ZpcmlkaXMoZGlyZWN0aW9uPS0xKSArCiAgZmFjZXRfd3JhcCh+eWVhcikKYGBgCiMjIyBOdW1iZXIgb2YgbG9hbnMgZGVuaWVkIHBlciBjZW5zdXMgdHJhY3QgKFRPVEFMIDIwMTAgLSAyMDE5KQpgYGB7cn0KbGVmdF9qb2luKHdpbG1pbmd0b25fY2Vuc3VzLAogICAgICAgICAgd2lsbWluZ3Rvbl9obWRhXzEwXzE5ICU+JSAKICAgICAgICAgIGZpbHRlcigKICAgICAgICAgICAgYWN0aW9uX3Rha2VuICE9IDEKICAgICAgICAgICkgJT4lIAogICAgICAgICAgZ3JvdXBfYnkoZ2VvaWQpICU+JSAKICAgICAgICAgIHN1bW1hcmlzZSgKICAgICAgICAgICAgdG90YWwgPSBzdW0obG9hbl9hbW91bnQpLAogICAgICAgICAgICBjb3VudCA9IG4oKQogICAgICAgICAgKQogICwgYnk9Imdlb2lkIgogICkgJT4lIAogIGdncGxvdCgpICsKICBnZW9tX3NmKGFlcygKICAgIGZpbGw9Y291bnQKICAgICkpICsKICBjb29yZF9zZihkYXR1bT1OQSkgKwogIGxhYnModGl0bGUgPSAiTnVtYmVyIG9mIGxvYW5zIGRlbmllZCBwZXIgY2Vuc3VzIHRyYWN0IChUT1RBTCAyMDEwIC0gMjAxOSkiLAogICAgICAgY2FwdGlvbiA9ICJTb3VyY2U6IENvbnN1bWVyIEZpbmFuY2lhbCBQcm90ZWN0aW9uIEJ1cmVhdSIsCiAgICAgICBmaWxsID0gIkNvdW50IikgKwogIHNjYWxlX2ZpbGxfdmlyaWRpcyhkaXJlY3Rpb249LTEpCmBgYAoKIyMjIE1vc3QgY29tbW9uIHJlYXNvbiBmb3IgbG9hbiBkZW5pYWwgYnkgY2Vuc3VzIHRyYWN0CgojIyMgUGVyY2VudCBvZiBkb2xsYXJzIHRoYXQgd2VudCB0byBtYWpvcml0eSB3aGl0ZSBjZW5zdXMgdHJhY3RzCgojIyMgTGVuZGluZyBieSBsZW5kZXIKCgojIyMgTG9jYXRpb24gY29tcGFyaXNvbgo=