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=