##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Το dataset περιέχει δημογραφικά, οικονομικά και πιστωτικά στοιχεία για άτομα που έχουν αιτηθεί δάνειο. https://www.kaggle.com/datasets/udaymalviya/bank-loan-data.
Το συγκεκριμένο dataset είναι εξαιρετικά χρήσιμο για την επιχειρηματική αναλυτική καθώς επιτρέπει:
Αξιολόγηση πιστοληπτικής ικανότητας (credit scoring)
Πρόβλεψη πιθανότητας χρεοκοπίας ενός πελάτη
Βελτιστοποίηση επιτοκίων και όρων δανειοδότησης με βάση το ρίσκο
Διαχείριση ρίσκου και βελτίωση στρατηγικών ανάκτησης οφειλών
Ποιοι παράγοντες επηρεάζουν περισσότερο την έγκριση ενός δανείου;
Υπάρχει συσχέτιση μεταξύ του επιτοκίου και του κινδύνου αθέτησης πληρωμών;
Ποιο δημογραφικό προφίλ δανειοληπτών έχει τη μεγαλύτερη πιθανότητα αποπληρωμής;
Υπάρχει διαφορά στη χορήγηση δανείων μεταξύ ατόμων με διαφορετικά επίπεδα εκπαίδευσης ή επαγγελματικής εμπειρίας;
person_age: Ηλικία του ατόμου που αιτείται το δάνειο. Τύπος δεδομένων: αριθμητική (int/float). Εύρος τιμών: 18+ έτη.
person_gender: Φύλο του ατόμου. Τύπος δεδομένων: κατηγορική (string). Δυνατές τιμές: “Male”, “Female”.
person_education: Επίπεδο εκπαίδευσης του ατόμου. Τύπος δεδομένων: κατηγορική (string). Δυνατές τιμές: “High School”, “Bachelor”, “Master”, κ.ά.
person_income: Ετήσιο εισόδημα του ατόμου σε δολάρια. Τύπος δεδομένων: αριθμητική (float).
person_emp_exp: Χρόνια επαγγελματικής εμπειρίας του ατόμου. Τύπος δεδομένων: αριθμητική (float). Εύρος τιμών: 0+ έτη.
person_home_ownership: Κατάσταση ιδιοκτησίας κατοικίας. Τύπος δεδομένων: κατηγορική (string). Δυνατές τιμές: “RENT”, “OWN”, “MORTGAGE”, κ.ά.
loan_amnt: Ποσό του δανείου που αιτήθηκε το άτομο, σε δολάρια. Τύπος δεδομένων: αριθμητική (float).
loan_intent: Σκοπός για τον οποίο λαμβάνεται το δάνειο. Τύπος δεδομένων: κατηγορική (string). Δυνατές τιμές: “PERSONAL”, “EDUCATION”, “MEDICAL”, κ.ά.
loan_int_rate: Επιτόκιο του δανείου σε ποσοστό (%). Τύπος δεδομένων: αριθμητική (float). Εύρος τιμών: 0-100%.
loan_percent_income: Ποσοστό του ετήσιου εισοδήματος που διατίθεται για την αποπληρωμή του δανείου. Τύπος δεδομένων: αριθμητική (float). Εύρος τιμών: 0-1.
cb_person_cred_hist_length: Μήκος του πιστωτικού ιστορικού του ατόμου, σε έτη. Τύπος δεδομένων: αριθμητική (int). Εύρος τιμών: 0+ έτη.
credit_score: Πιστωτική βαθμολογία του ατόμου. Τύπος δεδομένων: αριθμητική (int). Τυπικό εύρος τιμών: 300-850.
previous_loan_defaults_on_file: Υπάρχουν προηγούμενες αθετήσεις πληρωμών; Τύπος δεδομένων: κατηγορική (string). Δυνατές τιμές: “Yes”, “No”.
loan_status: Κατάσταση αποπληρωμής του δανείου. Τύπος δεδομένων:
δυαδική (0: Αθέτηση πληρωμής, 1: Κανονική αποπληρωμή).
summary(loandata)
## person_age person_gender person_education person_income
## Min. : 20.00 Length:45000 Length:45000 Min. : 8000
## 1st Qu.: 24.00 Class :character Class :character 1st Qu.: 47204
## Median : 26.00 Mode :character Mode :character Median : 67048
## Mean : 27.76 Mean : 80319
## 3rd Qu.: 30.00 3rd Qu.: 95789
## Max. :144.00 Max. :7200766
## person_emp_exp person_home_ownership loan_amnt loan_intent
## Min. : 0.00 Length:45000 Min. : 500 Length:45000
## 1st Qu.: 1.00 Class :character 1st Qu.: 5000 Class :character
## Median : 4.00 Mode :character Median : 8000 Mode :character
## Mean : 5.41 Mean : 9583
## 3rd Qu.: 8.00 3rd Qu.:12237
## Max. :125.00 Max. :35000
## loan_int_rate loan_percent_income cb_person_cred_hist_length credit_score
## Min. : 5.42 Min. :0.0000 Min. : 2.000 Min. :390.0
## 1st Qu.: 8.59 1st Qu.:0.0700 1st Qu.: 3.000 1st Qu.:601.0
## Median :11.01 Median :0.1200 Median : 4.000 Median :640.0
## Mean :11.01 Mean :0.1397 Mean : 5.867 Mean :632.6
## 3rd Qu.:12.99 3rd Qu.:0.1900 3rd Qu.: 8.000 3rd Qu.:670.0
## Max. :20.00 Max. :0.6600 Max. :30.000 Max. :850.0
## previous_loan_defaults_on_file loan_status
## Length:45000 Min. :0.0000
## Class :character 1st Qu.:0.0000
## Mode :character Median :0.0000
## Mean :0.2222
## 3rd Qu.:0.0000
## Max. :1.0000
library(ggplot2)
ggplot(loandata, aes(x = person_age, y = person_income)) + geom_point()
Παρατηρείται ότι το μεγαλύτερο μέρος των δεδομένων συγκεντρώνεται σε χαμηλές τιμές εισοδήματος.
Υπάρχουν ορισμένες ακραίες τιμές (outliers) ιδιαίτερα σε άτομα με εξαιρετικά υψηλό εισόδημα και μεγάλη ηλικία (>100 έτη), που ενδεχομένως να είναι σφάλματα ή εξαιρετικά σπάνιες περιπτώσεις.
library(ggplot2)
ggplot(loandata, aes(x = loan_amnt, y = person_education)) + geom_point()
Το ποσό δανείου κατανέμεται ομοιόμορφα μεταξύ των επιπέδων εκπαίδευσης.
Δεν φαίνεται ξεκάθαρη σχέση μεταξύ επιπέδου εκπαίδευσης και ποσού δανείου.
Πιθανώς απαιτείται διαφορετική απεικόνιση (π.χ. boxplot) για να διερευνηθεί καλύτερα η κατανομή των ποσών ανά κατηγορία.
ggplot(loandata, aes(x = loan_amnt, y = person_age, fill = "blue")) +
geom_boxplot() +
theme_minimal() +
scale_fill_brewer(palette = "Set3")
Τα περισσότερα δεδομένα βρίσκονται κοντά στον πυθμένα του boxplot, υποδηλώνοντας ότι το μεγαλύτερο μέρος των δανείων αφορά άτομα σε χαμηλότερες ηλικίες.
Υπάρχουν σημαντικά outliers σε υψηλές ηλικίες, που ίσως χρειάζονται περαιτέρω ανάλυση.
Η διανομή του ποσού δανείου φαίνεται συγκεντρωμένη σε μια συγκεκριμένη περιοχή με λίγες εξαιρέσεις.
ggplot(loandata, aes(loan_amnt)) +
geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Τα περισσότερα δάνεια φαίνεται να είναι συγκεντρωμένα σε χαμηλότερα ποσά (κάτω από 15.000). Υπάρχουν επίσης μερικές κορυφές (spikes), πιθανότατα λόγω συγκεκριμένων σταθερών ποσών δανείου που επιλέγονται συχνά. Διασπορά και Συμμετρία Το διάγραμμα δείχνει μια ασύμμετρη κατανομή, με ουρά προς τα δεξιά (δεξιά λοξότητα). Αυτό σημαίνει ότι υπάρχουν μερικά δάνεια με πολύ υψηλά ποσά, αλλά είναι λιγότερο συχνά. Ρυθμίσεις του Histogram Η προεπιλεγμένη τιμή bins = 30 έχει χρησιμοποιηθεί για την ομαδοποίηση των δεδομένων. Ενδέχεται να χρειαστεί προσαρμογή της παραμέτρου binwidth για πιο ομαλή παρουσίαση.
ggplot(loandata, aes(loan_intent)) +
geom_bar()
Εκπαίδευση (EDUCATION) και Ιατρικά Έξοδα (MEDICAL) είναι από τους πιο συχνούς σκοπούς δανείων. Η κατηγορία HOMEIMPROVEMENT έχει το μικρότερο αριθμό δανείων, δηλώνοντας ότι λιγότεροι δανειολήπτες παίρνουν δάνειο για ανακαίνιση σπιτιού. Οι υπόλοιπες κατηγορίες έχουν σχετικά ισοκατανεμημένο αριθμό δανείων, χωρίς μεγάλες διαφορές μεταξύ τους. Συμπέρασμα Το διάγραμμα μας βοηθά να κατανοήσουμε τις προτεραιότητες των δανειοληπτών. Παρατηρούμε ότι οι πιο συχνοί λόγοι λήψης δανείων σχετίζονται με εκπαίδευση και ιατρικά έξοδα, ενώ οι λιγότεροι δανειολήπτες επιλέγουν δάνεια για βελτίωση κατοικίας
model1 <- lm(person_age ~ loan_amnt, data = loandata)
summary(model1)
##
## Call:
## lm(formula = person_age ~ loan_amnt, data = loandata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.477 -4.270 -1.663 2.410 116.468
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.730e+01 5.172e-02 527.77 <2e-16 ***
## loan_amnt 4.858e-05 4.507e-06 10.78 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.037 on 44998 degrees of freedom
## Multiple R-squared: 0.002576, Adjusted R-squared: 0.002553
## F-statistic: 116.2 on 1 and 44998 DF, p-value: < 2.2e-16
ggplot(loandata, aes(x = loan_amnt, y = person_age)) +
geom_point(alpha = 0.5) +
geom_abline(intercept = coef(model1)[1], slope = coef(model1)[2], color = "red", linewidth = 1.2) +
labs(title = "Γραμμική Παλινδρόμηση: Ηλικία ~ Ποσό Δανείου",
x = "Loan Amount", y = "Person Age")
Σχόλιο: Το διάγραμμα παρουσιάζει τη γραμμική παλινδρόμηση της ηλικίας σε σχέση με το ποσό δανείου. Από την κατανομή των σημείων φαίνεται ότι υπάρχει μεγάλη συγκέντρωση ατόμων με χαμηλά ποσά δανείων, κυρίως κάτω από τις 10.000 μονάδες, ενώ οι ηλικίες κυμαίνονται κυρίως μεταξύ 20 και 60 ετών. Η κόκκινη γραμμή παλινδρόμησης είναι σχεδόν οριζόντια, γεγονός που υποδηλώνει ότι δεν υπάρχει ουσιαστική γραμμική συσχέτιση μεταξύ της ηλικίας και του ποσού δανείου. Συνεπώς, μπορούμε να συμπεράνουμε πως η ηλικία δεν επηρεάζει εμφανώς το ποσό του δανείου, τουλάχιστον με γραμμικό τρόπο.
model2 <- lm(person_age ~ loan_amnt + person_income , data = loandata)
summary(model2)
##
## Call:
## lm(formula = person_age ~ loan_amnt + person_income, data = loandata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.067 -4.129 -1.700 2.365 113.916
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.656e+01 5.397e-02 492.222 <2e-16 ***
## loan_amnt 3.883e-06 4.563e-06 0.851 0.395
## person_income 1.449e-05 3.583e-07 40.428 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.931 on 44997 degrees of freedom
## Multiple R-squared: 0.03753, Adjusted R-squared: 0.03749
## F-statistic: 877.4 on 2 and 44997 DF, p-value: < 2.2e-16
Σχόλιο: Με την προσθήκη του person_income στο μοντέλο, παρατηρείται αξιοσημείωτη βελτίωση. Ο νέος συντελεστής για το person_income είναι στατιστικά σημαντικός (p-value < 2e-16) και έχει θετικό πρόσημο, υποδηλώνοντας ότι όσο αυξάνεται το εισόδημα, αυξάνεται και η ηλικία, κάτι που ίσως αντανακλά μια γενική τάση μεγαλύτερων ηλικιών να έχουν υψηλότερα εισοδήματα. Αντίθετα, το loan_amnt πλέον δεν είναι στατιστικά σημαντικό (p-value = 0.395), πράγμα που σημαίνει ότι μόλις προστεθεί το εισόδημα στο μοντέλο, η επίδραση του ποσού του δανείου στην ηλικία σχεδόν εξαφανίζεται. Η τιμή του R-squared αυξάνεται στο 0.0375, κάτι που δείχνει ότι το μοντέλο εξηγεί περίπου το 3.75% της διακύμανσης στην ηλικία — σαφώς βελτιωμένο σε σχέση με το προηγούμενο μοντέλο, αν και ακόμα σχετικά χαμηλό. Συνοπτικά, η προσθήκη του εισοδήματος βελτιώνει το μοντέλο και αναδεικνύει ότι το εισόδημα σχετίζεται πολύ πιο έντονα με την ηλικία από ό,τι το ποσό του δανείου.
model3 <- lm(person_age ~ loan_amnt + person_income + person_education, data = loandata)
summary(model3)
##
## Call:
## lm(formula = person_age ~ loan_amnt + person_income + person_education,
## data = loandata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -19.903 -4.068 -1.702 2.389 113.582
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.696e+01 7.066e-02 381.560 < 2e-16 ***
## loan_amnt 3.288e-06 4.526e-06 0.726 0.468
## person_income 1.440e-05 3.554e-07 40.503 < 2e-16 ***
## person_educationBachelor -8.842e-01 7.389e-02 -11.967 < 2e-16 ***
## person_educationDoctorate 5.308e+00 2.421e-01 21.926 < 2e-16 ***
## person_educationHigh School -3.334e-01 7.594e-02 -4.390 1.14e-05 ***
## person_educationMaster -6.707e-01 8.851e-02 -7.577 3.60e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.882 on 44993 degrees of freedom
## Multiple R-squared: 0.05325, Adjusted R-squared: 0.05313
## F-statistic: 421.8 on 6 and 44993 DF, p-value: < 2.2e-16
Σχόλιο Η προσθήκη της μεταβλητής person_education στο μοντέλο έχει σημαντική επίδραση στην πρόβλεψη της ηλικίας. Στο προηγούμενο μοντέλο, όπου περιλαμβάνονταν μόνο οι μεταβλητές loan_amnt και person_income, το R-squared ήταν πολύ χαμηλό (0.0026), υποδεικνύοντας ότι το μοντέλο εξηγούσε μόνο το 0.26% της μεταβλητότητας στην ηλικία. Η προσθήκη του εισοδήματος αύξησε ελαφρώς την εξήγηση, αλλά παρέμεινε αρκετά περιορισμένη. Στο νέο μοντέλο, με την προσθήκη της μεταβλητής person_education, παρατηρείται μια σημαντική βελτίωση. Η person_education έχει στατιστικά σημαντική επίδραση στην ηλικία, με διαφορετικές κατηγορίες εκπαίδευσης να συνδέονται με διαφορετικά επίπεδα ηλικίας. Τα άτομα με πτυχίο Bachelor εμφανίζονται κατά μέσο όρο νεότερα από τα άτομα στην αναφορά, ενώ τα άτομα με διδακτορικό τίτλο είναι κατά μέσο όρο μεγαλύτερα. Ενδιάμεσα, τα άτομα με απολυτήριο Λυκείου και με μεταπτυχιακό τίτλο έχουν επίσης διαφοροποιήσεις στην ηλικία τους σε σχέση με την αναφορά. Η σημασία της εκπαίδευσης στο μοντέλο ενισχύει τη ικανότητά του να εξηγεί την ηλικία, αλλά το R-squared παραμένει σχετικά χαμηλό (0.0533), υποδεικνύοντας ότι υπάρχουν άλλοι παράγοντες που επίσης επηρεάζουν την ηλικία και δεν καλύπτονται από το μοντέλο. Συνολικά, η προσθήκη της εκπαίδευσης βελτιώνει την εξήγηση του μοντέλου και προσφέρει σημαντικές πληροφορίες για την ηλικία των ατόμων, αλλά το μοντέλο χρειάζεται περαιτέρω μεταβλητές ή πιο σύνθετους παράγοντες για να γίνει πιο ακριβές και να εξηγήσει καλύτερα την ηλικία των ατόμων.
library(knitr)
model_summary <- data.frame(
Μοντέλο = c(
"Ηλικία ~ Ποσό Δανείου",
"Ηλικία ~ Ποσό Δανείου + Εισόδημα",
"Ηλικία ~ Ποσό Δανείου + Εισόδημα + Εκπαίδευση"
),
R_squared = c(
summary(model1)$r.squared,
summary(model2)$r.squared,
summary(model3)$r.squared
),
SSE = c(
deviance(model1),
deviance(model2),
deviance(model3)
)
)
model_summary$R_squared <- round(model_summary$R_squared, 4)
model_summary$SSE <- round(model_summary$SSE, 2)
kable(model_summary, caption = "Σύγκριση Μοντέλων: R² και SSE")
| Μοντέλο | R_squared | SSE |
|---|---|---|
| Ηλικία ~ Ποσό Δανείου | 0.0026 | 1640178 |
| Ηλικία ~ Ποσό Δανείου + Εισόδημα | 0.0375 | 1582692 |
| Ηλικία ~ Ποσό Δανείου + Εισόδημα + Εκπαίδευση | 0.0533 | 1556845 |
Συνολικά, τα τρία μοντέλα παρέχουν μια αναλυτική εικόνα της σχέσης μεταξύ διαφόρων παραμέτρων και της ηλικίας των ατόμων, αλλά κάθε μοντέλο έχει τις δικές του αδυναμίες και πλεονεκτήματα. Στο πρώτο μοντέλο, που περιλάμβανε μόνο το loan_amnt, το μοντέλο αποδείχθηκε πολύ περιορισμένο, καθώς η μεταβλητή αυτή εξηγούσε ελάχιστο ποσοστό της μεταβλητότητας στην ηλικία (μόλις 0.26% του R-squared). Παρά την στατιστική σημαντικότητα του ποσού του δανείου, η χαμηλή εξήγηση της ηλικίας υποδεικνύει ότι το ποσό του δανείου δεν είναι ουσιαστικός παράγοντας για την πρόβλεψη της ηλικίας. Το δεύτερο μοντέλο, που προσέθεσε τη μεταβλητή person_income, παρουσίασε μια μικρή βελτίωση στην εξήγηση της ηλικίας (R-squared: 0.0533), με το εισόδημα να αποδεικνύεται σημαντικό παράγοντα για την ηλικία. Ωστόσο, το ποσό του δανείου παρέμεινε μη σημαντικό, υποδεικνύοντας ότι το εισόδημα είχε μεγαλύτερη επίδραση στην ηλικία. Στο τρίτο μοντέλο, η προσθήκη της μεταβλητής person_education ενίσχυσε σημαντικά το μοντέλο, καθώς η εκπαίδευση των ατόμων αποδείχθηκε ισχυρός προγνωστικός παράγοντας για την ηλικία. Η εκπαίδευση φάνηκε να επηρεάζει την ηλικία, με άτομα με διδακτορικό τίτλο να είναι μεγαλύτερα και άτομα με πτυχίο Bachelor ή Master να είναι νεότερα, συγκριτικά με την αναφορά. Παρά τη βελτίωση, το R-squared παρέμεινε χαμηλό (0.0533), υποδεικνύοντας ότι το μοντέλο εξακολουθεί να μην εξηγεί μεγάλο μέρος της μεταβλητότητας στην ηλικία. Σε τελική ανάλυση, ενώ η προσθήκη της person_education προσφέρει μια πιο ολοκληρωμένη εικόνα για την πρόβλεψη της ηλικίας, τα μοντέλα συνολικά υποδεικνύουν ότι υπάρχουν άλλοι παράγοντες που επηρεάζουν την ηλικία και δεν καλύπτονται πλήρως από τις μεταβλητές που εξετάστηκαν. Επομένως, παρά την πρόοδο που επιτεύχθηκε με την προσθήκη των νέων μεταβλητών, το μοντέλο εξακολουθεί να απαιτεί περαιτέρω βελτιώσεις και ίσως την προσθήκη περισσότερων παραμέτρων για να προσφέρει καλύτερη εξήγηση της ηλικίας των ατόμων.