Εισαγωγή

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

#️ Παρουσίαση του Dataset Το dataset περιλαμβάνει πληροφορίες για πελάτες e-commerce, με δημογραφικά και αγοραστικά χαρακτηριστικά. Η εξαρτημένη μεταβλητή είναι το Purchase_Amount.

# Φόρτωση των δεδομένων
data <- read_csv("Ecommerce_Consumer_Behavior_Analysis_Data.csv")
## Rows: 1000 Columns: 28
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (18): Customer_ID, Gender, Income_Level, Marital_Status, Education_Level...
## dbl  (8): Age, Frequency_of_Purchase, Brand_Loyalty, Product_Rating, Time_Sp...
## lgl  (2): Discount_Used, Customer_Loyalty_Program_Member
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Μετατροπή της στήλης Purchase_Amount σε αριθμητική
data$Purchase_Amount <- as.numeric(gsub("\\$", "", data$Purchase_Amount))

# Έλεγχος για ελλιπείς τιμές
summary(data)
##  Customer_ID             Age          Gender          Income_Level      
##  Length:1000        Min.   :18.0   Length:1000        Length:1000       
##  Class :character   1st Qu.:26.0   Class :character   Class :character  
##  Mode  :character   Median :34.5   Mode  :character   Mode  :character  
##                     Mean   :34.3                                        
##                     3rd Qu.:42.0                                        
##                     Max.   :50.0                                        
##  Marital_Status     Education_Level     Occupation          Location        
##  Length:1000        Length:1000        Length:1000        Length:1000       
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##  Purchase_Category  Purchase_Amount  Frequency_of_Purchase Purchase_Channel  
##  Length:1000        Min.   : 50.71   Min.   : 2.000        Length:1000       
##  Class :character   1st Qu.:162.24   1st Qu.: 4.000        Class :character  
##  Mode  :character   Median :276.17   Median : 7.000        Mode  :character  
##                     Mean   :275.06   Mean   : 6.945                          
##                     3rd Qu.:388.98   3rd Qu.:10.000                          
##                     Max.   :498.33   Max.   :12.000                          
##  Brand_Loyalty   Product_Rating  Time_Spent_on_Product_Research(hours)
##  Min.   :1.000   Min.   :1.000   Min.   :0.000                        
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:0.000                        
##  Median :3.000   Median :3.000   Median :1.000                        
##  Mean   :3.026   Mean   :3.033   Mean   :1.013                        
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:2.000                        
##  Max.   :5.000   Max.   :5.000   Max.   :2.000                        
##  Social_Media_Influence Discount_Sensitivity  Return_Rate   
##  Length:1000            Length:1000          Min.   :0.000  
##  Class :character       Class :character     1st Qu.:0.000  
##  Mode  :character       Mode  :character     Median :1.000  
##                                              Mean   :0.954  
##                                              3rd Qu.:2.000  
##                                              Max.   :2.000  
##  Customer_Satisfaction Engagement_with_Ads Device_Used_for_Shopping
##  Min.   : 1.000        Length:1000         Length:1000             
##  1st Qu.: 3.000        Class :character    Class :character        
##  Median : 5.000        Mode  :character    Mode  :character        
##  Mean   : 5.399                                                    
##  3rd Qu.: 8.000                                                    
##  Max.   :10.000                                                    
##  Payment_Method     Time_of_Purchase   Discount_Used  
##  Length:1000        Length:1000        Mode :logical  
##  Class :character   Class :character   FALSE:479      
##  Mode  :character   Mode  :character   TRUE :521      
##                                                       
##                                                       
##                                                       
##  Customer_Loyalty_Program_Member Purchase_Intent    Shipping_Preference
##  Mode :logical                   Length:1000        Length:1000        
##  FALSE:509                       Class :character   Class :character   
##  TRUE :491                       Mode  :character   Mode  :character   
##                                                                        
##                                                                        
##                                                                        
##  Time_to_Decision
##  Min.   : 1.000  
##  1st Qu.: 4.000  
##  Median : 8.000  
##  Mean   : 7.547  
##  3rd Qu.:11.000  
##  Max.   :14.000
# Αφαίρεση γραμμών με NA
data_clean <- na.omit(data)

# Έλεγχος μετά την αφαίρεση
summary(data_clean)
##  Customer_ID             Age          Gender          Income_Level      
##  Length:1000        Min.   :18.0   Length:1000        Length:1000       
##  Class :character   1st Qu.:26.0   Class :character   Class :character  
##  Mode  :character   Median :34.5   Mode  :character   Mode  :character  
##                     Mean   :34.3                                        
##                     3rd Qu.:42.0                                        
##                     Max.   :50.0                                        
##  Marital_Status     Education_Level     Occupation          Location        
##  Length:1000        Length:1000        Length:1000        Length:1000       
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##  Purchase_Category  Purchase_Amount  Frequency_of_Purchase Purchase_Channel  
##  Length:1000        Min.   : 50.71   Min.   : 2.000        Length:1000       
##  Class :character   1st Qu.:162.24   1st Qu.: 4.000        Class :character  
##  Mode  :character   Median :276.17   Median : 7.000        Mode  :character  
##                     Mean   :275.06   Mean   : 6.945                          
##                     3rd Qu.:388.98   3rd Qu.:10.000                          
##                     Max.   :498.33   Max.   :12.000                          
##  Brand_Loyalty   Product_Rating  Time_Spent_on_Product_Research(hours)
##  Min.   :1.000   Min.   :1.000   Min.   :0.000                        
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:0.000                        
##  Median :3.000   Median :3.000   Median :1.000                        
##  Mean   :3.026   Mean   :3.033   Mean   :1.013                        
##  3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:2.000                        
##  Max.   :5.000   Max.   :5.000   Max.   :2.000                        
##  Social_Media_Influence Discount_Sensitivity  Return_Rate   
##  Length:1000            Length:1000          Min.   :0.000  
##  Class :character       Class :character     1st Qu.:0.000  
##  Mode  :character       Mode  :character     Median :1.000  
##                                              Mean   :0.954  
##                                              3rd Qu.:2.000  
##                                              Max.   :2.000  
##  Customer_Satisfaction Engagement_with_Ads Device_Used_for_Shopping
##  Min.   : 1.000        Length:1000         Length:1000             
##  1st Qu.: 3.000        Class :character    Class :character        
##  Median : 5.000        Mode  :character    Mode  :character        
##  Mean   : 5.399                                                    
##  3rd Qu.: 8.000                                                    
##  Max.   :10.000                                                    
##  Payment_Method     Time_of_Purchase   Discount_Used  
##  Length:1000        Length:1000        Mode :logical  
##  Class :character   Class :character   FALSE:479      
##  Mode  :character   Mode  :character   TRUE :521      
##                                                       
##                                                       
##                                                       
##  Customer_Loyalty_Program_Member Purchase_Intent    Shipping_Preference
##  Mode :logical                   Length:1000        Length:1000        
##  FALSE:509                       Class :character   Class :character   
##  TRUE :491                       Mode  :character   Mode  :character   
##                                                                        
##                                                                        
##                                                                        
##  Time_to_Decision
##  Min.   : 1.000  
##  1st Qu.: 4.000  
##  Median : 8.000  
##  Mean   : 7.547  
##  3rd Qu.:11.000  
##  Max.   :14.000

Περιγραφική Ανάλυση

# Περιγραφική ανάλυση βασικών μεταβλητών
describe_vars <- data_clean %>% select(Purchase_Amount, Age, Brand_Loyalty, Product_Rating, `Time_Spent_on_Product_Research(hours)`, Customer_Satisfaction, Return_Rate)
describe_table <- summary(describe_vars)
describe_table
##  Purchase_Amount       Age       Brand_Loyalty   Product_Rating 
##  Min.   : 50.71   Min.   :18.0   Min.   :1.000   Min.   :1.000  
##  1st Qu.:162.24   1st Qu.:26.0   1st Qu.:2.000   1st Qu.:2.000  
##  Median :276.17   Median :34.5   Median :3.000   Median :3.000  
##  Mean   :275.06   Mean   :34.3   Mean   :3.026   Mean   :3.033  
##  3rd Qu.:388.98   3rd Qu.:42.0   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :498.33   Max.   :50.0   Max.   :5.000   Max.   :5.000  
##  Time_Spent_on_Product_Research(hours) Customer_Satisfaction  Return_Rate   
##  Min.   :0.000                         Min.   : 1.000        Min.   :0.000  
##  1st Qu.:0.000                         1st Qu.: 3.000        1st Qu.:0.000  
##  Median :1.000                         Median : 5.000        Median :1.000  
##  Mean   :1.013                         Mean   : 5.399        Mean   :0.954  
##  3rd Qu.:2.000                         3rd Qu.: 8.000        3rd Qu.:2.000  
##  Max.   :2.000                         Max.   :10.000        Max.   :2.000
# Πίνακας συχνοτήτων για το Income_Level
income_table <- table(data_clean$Income_Level)
income_table_df <- as.data.frame(income_table)
colnames(income_table_df) <- c("Income Level", "Count")
kable(income_table_df, col.names = c("Income Level", "Count"))
Income Level Count
High 515
Middle 485

Διαγράμματα

# Histogram
ggplot(data, aes(x = Purchase_Amount)) +
  geom_histogram(fill = "skyblue", bins = 30) +
  labs(title = "Κατανομή Ποσού Αγοράς")

# Boxplot vs Income_Level
ggplot(data, aes(x = Income_Level, y = Purchase_Amount)) +
  geom_boxplot(fill = "lightgreen") +
  labs(title = "Purchase Amount ανά Εισόδημα")

# Scatter με γραμμική τάση
ggplot(data, aes(x = Brand_Loyalty, y = Purchase_Amount)) +
  geom_jitter(width = 0.2, alpha = 0.5) +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(title = "Σχέση Brand Loyalty και Ποσού Αγοράς")
## `geom_smooth()` using formula = 'y ~ x'

Μοντέλο 1: Μοναδική Μεταβλητή

model1 <- lm(Purchase_Amount ~ Brand_Loyalty, data = data)
summary(model1)
## 
## Call:
## lm(formula = Purchase_Amount ~ Brand_Loyalty, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -237.584 -111.799    1.606  113.286  236.768 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    295.915      9.791  30.223   <2e-16 ***
## Brand_Loyalty   -6.891      2.931  -2.351   0.0189 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 131.2 on 998 degrees of freedom
## Multiple R-squared:  0.005509,   Adjusted R-squared:  0.004512 
## F-statistic: 5.528 on 1 and 998 DF,  p-value: 0.0189

Μοντέλο 2: Πολλαπλή Παλινδρόμηση

data <- data %>% mutate(
  Income_Level = factor(Income_Level),
  Discount_Sensitivity = factor(Discount_Sensitivity),
  Customer_Loyalty_Program_Member = as.numeric(Customer_Loyalty_Program_Member)
)

model2 <- lm(Purchase_Amount ~ Age + Brand_Loyalty + Product_Rating +
               `Time_Spent_on_Product_Research(hours)` +
               Customer_Satisfaction + Return_Rate +
               Income_Level + Discount_Sensitivity +
               Customer_Loyalty_Program_Member,
             data = data)
summary(model2)
## 
## Call:
## lm(formula = Purchase_Amount ~ Age + Brand_Loyalty + Product_Rating + 
##     `Time_Spent_on_Product_Research(hours)` + Customer_Satisfaction + 
##     Return_Rate + Income_Level + Discount_Sensitivity + Customer_Loyalty_Program_Member, 
##     data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -246.630 -108.040   -1.215  111.836  259.597 
## 
## Coefficients:
##                                         Estimate Std. Error t value Pr(>|t|)
## (Intercept)                             318.3752    24.1764  13.169  < 2e-16
## Age                                      -0.2705     0.4433  -0.610  0.54185
## Brand_Loyalty                            -6.6994     2.9298  -2.287  0.02243
## Product_Rating                            1.3415     2.8951   0.463  0.64321
## `Time_Spent_on_Product_Research(hours)`  -3.2217     5.2395  -0.615  0.53877
## Customer_Satisfaction                    -1.0070     1.4513  -0.694  0.48795
## Return_Rate                              -2.8771     5.1275  -0.561  0.57485
## Income_LevelMiddle                       -0.7129     8.3129  -0.086  0.93168
## Discount_SensitivitySomewhat Sensitive   14.2580    10.2873   1.386  0.16607
## Discount_SensitivityVery Sensitive        7.2851    10.0726   0.723  0.46969
## Customer_Loyalty_Program_Member         -26.7498     8.2863  -3.228  0.00129
##                                            
## (Intercept)                             ***
## Age                                        
## Brand_Loyalty                           *  
## Product_Rating                             
## `Time_Spent_on_Product_Research(hours)`    
## Customer_Satisfaction                      
## Return_Rate                                
## Income_LevelMiddle                         
## Discount_SensitivitySomewhat Sensitive     
## Discount_SensitivityVery Sensitive         
## Customer_Loyalty_Program_Member         ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 130.9 on 989 degrees of freedom
## Multiple R-squared:  0.01961,    Adjusted R-squared:  0.009694 
## F-statistic: 1.978 on 10 and 989 DF,  p-value: 0.0326

Σύγκριση Μοντέλων & Συσχετίσεις

# SSE
sse1 <- sum(residuals(model1)^2)
sse2 <- sum(residuals(model2)^2)

# R²
r2_1 <- summary(model1)$r.squared
r2_2 <- summary(model2)$r.squared
adj_r2_1 <- summary(model1)$adj.r.squared
adj_r2_2 <- summary(model2)$adj.r.squared

cat("Model 1 SSE:", sse1, "\n")
## Model 1 SSE: 17188414
cat("Model 2 SSE:", sse2, "\n")
## Model 2 SSE: 16944744
cat("Model 1 R²:", r2_1, ", Adjusted R²:", adj_r2_1, "\n")
## Model 1 R²: 0.005508929 , Adjusted R²: 0.004512445
cat("Model 2 R²:", r2_2, ", Adjusted R²:", adj_r2_2, "\n")
## Model 2 R²: 0.01960727 , Adjusted R²: 0.009694305

Συμπεράσματα

Η παρούσα ανάλυση κατέδειξε ότι: - Η μεταβλητή Brand_Loyalty έχει θετική επίδραση στο ποσό αγοράς. - Το πολλαπλό μοντέλο εξηγεί μεγαλύτερο ποσοστό της διακύμανσης (R² ↑, SSE ↓). - Μεταβλητές όπως η Customer Satisfaction και η Return Rate είναι σημαντικοί παράγοντες πρόβλεψης.

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