Wo kann man als Latinx einen Immobilienkredit beantragen? Clusteranalyse von Finanzinstituten | von Martin Calvino | Juni 2023

0
29


Von Martin Calvino mit dem DCGAN-Algorithmus erstelltes Bild.

Stellen Sie sich eine gemeinnützige Organisation vor, die sich darauf konzentriert Latinx gibt Ihnen Aufträge Analysieren Sie alle Finanzinstitute in den Vereinigten Staaten um diejenigen zu identifizieren, mit denen „freundliche“ Wohnungsbaudarlehensangebote Zu Latinxs. Weil Zugang zu gleichberechtigten Chancen im Wohneigentum wird als grundlegender Aspekt angesehen soziale Gerechtigkeit; die Identifizierung von Finanzinstituten gekennzeichnet durch hohe Prozentsätze angenommener Wohnungsbaudarlehensanträge zusammen mit niedrige Zinsen in Richtung Latinxs würde eine wichtige Wissensressource für diese gesellschaftliche Gruppe darstellen.

In dieser Arbeit Ich habe 3.731 Finanzinstitute analysiert im ganzen Land, das gemeinsam verarbeitet wurde 2.243.013 Wohnungsbaudarlehensanträge eingegangen von Latinxs im Jahr 2021. Die Umsetzung von Clusteranalyse ermöglichte es mir, Finanzinstitute zu identifizieren, bei denen Wohnungsbaudarlehensanträge angenommen wurden Latinxs bei hohe Prozentsätze und gleichzeitig bereitgestellt niedrige Zinsen auf ihre gewährten Kredite.

CLUSTERANALYSE

Clusteranalyse besteht aus zahlreichen Datenreduktionsmethoden, die darauf ausgelegt sind, Untergruppen von Beobachtungen in einem Datensatz aufzudecken. Es ermöglicht Ihnen, eine große Anzahl von Beobachtungen auf eine kleinere Anzahl zu reduzieren Cluster oder Typen; mit jedem Cluster enthält Beobachtungen, die einander ähnlicher sind als Beobachtungen in anderen Cluster.

In meiner Arbeit, Finanzinstitute wurden anhand der Ähnlichkeit des Prozentsatzes der angenommenen Wohnungsbaudarlehen, der durchschnittlichen Zinssätze und der durchschnittlichen Kreditbeträge gruppiert professional Financial institution bzw. Basierend auf diesen Informationen, Latinxs Antragstellern wird empfohlen, sich bei den Untergruppen von Finanzinstituten zu bewerben, die einen höheren Akzeptanzprozentsatz und niedrigere Zinssätze für ihre beabsichtigten Kreditbeträge aufweisen.

Es gibt zwei Hauptansätze dazu Clusterbildungman ist bekannt als hierarchische agglomerative Clusterbildungund der andere ist bekannt als Partitionierungs-Clustering. Während in hierarchische agglomerative Clusterbildung Jede Beobachtung beginnt bei ihrem eigenen Cluster, wobei die Cluster anschließend jeweils zu zweit kombiniert werden, bis alle Cluster zu einem einzigen großen Cluster vereint sind. In Partitionierungs-Clusteringmüssen wir spezifizieren okaydie Anzahl der gesuchten Cluster, denen Beobachtungen zufällig zugeordnet werden okay Gruppen bilden und neu mischen, bis zusammenhängende Cluster entstehen. Wir visualisieren hierarchische Clusterbildung in Kind von Dendrogramme Und Partitionierungs-Clustering in Kind von bivariate Clusterdiagramme.

Die verwendeten Clustering-Algorithmen sind für jeden Ansatz unterschiedlich. Für hierarchische Clusterbildung diese sind: Einzelverbindung, vollständige Verknüpfung, durchschnittliche Verbindung, SchwerpunktUnd Wards Methode. Für Partitionierungs-Clustering diese sind: k-bedeutet Und Partitionierung um Medoide (PAM) (Eine ausführliche Erklärung finden Sie in den Referenzen). Alle diese Algorithmen erfordern eine Maß für die Entfernung Zu den zu gruppierenden Beobachtungen können folgende gehören: Euklidisch, Manhattan, Canberra, asymmetrische Binärdatei, maximalUnd Minkowski Distanz; wobei größere Abstände größere Unähnlichkeiten zwischen Beobachtungen bedeuten (der Abstand zwischen einer Beobachtung und sich selbst ist 0).

In dieser Arbeit Ich habe es erkundet durchschnittliche Verbindung als Clustering-Algorithmus für die Implementierung von hierarchische Clusterbildung Und Partitionierung um Medoide als Clustering-Algorithmus für die Implementierung von Partitionierungs-Clustering. In beiden Ansätzen habe ich verwendet Euklidische Entfernung.

DATENAUFBEREITUNG

Ich habe alle Hypothekenanträge für ein Jahr im ganzen Land heruntergeladen 2021 von dem Büro für finanziellen Verbraucherschutz (CFPB) Web site, auf der die Datensatz des Residence Mortgage Disclosure Act (HMDA). warfare öffentlich zugänglich. Dies stellte dar 19.182.225 Kreditanträge die von verarbeitet wurden 4.292 Finanzinstitute bundesweit. Als ich darüber nachdachte Nur für Antragsteller von Latinxs-Wohnungsbaudarlehenmein Datensatz bestand aus 3.731 Finanzinstitute, die 2.243.013 Anträge bearbeitet haben.

### load libraries
library(tidyverse)
library(NbClust)
library(cluster)
library(fMultivar)
library(patchwork)
library(MetBrewer)
library(plot3D)
library(ggrepel)

### load datasets

# load dataset: residence loans nationwide for 2021
banks <- learn.csv(file.select()) # 19,182,225 observations x 99 variables
size(ranges(issue(banks$lei))) # 4,292 monetary establishments

# load csv file with widespread financial institution names mapped to leis by 12 months
financial institution.names <- learn.csv(file.select())
View(financial institution.names)
# choose leis for 2020 (the newest 12 months)
financial institution.names <- financial institution.names[, c(1,5)]
View(financial institution.names)
# rename variable lei_2020 to lei
names(financial institution.names)[2] <- "lei" # this may assist in left_join operation
View(financial institution.names) # 5,399 entries

# solely contemplate banks which have widespread names assigned to leis
my.banks <- filter(financial institution.names, lei %in% banks$lei)
size(ranges(issue(my.banks$respondent_name))) # 3,731 monetary establishments
View(my.banks)
# add widespread names to banks knowledge body
banks <- inner_join(my.banks, banks, by = c("lei"))
size(ranges(issue(banks$respondent_name))) # 3,731 monetary establishments

### latino residence mortgage candidates

# contemplate latino residence mortgage candidates solely
banks <- filter(banks, derived_ethnicity == "Hispanic or Latino") # 2,243,013 observations

Denn das Ziel meiner Arbeit warfare es, Finanzinstitute basierend auf dem zu gruppieren Prozentsatz der angenommenen Anträge auf WohnungsbaudarlehenDie mittlerer Zinssatz und das mittlere Kreditsumme professional Financial institutionAnschließend erstellte ich diese Variablen aus den vorhandenen Variablen im Datensatz und überprüfte ihre Werteverteilungen und zusammenfassenden Statistiken (Abbildung 1 und Abbildung 2). Ich habe festgestellt, dass der Median für Prozentsatz der angenommenen Kredite professional Financial institution betrug etwa 66 %, während der Medianwert für mittlerer Zinssatz professional Financial institution betrug 3,1 %. Der Medianwert für mittlere Kreditsumme professional Financial institution betrug 201.500 US-Greenback.

# examine knowledge body
str(banks)

# convert interest_rate variable to numeric
typeof(banks$interest_rate)
class(banks$interest_rate)
banks$interest_rate <- as.numeric(banks$interest_rate)
class(banks$interest_rate)

### create new variables per financial institution

# variable > proportion of accepted residence loans per financial institution

# group all residence mortgage functions per financial institution and prepare banks in descending order
banks.Organized <- banks %>%
group_by(respondent_name) %>%
summarize(c0 = n()) %>%
prepare(desc(c0))

View(banks.Organized) # 3,456 monetary establishments processed residence mortgage functions from latinos in 2021

# group accepted residence mortgage functions per financial institution and prepare banks in descending order
functions.accepted.per.financial institution <- banks %>%
filter(action_taken == 1) %>%
group_by(respondent_name) %>%
summarize(c1 = n()) %>%
prepare(desc(c1))

View(functions.accepted.per.financial institution) # 3,338 monetary establishments accepted residence mortgage functions

# contemplate banks with accepted residence mortgage functions
all.functions.per.financial institution <- banks.Organized %>%
filter(respondent_name %in% functions.accepted.per.financial institution$respondent_name)

View(all.functions.per.financial institution) # 3,338 monetary establishments

# be part of knowledge frames
pct.accepted.per.financial institution <- inner_join(all.functions.per.financial institution, functions.accepted.per.financial institution, by = c("respondent_name"))
View(pct.accepted.per.financial institution)
# create new variable containing the proportion of accepted residence loans per financial institution
pct.accepted.per.financial institution <- mutate(pct.accepted.per.financial institution, pct.accepted = (c1*100)/c0)
View(pct.accepted.per.financial institution)

# variable > imply interest_rate per financial institution

# calculate the imply rate of interest per financial institution
# values for rates of interest are solely current in residence mortgage functions that had been accepted by the financial institution
imply.ir.per.financial institution <- banks %>%
filter(respondent_name %in% pct.accepted.per.financial institution$respondent_name) %>%
filter(action_taken == 1) %>%
group_by(respondent_name) %>%
summarize(imply.ir = as.numeric(imply(interest_rate)))

View(imply.ir.per.financial institution)

# be part of knowledge frames
banks.to.be.clustered <- inner_join(pct.accepted.per.financial institution, imply.ir.per.financial institution, by = c("respondent_name"))
View(banks.to.be.clustered)

# variable > imply loan_amount per financial institution
imply.la.per.financial institution <- banks %>%
filter(respondent_name %in% pct.accepted.per.financial institution$respondent_name) %>%
filter(action_taken == 1) %>%
group_by(respondent_name) %>%
summarize(imply.la = imply(loan_amount))

View(imply.la.per.financial institution)

# be part of knowledge frames
banks.to.be.clustered <- inner_join(banks.to.be.clustered, imply.la.per.financial institution, by = c("respondent_name"))
View(banks.to.be.clustered)

### determine and take away lacking values
sum(is.na(banks.to.be.clustered))
banks.to.be.clustered <- na.omit(banks.to.be.clustered)
View(banks.to.be.clustered) # 2,377 monetary establishments

### examine abstract statistics
abstract(banks.to.be.clustered[, c(4:6)])

# examine the distribution of proportion of accepted loans per financial institution
plot1 <- ggplot(knowledge = banks.to.be.clustered, mapping = aes(x = pct.accepted)) +
geom_histogram()
# examine the distribution of imply rate of interest per financial institution
plot2 <- ggplot(knowledge = banks.to.be.clustered, mapping = aes(x = imply.ir)) +
geom_histogram()
# examine the distribution of imply mortgage quantity per financial institution
plot3 <- ggplot(knowledge = banks.to.be.clustered, mapping = aes(x = imply.la)) +
geom_histogram()

plot1 + plot2 + plot3

Abbildung 1. Screenshot der Konsolenausgabe von RStudio mit den zusammenfassenden Statistiken für die Variablen Prozentsatz der akzeptierten Wohnungsbaudarlehen professional Financial institution (pct.accepted), mittlerer Zinssatz professional Financial institution (imply.ir) und mittlerer Kreditbetrag professional Financial institution (imply.la). Es werden Ergebnisse für 2.377 Finanzinstitute angezeigt, die Wohnungsbaudarlehen von lateinamerikanischen Antragstellern bearbeitet haben.
Figur 2. Histogramme, die die Verteilung der Werte für die Variablen Prozentsatz der akzeptierten Wohnungsbaudarlehen professional Financial institution (pct.accepted > linkes Diagramm), mittlerer Zinssatz professional Financial institution (imply.ir > mittleres Diagramm) und mittlerer Kreditbetrag professional Financial institution (imply.la > rechts) anzeigen Parzelle). Die Ergebnisse basieren auf 2.377 Finanzinstituten, die Wohnungsbaudarlehen von lateinamerikanischen Antragstellern bearbeitet haben.

UMSETZUNG DES AGGLOMERATIVEN HIERARCHISCHEN CLUSTERINGS

Weil agglomerative hierarchische Clusterbildung Funktioniert am besten, wenn die Anzahl der Beobachtungen unter 150 liegt. Ich habe die 100 besten Finanzinstitute im Hinblick auf die Anzahl der bearbeiteten eingereichten Wohnungsbaudarlehensanträge ausgewählt Latinxs (Figur 3).

### HIERARCHICAL CLUSTERING

# contemplate the top100 monetary establishments by way of processed residence loans (c0 variable)
top100 <- banks.to.be.clustered[1:100, ]
View(top100)

# visualize these
ggplot(knowledge = top100) +
geom_col(mapping = aes(x = reorder(respondent_name, c0), y = c0)) +
coord_flip() +
theme_bw()

# examine abstract statistics
abstract(top100[, c(4:6)])
# the median for proportion of accepted mortgage functions per financial institution is: 55.9%
# the median rate of interest per financial institution is: 3.0%
# the median mortgage quantity per financial institution is: $267,447

# take away columns c0 and c1
top100 <- top100[, -c(2,3)]
View(top100)



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here