Εργασία 4

2025-03-27

Περιγραφή του Dataset

Το Bank Marketing Dataset προέρχεται από το UCI Machine Learning Repository και περιέχει δεδομένα από μια καμπάνια άμεσου μάρκετινγκ μιας πορτογαλικής τράπεζας. Συγκεκριμένα, αφορά τις τηλεφωνικές προωθητικές ενέργειες της τράπεζας με στόχο την εγγραφή πελατών σε προθεσμιακές καταθέσεις. Το dataset περιλαμβάνει 45.211 εγγραφές και 17 μεταβλητές, οι οποίες καλύπτουν δημογραφικά χαρακτηριστικά, προηγούμενες αλληλεπιδράσεις και πληροφορίες σχετικά με την καμπάνια.


Αιτιολόγηση της Επιλογής σε Σχέση με την Επιχειρηματική Αναλυτική

Η επιλογή του dataset βασίζεται στη δυνατότητά του να παρέχει πολύτιμες πληροφορίες για τη βελτιστοποίηση στρατηγικών μάρκετινγκ στον τραπεζικό τομέα. Μέσω της ανάλυσης αυτών των δεδομένων, οι επιχειρήσεις μπορούν να: Προβλέψουν ποιοι πελάτες είναι πιθανότερο να ανταποκριθούν θετικά σε μια καμπάνια. Βελτιστοποιήσουν τις τηλεφωνικές στρατηγικές επικοινωνίας για μεγαλύτερη αποτελεσματικότητα. Εξάγουν συμπεράσματα σχετικά με το προφίλ των πελατών που ενδιαφέρονται για προθεσμιακές καταθέσεις.


Επιχειρηματικά ερωτήματα

1.Ποιοι πελάτες είναι πιθανότερο να εγγραφούν σε μια προθεσμιακή κατάθεση;
2.Βελτιστοποίηση καμπάνιας: Ποιες παράμετροι (π.χ. διάρκεια συνομιλίας, αριθμός κλήσεων) επηρεάζουν περισσότερο;
3.Χρονισμός επικοινωνίας: Υπάρχουν συγκεκριμένες χρονικές περίοδοι (π.χ. μήνες, ημέρες) που οδηγούν σε καλύτερη απόκριση;
4.Στρατηγική στόχευσης: Πώς διαφέρουν οι επιτυχημένες κλήσεις μεταξύ διαφορετικών δημογραφικών ομάδων;


Περιγραφικά Στατιστικά για τη Μεταβλητή balance


# Υπολογισμός μέτρων κεντρικής τάσης
mean_balance <- mean(bank.full$balance, na.rm = TRUE)  # Μέσος όρος
median_balance <- median(bank.full$balance, na.rm = TRUE)  # Διάμεσος

# Υπολογισμός επικρατούσας τιμής (mode) χωρίς modeest
mode_balance <- as.numeric(names(sort(table(bank.full$balance), decreasing = TRUE)[1]))

# Υπολογισμός μέτρων διασποράς
sd_balance <- sd(bank.full$balance, na.rm = TRUE)  # Τυπική απόκλιση
var_balance <- var(bank.full$balance, na.rm = TRUE)  # Διακύμανση
range_balance <- range(bank.full$balance, na.rm = TRUE)  # Εύρος (min & max)
range_diff <- diff(range_balance)  # Υπολογισμός εύρους

# Δημιουργία πίνακα με τα αποτελέσματα
stats_table <- data.frame(
  Μέτρο = c("Μέσος Όρος", "Διάμεσος", "Επικρατούσα Τιμή", 
            "Τυπική Απόκλιση", "Διακύμανση", "Εύρος"),
  Τιμή = c(mean_balance, median_balance, mode_balance, 
           sd_balance, var_balance, range_diff)
)

# Εκτύπωση του πίνακα
knitr::kable(stats_table)
Μέτρο Τιμή
Μέσος Όρος 1362.272
Διάμεσος 448.000
Επικρατούσα Τιμή 0.000
Τυπική Απόκλιση 3044.766
Διακύμανση 9270598.954
Εύρος 110146.000

Διερεύνηση συσχετίσεων

Οι περισσότερες κλήσεις έχουν διάρκεια μικρότερη των 1000 δευτερολέπτων. Οι πελάτες με υψηλό υπόλοιπο (πάνω από 25.000 €) εμφανίζονται κυρίως σε σύντομες κλήσεις.Ο συντελεστής συσχέτισης μεταξύ υπολοίπου λογαριασμού και διάρκειας κλήσης είναι 0.0216, που δείχνει μια σχεδόν μηδενική συσχέτιση. Παρόλο που μπορεί να φαίνεται ότι οι μεγαλύτερες διάρκειες συνδέονται με χαμηλότερα υπόλοιπα, αυτή η τάση δεν είναι αρκετά ισχυρή για να θεωρηθεί αξιόπιστη.

Διαγράμματα


1. Histogram

bins <- c(18, 30, 40, 50, 60, 90)  
labels <- c("18-30", "30-40", "40-50", "50-60", "60+")  
bank.full$age_group <- cut(
    bank.full$age, 
    breaks = bins, 
    include.lowest = TRUE,  
    right = FALSE, 
    labels = labels
)
ggplot(bank.full[!is.na(bank.full$age_group), ],
aes(x = age_group)) + geom_bar(fill = "red", 
color = "black") + labs(title = "Κατανομή ηλικιών                                               (Histogram)",  x = "Ηλικιακή ομάδα", y = "Συχνότητα") +    theme_minimal()


Παρατηρήσεις

Οι περισσότερες τιμές συγκεντρώνονται στις ηλικίες 30-40, όπου υπάρχει η μεγαλύτερη συχνότητα. Υπάρχει μια σημαντική πτώση στις μεγαλύτερες ηλικιακές ομάδες, με πολύ λίγες περιπτώσεις άνω των 60 ετών κάτι το οποίο αιτιολογεί τα επόμενα αποτελέσματα


2. Bar Chart

ggplot(bank.full, aes(x = job)) +
  geom_bar(fill = "purple", color = "black") +
  labs(title = "Κατανομή Επαγγελμάτων (Bar Chart)", x = "Επάγγελμα", y = "Συχνότητα") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))


Παρατηρήσεις

Το ραβδόγραμμα δείχνει την κατανομή των επαγγελμάτων στο dataset, με τα blue-collar, management και technician να έχουν τη μεγαλύτερη συχνότητα, ενώ τα unknown, student και housemaid εμφανίζονται λιγότερο.


3. Box plot

bank.full$age_group <- cut(bank.full$age, 
                           breaks = c(18, 30, seq(40, max(bank.full$age), by = 10)), 
 include.lowest = TRUE, right = TRUE)
ggplot(bank.full, aes(x = age_group, y = duration))+
geom_boxplot(fill = "lightblue", color = "black") + labs(title = "Boxplot: Διάρκεια Κλήσης ανά Ηλικιακή Ομάδα", x = "Ηλικιακή Ομάδα",
   y = "Διάρκεια Κλήσης (δευτερόλεπτα)") + theme_minimal() + theme(axis.text.x =element_text(angle = 45, hjust = 1)) 


Παρατηρήσεις

Το boxplot απεικονίζει τη διάρκεια κλήσεων ανά ηλικιακή ομάδα. Η κατανομή δείχνει ότι η διάμεσος είναι παρόμοια μεταξύ των ηλικιακών ομάδων, ενώ υπάρχουν αρκετές ακραίες τιμές (outliers) με κλήσεις μεγάλης διάρκειας. Το εύρος των δεδομένων είναι σχετικά σταθερό, υποδηλώνοντας ότι η διάρκεια της κλήσης δεν εξαρτάται σημαντικά από την ηλικιακή ομάδα.


4. Scatterplot

ggplot(bank.full, aes(x = duration, y = balance)) +
  geom_point(color = "blue", alpha = 0.5) +
  labs(title = "Σχέση Υπολοίπου & Διάρκειας Κλήσης",
       x = "Διάρκεια Κλήσης (δευτερόλεπτα)",
       y = "Υπόλοιπο (€)") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 16))


Παρατηρήσεις

Οι περισσότερες κλήσεις έχουν διάρκεια μικρότερη των 1000 δευτερολέπτων. Οι πελάτες με υψηλό υπόλοιπο (πάνω από 25.000 €) εμφανίζονται κυρίως σε σύντομες κλήσεις. Ο συντελεστής συσχέτισης μεταξύ υπολοίπου λογαριασμού και διάρκειας κλήσης είναι 0.0216, που δείχνει μια σχεδόν μηδενική συσχέτιση. Παρόλο που μπορεί να φαίνεται ότι οι μεγαλύτερες διάρκειες συνδέονται με χαμηλότερα υπόλοιπα.