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

Το dataset που χρησιμοποιούμε στην παρούσα ανάλυση προέρχεται από μια βάση δεδομένων πελατών της εταιρείας marketing. Το dataset περιλαμβάνει δεδομένα για μια ομάδα πελατών και αφορά χαρακτηριστικά όπως το επίπεδο εκπαίδευσης, το εισόδημα, η ηλικία, η οικογενειακή κατάσταση, και το έτος γέννησης. Αυτή η βάση δεδομένων χρησιμοποιείται για ανάλυση δεδομένων σε σενάρια επιχειρηματικής ανάλυσης και marketing.



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

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

3.Αναφορά σε Πιθανά Επιχειρηματικά Ερωτήματα που Θα Μπορούσαν να Απαντηθούν

Από το συγκεκριμένο dataset μπορούμε να εξετάσουμε ερωτήματα όπως: - Ποιες ομάδες πελατών έχουν το μεγαλύτερο εισόδημα; - Ποιες είναι οι συνηθέστερες εκπαιδευτικές κατηγορίες σε σχέση με την οικογενειακή κατάσταση; - Ποιες μεταβλητές σχετίζονται με την αγοραστική συμπεριφορά των πελατών (αν αυτή υπάρχει στο dataset); - Ποια είναι η κατανομή των πελατών ανά ηλικία και εισόδημα;



4.Περιγραφή των Μεταβλητών

Μεταβλητή Τύπος Περιγραφή
ID Numeric Μοναδικός αριθμός αναγνώρισης για κάθε πελάτη.
Year_Birth Numeric Έτος γέννησης του πελάτη.
Income Numeric Ετήσιο εισόδημα του πελάτη σε νομισματική μονάδα.
Dt_Customer Date Ημερομηνία πρώτης εγγραφής του πελάτη στην εταιρεία.
Education Character Εκπαιδευτικό επίπεδο του πελάτη (π.χ., Basic, 2n Cycle, Graduation, Master, PhD).
Marital_Status Character Οικογενειακή κατάσταση του πελάτη (π.χ., Single, Married, Together, Divorced, Widow).
NumChildrenAtHome Numeric Αριθμός παιδιών που διαμένουν στο σπίτι του πελάτη.
NumWebPurchases Numeric Αριθμός αγορών που πραγματοποιήθηκαν μέσω του διαδικτύου από τον πελάτη.

5.Μέτρα Κεντρικής Τάσης

# Φόρτωση του dataset
marketing_campaign <- read.csv("marketing_campaign.csv")
# Εμφάνιση συνοπτικών στατιστικών
summary(marketing_campaign)
##        ID          Year_Birth    Education         Marital_Status    
##  Min.   :    0   Min.   :1893   Length:2240        Length:2240       
##  1st Qu.: 2828   1st Qu.:1959   Class :character   Class :character  
##  Median : 5458   Median :1970   Mode  :character   Mode  :character  
##  Mean   : 5592   Mean   :1969                                        
##  3rd Qu.: 8428   3rd Qu.:1977                                        
##  Max.   :11191   Max.   :1996                                        
##                                                                      
##      Income          Kidhome          Teenhome      Dt_Customer       
##  Min.   :  1730   Min.   :0.0000   Min.   :0.0000   Length:2240       
##  1st Qu.: 35303   1st Qu.:0.0000   1st Qu.:0.0000   Class :character  
##  Median : 51382   Median :0.0000   Median :0.0000   Mode  :character  
##  Mean   : 52247   Mean   :0.4442   Mean   :0.5062                     
##  3rd Qu.: 68522   3rd Qu.:1.0000   3rd Qu.:1.0000                     
##  Max.   :666666   Max.   :2.0000   Max.   :2.0000                     
##  NA's   :24                                                           
##     Recency         MntWines         MntFruits     MntMeatProducts 
##  Min.   : 0.00   Min.   :   0.00   Min.   :  0.0   Min.   :   0.0  
##  1st Qu.:24.00   1st Qu.:  23.75   1st Qu.:  1.0   1st Qu.:  16.0  
##  Median :49.00   Median : 173.50   Median :  8.0   Median :  67.0  
##  Mean   :49.11   Mean   : 303.94   Mean   : 26.3   Mean   : 166.9  
##  3rd Qu.:74.00   3rd Qu.: 504.25   3rd Qu.: 33.0   3rd Qu.: 232.0  
##  Max.   :99.00   Max.   :1493.00   Max.   :199.0   Max.   :1725.0  
##                                                                    
##  MntFishProducts  MntSweetProducts  MntGoldProds    NumDealsPurchases
##  Min.   :  0.00   Min.   :  0.00   Min.   :  0.00   Min.   : 0.000   
##  1st Qu.:  3.00   1st Qu.:  1.00   1st Qu.:  9.00   1st Qu.: 1.000   
##  Median : 12.00   Median :  8.00   Median : 24.00   Median : 2.000   
##  Mean   : 37.53   Mean   : 27.06   Mean   : 44.02   Mean   : 2.325   
##  3rd Qu.: 50.00   3rd Qu.: 33.00   3rd Qu.: 56.00   3rd Qu.: 3.000   
##  Max.   :259.00   Max.   :263.00   Max.   :362.00   Max.   :15.000   
##                                                                      
##  NumWebPurchases  NumCatalogPurchases NumStorePurchases NumWebVisitsMonth
##  Min.   : 0.000   Min.   : 0.000      Min.   : 0.00     Min.   : 0.000   
##  1st Qu.: 2.000   1st Qu.: 0.000      1st Qu.: 3.00     1st Qu.: 3.000   
##  Median : 4.000   Median : 2.000      Median : 5.00     Median : 6.000   
##  Mean   : 4.085   Mean   : 2.662      Mean   : 5.79     Mean   : 5.317   
##  3rd Qu.: 6.000   3rd Qu.: 4.000      3rd Qu.: 8.00     3rd Qu.: 7.000   
##  Max.   :27.000   Max.   :28.000      Max.   :13.00     Max.   :20.000   
##                                                                          
##   AcceptedCmp3      AcceptedCmp4      AcceptedCmp5      AcceptedCmp1    
##  Min.   :0.00000   Min.   :0.00000   Min.   :0.00000   Min.   :0.00000  
##  1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.00000  
##  Median :0.00000   Median :0.00000   Median :0.00000   Median :0.00000  
##  Mean   :0.07277   Mean   :0.07455   Mean   :0.07277   Mean   :0.06429  
##  3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000  
##  Max.   :1.00000   Max.   :1.00000   Max.   :1.00000   Max.   :1.00000  
##                                                                         
##   AcceptedCmp2        Complain        Z_CostContact   Z_Revenue 
##  Min.   :0.00000   Min.   :0.000000   Min.   :3     Min.   :11  
##  1st Qu.:0.00000   1st Qu.:0.000000   1st Qu.:3     1st Qu.:11  
##  Median :0.00000   Median :0.000000   Median :3     Median :11  
##  Mean   :0.01339   Mean   :0.009375   Mean   :3     Mean   :11  
##  3rd Qu.:0.00000   3rd Qu.:0.000000   3rd Qu.:3     3rd Qu.:11  
##  Max.   :1.00000   Max.   :1.000000   Max.   :3     Max.   :11  
##                                                                 
##     Response     
##  Min.   :0.0000  
##  1st Qu.:0.0000  
##  Median :0.0000  
##  Mean   :0.1491  
##  3rd Qu.:0.0000  
##  Max.   :1.0000  
## 
# Φόρτωση του dataset
marketing_campaign <- read.csv("marketing_campaign.csv")

#Επιλογή αριθμητικών μεταβλητών
numeric_vars <- c("Income", "Kidhome", "Year_Birth", "Recency")

#Υπολογισμός συντελεστών συσχέτισης
correlation_matrix <- cor(marketing_campaign[, numeric_vars], use = "complete.obs", method = "pearson")

#Προβολή του πίνακα συσχετίσεων
correlation_matrix
##                  Income     Kidhome Year_Birth      Recency
## Income      1.000000000 -0.42866901 -0.1617914 -0.003969756
## Kidhome    -0.428669008  1.00000000  0.2336146  0.011492149
## Year_Birth -0.161791428  0.23361462  1.0000000 -0.016294900
## Recency    -0.003969756  0.01149215 -0.0162949  1.000000000

Υπολογισμός Επικρατούσας Τιμής (Mode)

getmode <- function(v) { uniqv <- unique(v) uniqv[which.max(tabulate(match(v, uniqv)))] } mode_income <- getmode(marketing_campaign$Income)

Εμφάνιση των αποτελεσμάτων

mean_income median_income mode_income

(“Μέσος Όρος Εισοδήματος:”, mean_income, “”) (“Διάμεσος Εισοδήματος:”, median_income, “”) (“Επικρατούσα Τιμή Εισοδήματος:”, mode_income, “”) (“Τυπική Απόκλιση Εισοδήματος:”, std_dev_income, “”) (“Διακύμανση Εισοδήματος:”, variance_income, “”) (“Εύρος Εισοδήματος:”, range_income, “”)



6.Διαγράμματα



Scatterplot

library(ggplot2)
ggplot(marketing_campaign, aes(x= Year_Birth, y=Income)) +
  geom_point() +
  theme_minimal()

Ερμηνεία του διαγράμματος

Το scatter plot που δημιουργήσαμε απεικονίζει τη σχέση μεταξύ Year_Birth και του Income των πελατών. Κάθε σημείο στο διάγραμμα αντιπροσωπεύει έναν πελάτη. O οριζόντιος άξονας (x) δείχνει το έτος γέννησης. Ο κάθετος άξονας (y) δείχνει το εισόδημα του πελάτη. Το διάγραμμα μπορεί να μας βοηθήσει να εντοπίσουμε πιθανές τάσεις, όπως αν οι νεότεροι ή οι μεγαλύτεροι σε ηλικία πελάτες έχουν υψηλότερα εισοδήματα.



Boxplot

ggplot(marketing_campaign, aes(x = Education, y = Income, fill = Education)) +
  geom_boxplot() +
  theme_minimal() +
  scale_fill_brewer(palette = "Set3") 

Ερμηνεία του Διαγράμματος Το boxplot που δημιουργήσαμε απεικονίζει τη σχέση μεταξύ Education και του εισοδήματος Income.

Τι μας δείχνει το γράφημα;

  • Κάθε κουτί αντιπροσωπεύει την κατανομή των εισοδημάτων για μια κατηγορία εκπαίδευσης.
  • Η μεσαία γραμμή μέσα σε κάθε κουτί είναι η διάμεσος του εισοδήματος για την αντίστοιχη κατηγορία.
  • Μπορούμε να παρατηρήσουμε αν υπάρχει διαφορά στα εισοδήματα ανάλογα με το επίπεδο εκπαίδευσης.
  • Αν μια κατηγορία έχει μεγαλύτερη διάμεσο από τις άλλες, οι άνθρωποι με αυτό το επίπεδο εκπαίδευσης έχουν γενικά υψηλότερα εισοδήματα.



Histogram

ggplot(marketing_campaign, aes(x = Year_Birth)) + 
  geom_histogram(binwidth = 5, fill = "lightblue", color = "black") + 
  labs(title = "Histogram of Age",
       x = "Age",
       y = "Count") + 
  theme_minimal()

Εξήγηση του γραφήματος

  • Το διάγραμμα κατανομή των ετών γέννησης των πελατών.
  • Ο άξονας Χ αναπαριστά το έτος γέννησης και ο άξονας Υ τη συχνότητα των πελατών για κάθε ηλικιακή ομάδα.
  • Βλέπουμε πως οι πελάτες συγκεντρώνονται γύρω από τα πιο πρόσφατα χρόνια γέννησης,
  • υποδεικνύοντας ότι η πλειοψηφία των πελατών είναι πιο νέοι σε ηλικία.

Bar Chart

library(ggplot2)

# Δημιουργία Bar chart για την κατανομή του εκπαιδευτικού επιπέδου των πελατών με διαφορετικά χρώματα για κάθε κατηγορία
ggplot(marketing_campaign, aes(x = Education, fill = Education)) + 
  geom_bar(color = "black") + 
  labs(title = "Bar Chart of Education Level",
       x = "Education Level",
       y = "Number of Customers") + 
  theme_minimal() +
  scale_fill_manual(values = c("Basic" = "lightblue", 
                               "2n Cycle" = "lightgreen", 
                               "Graduation" = "lightpink", 
                               "Master" = "lightyellow", 
                               "PhD" = "lightcoral"))

Περιγραφή του διαγράμματος

Το συγκεκριμένο ραβδόγραμμα (bar chart) παρουσιάζει την κατανομή των πελατών σύμφωνα με το επίπεδο εκπαίδευσής τους.

Στον οριζόντιο άξονα (x-axis) εμφανίζονται τα επίπεδα εκπαίδευσης: - 2n Cycle - Basic - Graduation - Master - PhD Στον κατακόρυφο άξονα (y-axis) παρουσιάζεται ο αριθμός των πελατών.

Συμπέρασμα:

Η πλειοψηφία των πελατών έχει ολοκληρώσει τουλάχιστον το επίπεδο Graduation, ενώ λιγότεροι πελάτες έχουν χαμηλότερο επίπεδο εκπαίδευσης.



7.Γραμμική Παλινδόμηση

Μοντέλο 1 - Income

model1 <- lm(Income ~ NumWebPurchases, data = marketing_campaign)
summary(model1)
## 
## Call:
## lm(formula = Income ~ NumWebPurchases, data = marketing_campaign)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -122324  -13187   -2844   12105  618285 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      37694.2      885.0   42.59   <2e-16 ***
## NumWebPurchases   3562.3      179.9   19.80   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 23210 on 2214 degrees of freedom
##   (24 observations deleted due to missingness)
## Multiple R-squared:  0.1504, Adjusted R-squared:  0.1501 
## F-statistic: 392.1 on 1 and 2214 DF,  p-value: < 2.2e-16



model1 <- lm(Income ~ NumWebPurchases, data = marketing_campaign)


ggplot(marketing_campaign, aes(x = NumWebPurchases, y = Income)) +
  geom_point(alpha = 0.5) +  
  geom_abline(intercept = coef(model1)[1], slope = coef(model1)[2], color = "red", linewidth = 1.2) +  
  labs(title = "Γραμμική Παλινδρόμηση: Εισόδημα ~ Αγορές μέσω Ιστοσελίδας",
       x = "NumWebPurchases", y = "Income")

Σχόλιο: Το παραπάνω διάγραμμα παλινδρόμησης δείχνει τη σχέση μεταξύ του αριθμού αγορών μέσω ιστοσελίδας και του εισοδήματος. Παρατηρείται μια θετική γραμμική συσχέτιση, καθώς όσο αυξάνονται οι διαδικτυακές αγορές, τείνει να αυξάνεται και το εισόδημα. Η κόκκινη γραμμή αναπαριστά τη γραμμή παλινδρόμησης που έχει προκύψει από το μοντέλο.



Μοντέλο 2 - Προσθήκη Year_Birth

model2 <- lm(Income ~ NumWebPurchases + Year_Birth, data = marketing_campaign)
summary(model2)
## 
## Call:
## lm(formula = Income ~ NumWebPurchases + Year_Birth, data = marketing_campaign)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -119201  -12875   -2800   11784  619927 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     471996.71   81583.05   5.785 8.26e-09 ***
## NumWebPurchases   3414.87     180.94  18.873  < 2e-16 ***
## Year_Birth        -220.28      41.38  -5.324 1.12e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 23070 on 2213 degrees of freedom
##   (24 observations deleted due to missingness)
## Multiple R-squared:  0.1612, Adjusted R-squared:  0.1604 
## F-statistic: 212.6 on 2 and 2213 DF,  p-value: < 2.2e-16

Σχόλιο: Η προσθήκη της μεταβλητής Year_Birth οδηγεί σε μια μέτρια βελτίωση του μοντέλου, καθώς αυξάνει το R² και ενισχύει τη στατιστική σημαντικότητα του μοντέλου. Ωστόσο, η επίδραση της μεταβλητής Year_Birth δεν είναι τόσο ισχυρή όσο αυτή της μεταβλητής NumWebPurchases.



Μοντέλο 3 - Προσθήκη NumStorePurchases (Αγορές μέσω Καταστημάτων)

model3 <- lm(Income ~ NumWebPurchases + Year_Birth + NumStorePurchases , data = marketing_campaign)
summary(model3)
## 
## Call:
## lm(formula = Income ~ NumWebPurchases + Year_Birth + NumStorePurchases, 
##     data = marketing_campaign)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -56005 -10659  -2322   7996 626912 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       368817.30   74445.93   4.954 7.81e-07 ***
## NumWebPurchases     1344.78     191.11   7.037 2.62e-12 ***
## Year_Birth          -173.69      37.74  -4.602 4.42e-06 ***
## NumStorePurchases   3431.96     160.56  21.375  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 21000 on 2212 degrees of freedom
##   (24 observations deleted due to missingness)
## Multiple R-squared:  0.3048, Adjusted R-squared:  0.3038 
## F-statistic: 323.3 on 3 and 2212 DF,  p-value: < 2.2e-16

Σχόλιο: Η προσθήκη της μεταβλητής NumStorePurchases (Αριθμός Αγορών μέσω Καταστημάτων) έχει τον μεγαλύτερο συντελεστή (3431.96) και είναι επίσης σημαντικά συσχετισμένο με το Income, υποδεικνύοντας έτσι ότι οι πελάτες που κάνουν περισσότερες αγορές μέσω καταστημάτων έχουν σημαντικά υψηλότερο εισόδημα.



Μοντέλο 4 - Recency (Πρόσφατες Αγορές)

model4 <- lm(Income ~ NumWebPurchases + Year_Birth + NumStorePurchases + Recency , data = marketing_campaign)
summary(model4)
## 
## Call:
## lm(formula = Income ~ NumWebPurchases + Year_Birth + NumStorePurchases + 
##     Recency, data = marketing_campaign)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -56180 -10693  -2363   7950 626816 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       369312.17   74489.73   4.958 7.67e-07 ***
## NumWebPurchases     1344.41     191.16   7.033 2.69e-12 ***
## Year_Birth          -173.85      37.76  -4.605 4.36e-06 ***
## NumStorePurchases   3432.04     160.60  21.371  < 2e-16 ***
## Recency               -3.74      15.42  -0.242    0.808    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 21010 on 2211 degrees of freedom
##   (24 observations deleted due to missingness)
## Multiple R-squared:  0.3048, Adjusted R-squared:  0.3035 
## F-statistic: 242.4 on 4 and 2211 DF,  p-value: < 2.2e-16

Σχόλιο: Με την προσθήκη της μεταβλητής Recency στο μοντέλο, παρατηρούμε ότι το R-squared παραμένει αμετάβλητο στο 0.3048, ενώ το Adjusted R-squared μειώνεται ελαφρώς στο 0.3035. Αυτό υποδεικνύει ότι η μεταβλητή Recency δεν συνεισφέρει σημαντικά στην εξήγηση της μεταβλητότητας του εισοδήματος. Επιπλέον, η Recency έχει p-value 0.808, το οποίο είναι αρκετά υψηλό και υποδεικνύει ότι η συγκεκριμένη μεταβλητή δεν είναι στατιστικά σημαντική για την πρόβλεψη του εισοδήματος.



library(knitr)  
model_summary <- data.frame(
  Μοντέλο = c(
    "Εισόδημα ~ Αριθμός Αγορών μέσω Ιστοσελίδας",
    "Εισόδημα ~ Αριθμός Αγορών μέσω Ιστοσελίδας + Έτος Γέννησης",
    "Εισόδημα ~ Αριθμός Αγορών μέσω Ιστοσελίδας + Έτος Γέννησης + Αριθμός Αγορών σε Καταστήματα",
    "Εισόδημα ~ Αριθμός Αγορών μέσω Ιστοσελίδας + Έτος Γέννησης + Αριθμός Αγορών σε Καταστήματα + Recency"
  ),
  R_squared = c(
    summary(model1)$r.squared,    
    summary(model2)$r.squared,   
    summary(model3)$r.squared,    
    summary(model4)$r.squared     
  ),
  SSE = c(
    deviance(model1),    
    deviance(model2),    
    deviance(model3),   
    deviance(model4)    
  )
)

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² και SSE
Μοντέλο R_squared SSE
Εισόδημα ~ Αριθμός Αγορών μέσω Ιστοσελίδας 0.1504 1.192438e+12
Εισόδημα ~ Αριθμός Αγορών μέσω Ιστοσελίδας + Έτος Γέννησης 0.1612 1.177359e+12
Εισόδημα ~ Αριθμός Αγορών μέσω Ιστοσελίδας + Έτος Γέννησης + Αριθμός Αγορών σε Καταστήματα 0.3048 9.758091e+11
Εισόδημα ~ Αριθμός Αγορών μέσω Ιστοσελίδας + Έτος Γέννησης + Αριθμός Αγορών σε Καταστήματα + Recency 0.3048 9.757832e+11

8.Συμπέρασμα



🔹Λογιστική Παλινδρόμηση

Διαχωρισμός Συνόλου σε Train και Test

Για τον διαχωρισμό του συνόλου δεδομένων χρησιμοποίησα την μεταβλητή Response. Το training set είναι το 65% της βάσης με seed 974

library(caTools)
set.seed(974)

split <- sample.split(marketing_campaign$Response, SplitRatio = 0.65)

training_set <- subset(marketing_campaign, split == TRUE)
testing_set <- subset(marketing_campaign, split == FALSE)

log_model <- glm(Response ~ NumWebPurchases + Year_Birth + Income,
                 data = training_set,
                 family = "binomial")


Οι καταχωρήσεις στο Train-set και Testing-set είναι:

nrow(training_set)
## [1] 1456
nrow(testing_set)
## [1] 784



🔹Μοντέλο Λογιστικής Παλινδρόμησης

reduced_model <- glm(Response ~ Income + Year_Birth + NumWebPurchases,
                     data = training_set,
                     family = "binomial")
summary(reduced_model)
## 
## Call:
## glm(formula = Response ~ Income + Year_Birth + NumWebPurchases, 
##     family = "binomial", data = training_set)
## 
## Coefficients:
##                   Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -2.903e+01  1.275e+01  -2.277   0.0228 *  
## Income           6.804e-06  3.187e-06   2.135   0.0328 *  
## Year_Birth       1.343e-02  6.457e-03   2.080   0.0375 *  
## NumWebPurchases  1.072e-01  2.617e-02   4.098 4.18e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1222.2  on 1443  degrees of freedom
## Residual deviance: 1189.9  on 1440  degrees of freedom
##   (12 observations deleted due to missingness)
## AIC: 1197.9
## 
## Number of Fisher Scoring iterations: 5

Οι μεταβλητές Income, Year_Birth και NumWebPurchases εμφανίζουν στατιστικά σημαντική συσχέτιση με την πιθανότητα συμμετοχής στην καμπάνια (Response), καθώς έχουν τιμές p < 0.05. Ειδικότερα, η μεταβλητή NumWebPurchases έχει πολύ χαμηλό p-value (p < 0.001), υποδεικνύοντας ισχυρή συσχέτιση. Οι μεταβλητές αυτές φαίνεται να επηρεάζουν σημαντικά την εξαρτημένη μεταβλητή και συνεισφέρουν σημαντικά στην πρόβλεψη της πιθανότητας απόκρισης.

# Δημιουργία του διαγράμματος λογιστικής παλινδρόμησης
ggplot(training_set, aes(x = Income, y = Response, color = NumWebPurchases)) +
  geom_point() + # Σημεία
  geom_smooth(method = "glm", method.args = list(family = "binomial")) + # Λογιστική παλινδρόμηση
  labs(title = "Logistic Regression Plot for Income and NumWebPurchases",
       x = "Independent Variable (Income)",
       y = "Probability of Response") + 
  theme_minimal()

Περιγραφή του Διαγράμματος: Το διάγραμμα παρουσιάζει τη σχέση μεταξύ του εισοδήματος (Income) και της πιθανότητας απόκρισης (Response). Η γραμμή λογιστικής παλινδρόμησης δείχνει πώς η πιθανότητα απόκρισης μεταβάλλεται με το εισόδημα, ενώ το χρώμα των σημείων αντιπροσωπεύει τον αριθμό των αγορών μέσω διαδικτύου (NumWebPurchases).



🔹Πρόβλεψη τιμών Test-set

# Δημιουργία μοντέλου λογιστικής παλινδρόμησης με όλες τις μεταβλητές
full_model <- glm(Response ~ ., data = training_set, family = "binomial")
predictTest <- predict(reduced_model, newdata = testing_set, type = "response")

# Επιλογή 10 τυχαίων δειγμάτων από τις προβλέψεις
set.seed(123)
sample_indices <- sample(1:length(predictTest), 10)
predictTest[sample_indices]
##      1217      1337       525      1497       588       343       889       686 
## 0.1436473 0.1542823 0.1246289 0.1157586 0.1373536 0.1449490 0.2042377 0.1828877 
##       732        38 
## 0.1572247 0.1189662

Σχόλιο: Αυτό το αποτέλεσμα δείχνει τις προβλεπόμενες πιθανότητες από το μοντέλο λογιστικής παλινδρόμησης για 10 τυχαίες παρατηρήσεις του Test-set.

🔹 Οι τιμές είναι μεταξύ 0 και 1 και εκφράζουν την πιθανότητα η παρατήρηση να ανήκει στην κατηγορία “1” της μεταβλητής Response (δηλαδή να ανταποκριθεί στην καμπάνια).

🔹 Παραδείγματος χάριν:

Η παρατήρηση με index 889 έχει πιθανότητα ~20.4% να ανταποκριθεί.

Η παρατήρηση 1497 έχει πιθανότητα μόλις ~11.6%.