1.Διερεύνηση του συνόλου δεδομένων (dataset)

Περιγραφή του dataset και της πηγής του

Το σύνολο δεδομένων που αναλύεται είναι το IBM HR Analytics Employee Attrition & Performance, το οποίο αντλήθηκε από την πλατφόρμα Kaggle.

Αποτελείται από 1470 εγγραφές και 35 μεταβλητές, που σχετίζονται με δημογραφικά στοιχεία, την απόδοση και την εργασιακή ικανοποίηση και κυρίως αν έχουν Αποχωρήσει από την εταιρεία ή όχι.

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

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

Eπιχειρηματικά ερωτήματα, που θα μπορούσαν να απαντηθούν

  • Πώς επηρεάζει η ηλικία το επίπεδο του μηνιαίου εισοδήματος;
  • Υπάρχει διαφορά στην προϋπηρεσία μεταξύ των υπαλλήλων που αποχωρούν και αυτών που παραμένουν;
  • Ποια είναι η κατανομή των μισθών;
  • Ποιοι ρόλοι κυριαρχούν στον οργανισμό;

Περιγραφή των μεταβλητών

Ποσοτικές Μεταβλητές

Μεταβλητή Τύπος Εύρος Τιμών Μονάδες Μέτρησης
Age Διακριτή 18 - 60 Έτη
DailyRate Διακριτή 102 - 1499 Νομισματικές Μονάδες (π.χ. Ευρώ)
DistanceFromHome Διακριτή 1 - 29 Απόσταση (συνήθως Μίλια)
HourlyRate Διακριτή 30 - 100 Νομισματικές Μονάδες ανά ώρα
MonthlyIncome Συνεχής 1.009 - 19.999 Νομισματικές Μονάδες ανά μήνα
MonthlyRate Διακριτή 2.094 - 26.999 Νομισματικές Μονάδες
NumCompaniesWorked Διακριτή 0 - 9 Αριθμός εταιρειών
PercentSalaryHike Διακριτή 11 - 25 Ποσοστό (%)
TotalWorkingYears Διακριτή 0 - 40 Έτη
TrainingTimesLastYear Διακριτή 0 - 6 Αριθμός εκπαιδεύσεων
YearsAtCompany Διακριτή 0 - 40 Έτη
YearsInCurrentRole Διακριτή 0 - 18 Έτη
YearsSinceLastPromotion Διακριτή 0 - 15 Έτη
YearsWithCurrManager Διακριτή 0 - 17 Έτη

Ποιοτικές Μεταβλητές

Κατηγορικές Μεταβλητές

Μεταβλητή Περιγραφή / Τιμές
Attrition Εγκατάλειψη εργασίας (Yes, No)
BusinessTravel Συχνότητα ταξιδιών (Non-Travel, Travel_Rarely, Travel_Frequently)
Department Τμήμα (Sales, Research & Development, Human Resources)
EducationField Τομέας εκπαίδευσης (Life Sciences, Medical, Marketing, κ.α.)
Gender Φύλο (Female, Male)
JobRole Ρόλος εργασίας (Manager, Sales Executive, Laboratory Technician, κ.α.)
MaritalStatus Οικογενειακή κατάσταση (Single, Married, Divorced)
OverTime Υπερωρίες (Yes, No)

Τακτικές Μεταβλητές

Μεταβλητή Εύρος (Κλίμακα) Περιγραφή
Education 1 - 5 Επίπεδο εκπαίδευσης (1: Χαμηλό, 5: Υψηλό)
EnvironmentSatisfaction 1 - 4 Ικανοποίηση από το περιβάλλον εργασίας
JobInvolvement 1 - 4 Βαθμός εμπλοκής στην εργασία
JobLevel 1 - 5 Ιεραρχικό επίπεδο θέσης
JobSatisfaction 1 - 4 Ικανοποίηση από την εργασία
PerformanceRating 3 - 4 Αξιολόγηση απόδοσης
RelationshipSatisfaction 1 - 4 Ικανοποίηση από τις σχέσεις στην εργασία
StockOptionLevel 0 - 3 Επίπεδο δικαιωμάτων προαίρεσης μετοχών
WorkLifeBalance 1 - 4 Ισορροπία επαγγελματικής/προσωπικής ζωής

##* Φόρτωση Δεδομένων*

# Φόρτωση των δεδομένων
hr_data <- read.csv("WA_Fn-UseC_-HR-Employee-Attrition.csv", stringsAsFactors = TRUE)

# Έλεγχος των πρώτων γραμμών για να δούμε αν φορτώθηκαν σωστά
head(hr_data)
##   Age Attrition    BusinessTravel DailyRate             Department
## 1  41       Yes     Travel_Rarely      1102                  Sales
## 2  49        No Travel_Frequently       279 Research & Development
## 3  37       Yes     Travel_Rarely      1373 Research & Development
## 4  33        No Travel_Frequently      1392 Research & Development
## 5  27        No     Travel_Rarely       591 Research & Development
## 6  32        No Travel_Frequently      1005 Research & Development
##   DistanceFromHome Education EducationField EmployeeCount EmployeeNumber
## 1                1         2  Life Sciences             1              1
## 2                8         1  Life Sciences             1              2
## 3                2         2          Other             1              4
## 4                3         4  Life Sciences             1              5
## 5                2         1        Medical             1              7
## 6                2         2  Life Sciences             1              8
##   EnvironmentSatisfaction Gender HourlyRate JobInvolvement JobLevel
## 1                       2 Female         94              3        2
## 2                       3   Male         61              2        2
## 3                       4   Male         92              2        1
## 4                       4 Female         56              3        1
## 5                       1   Male         40              3        1
## 6                       4   Male         79              3        1
##                 JobRole JobSatisfaction MaritalStatus MonthlyIncome MonthlyRate
## 1       Sales Executive               4        Single          5993       19479
## 2    Research Scientist               2       Married          5130       24907
## 3 Laboratory Technician               3        Single          2090        2396
## 4    Research Scientist               3       Married          2909       23159
## 5 Laboratory Technician               2       Married          3468       16632
## 6 Laboratory Technician               4        Single          3068       11864
##   NumCompaniesWorked Over18 OverTime PercentSalaryHike PerformanceRating
## 1                  8      Y      Yes                11                 3
## 2                  1      Y       No                23                 4
## 3                  6      Y      Yes                15                 3
## 4                  1      Y      Yes                11                 3
## 5                  9      Y       No                12                 3
## 6                  0      Y       No                13                 3
##   RelationshipSatisfaction StandardHours StockOptionLevel TotalWorkingYears
## 1                        1            80                0                 8
## 2                        4            80                1                10
## 3                        2            80                0                 7
## 4                        3            80                0                 8
## 5                        4            80                1                 6
## 6                        3            80                0                 8
##   TrainingTimesLastYear WorkLifeBalance YearsAtCompany YearsInCurrentRole
## 1                     0               1              6                  4
## 2                     3               3             10                  7
## 3                     3               3              0                  0
## 4                     3               3              8                  7
## 5                     3               3              2                  2
## 6                     2               2              7                  7
##   YearsSinceLastPromotion YearsWithCurrManager
## 1                       0                    5
## 2                       1                    7
## 3                       0                    0
## 4                       3                    0
## 5                       2                    2
## 6                       3                    6

##* Διαχωρισμός dataset σε train και test*

# Καθορισμός σταθεράς 
set.seed(71) 

# Δημιουργία δείκτη για το 80% των δεδομένων
index <- sample(1:nrow(hr_data), 0.8 * nrow(hr_data))

# Χωρισμός σε Train (80%) και Test (20%)
train_set <- hr_data[index, ]
test_set  <- hr_data[-index, ]

str(train_set)    
## 'data.frame':    1176 obs. of  35 variables:
##  $ Age                     : int  30 27 52 24 36 50 37 35 35 38 ...
##  $ Attrition               : Factor w/ 2 levels "No","Yes": 2 1 1 1 1 1 1 1 1 1 ...
##  $ BusinessTravel          : Factor w/ 3 levels "Non-Travel","Travel_Frequently",..: 3 2 1 1 1 3 3 3 3 2 ...
##  $ DailyRate               : int  945 793 771 1269 845 1322 124 1402 992 240 ...
##  $ Department              : Factor w/ 3 levels "Human Resources",..: 3 3 3 2 3 2 2 3 2 2 ...
##  $ DistanceFromHome        : int  9 2 2 4 1 28 3 28 1 2 ...
##  $ Education               : int  3 1 4 1 5 3 3 4 3 4 ...
##  $ EducationField          : Factor w/ 6 levels "Human Resources",..: 4 2 2 2 4 2 5 2 4 2 ...
##  $ EmployeeCount           : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ EmployeeNumber          : int  1876 1371 329 888 479 1317 1062 1554 1564 803 ...
##  $ EnvironmentSatisfaction : int  2 4 1 1 4 4 4 2 4 1 ...
##  $ Gender                  : Factor w/ 2 levels "Female","Male": 2 2 2 2 1 1 1 1 2 1 ...
##  $ HourlyRate              : int  89 43 79 46 45 43 35 98 68 75 ...
##  $ JobInvolvement          : int  3 1 2 2 3 3 3 2 2 4 ...
##  $ JobLevel                : int  1 2 5 1 2 4 2 1 1 2 ...
##  $ JobRole                 : Factor w/ 9 levels "Healthcare Representative",..: 9 8 4 3 8 6 1 9 3 5 ...
##  $ JobSatisfaction         : int  4 4 3 4 4 1 2 3 1 1 ...
##  $ MaritalStatus           : Factor w/ 3 levels "Divorced","Married",..: 3 3 3 2 3 2 3 2 3 3 ...
##  $ MonthlyIncome           : int  1081 5071 19068 3162 6653 16880 4107 2430 2450 5980 ...
##  $ MonthlyRate             : int  16019 20392 21030 10778 15276 22422 13848 26204 21731 26085 ...
##  $ NumCompaniesWorked      : int  1 3 1 0 4 4 3 0 1 6 ...
##  $ Over18                  : Factor w/ 1 level "Y": 1 1 1 1 1 1 1 1 1 1 ...
##  $ OverTime                : Factor w/ 2 levels "No","Yes": 1 1 2 1 1 2 1 1 1 2 ...
##  $ PercentSalaryHike       : int  13 20 18 17 15 11 15 23 19 12 ...
##  $ PerformanceRating       : int  3 4 3 3 3 3 3 4 3 3 ...
##  $ RelationshipSatisfaction: int  3 2 4 4 2 2 1 1 2 4 ...
##  $ StandardHours           : int  80 80 80 80 80 80 80 80 80 80 ...
##  $ StockOptionLevel        : int  0 0 0 0 0 0 0 2 0 0 ...
##  $ TotalWorkingYears       : int  1 8 33 6 7 25 8 6 3 17 ...
##  $ TrainingTimesLastYear   : int  3 3 2 2 6 2 3 5 3 2 ...
##  $ WorkLifeBalance         : int  2 3 4 2 3 3 2 3 3 3 ...
##  $ YearsAtCompany          : int  1 6 33 5 1 3 4 5 3 15 ...
##  $ YearsInCurrentRole      : int  0 2 7 2 0 2 3 3 0 7 ...
##  $ YearsSinceLastPromotion : int  0 0 15 3 0 1 0 4 1 4 ...
##  $ YearsWithCurrManager    : int  0 0 12 4 0 2 1 2 2 12 ...
summary(train_set) 
##       Age        Attrition           BusinessTravel   DailyRate     
##  Min.   :18.00   No :981   Non-Travel       :118    Min.   : 102.0  
##  1st Qu.:30.00   Yes:195   Travel_Frequently:227    1st Qu.: 445.5  
##  Median :36.00             Travel_Rarely    :831    Median : 781.5  
##  Mean   :37.07                                      Mean   : 788.3  
##  3rd Qu.:43.00                                      3rd Qu.:1146.0  
##  Max.   :60.00                                      Max.   :1499.0  
##                                                                     
##                   Department  DistanceFromHome   Education    
##  Human Resources       : 52   Min.   : 1.000   Min.   :1.000  
##  Research & Development:757   1st Qu.: 2.000   1st Qu.:2.000  
##  Sales                 :367   Median : 7.000   Median :3.000  
##                               Mean   : 9.173   Mean   :2.931  
##                               3rd Qu.:14.000   3rd Qu.:4.000  
##                               Max.   :29.000   Max.   :5.000  
##                                                               
##           EducationField EmployeeCount EmployeeNumber   EnvironmentSatisfaction
##  Human Resources : 21    Min.   :1     Min.   :   1.0   Min.   :1.000          
##  Life Sciences   :505    1st Qu.:1     1st Qu.: 485.8   1st Qu.:2.000          
##  Marketing       :130    Median :1     Median :1023.0   Median :3.000          
##  Medical         :350    Mean   :1     Mean   :1027.8   Mean   :2.718          
##  Other           : 64    3rd Qu.:1     3rd Qu.:1563.2   3rd Qu.:4.000          
##  Technical Degree:106    Max.   :1     Max.   :2068.0   Max.   :4.000          
##                                                                                
##     Gender      HourlyRate  JobInvolvement    JobLevel    
##  Female:470   Min.   : 30   Min.   :1.00   Min.   :1.000  
##  Male  :706   1st Qu.: 48   1st Qu.:2.00   1st Qu.:1.000  
##               Median : 66   Median :3.00   Median :2.000  
##               Mean   : 66   Mean   :2.73   Mean   :2.079  
##               3rd Qu.: 84   3rd Qu.:3.00   3rd Qu.:3.000  
##               Max.   :100   Max.   :4.00   Max.   :5.000  
##                                                           
##                       JobRole    JobSatisfaction  MaritalStatus MonthlyIncome  
##  Sales Executive          :266   Min.   :1.000   Divorced:269   Min.   : 1051  
##  Research Scientist       :232   1st Qu.:2.000   Married :539   1st Qu.: 2898  
##  Laboratory Technician    :199   Median :3.000   Single  :368   Median : 4941  
##  Manufacturing Director   :110   Mean   :2.722                  Mean   : 6563  
##  Healthcare Representative:101   3rd Qu.:4.000                  3rd Qu.: 8406  
##  Manager                  : 85   Max.   :4.000                  Max.   :19999  
##  (Other)                  :183                                                 
##   MonthlyRate    NumCompaniesWorked Over18   OverTime  PercentSalaryHike
##  Min.   : 2094   Min.   :0.000      Y:1176   No :851   Min.   :11.00    
##  1st Qu.: 8192   1st Qu.:1.000               Yes:325   1st Qu.:12.00    
##  Median :14366   Median :2.000                         Median :14.00    
##  Mean   :14326   Mean   :2.696                         Mean   :15.19    
##  3rd Qu.:20373   3rd Qu.:4.000                         3rd Qu.:18.00    
##  Max.   :26997   Max.   :9.000                         Max.   :25.00    
##                                                                         
##  PerformanceRating RelationshipSatisfaction StandardHours StockOptionLevel
##  Min.   :3.00      Min.   :1.000            Min.   :80    Min.   :0.0000  
##  1st Qu.:3.00      1st Qu.:2.000            1st Qu.:80    1st Qu.:0.0000  
##  Median :3.00      Median :3.000            Median :80    Median :1.0000  
##  Mean   :3.15      Mean   :2.709            Mean   :80    Mean   :0.7883  
##  3rd Qu.:3.00      3rd Qu.:4.000            3rd Qu.:80    3rd Qu.:1.0000  
##  Max.   :4.00      Max.   :4.000            Max.   :80    Max.   :3.0000  
##                                                                           
##  TotalWorkingYears TrainingTimesLastYear WorkLifeBalance YearsAtCompany 
##  Min.   : 0.00     Min.   :0.000         Min.   :1.000   Min.   : 0.00  
##  1st Qu.: 6.00     1st Qu.:2.000         1st Qu.:2.000   1st Qu.: 3.00  
##  Median :10.00     Median :3.000         Median :3.000   Median : 5.00  
##  Mean   :11.39     Mean   :2.833         Mean   :2.766   Mean   : 7.03  
##  3rd Qu.:16.00     3rd Qu.:3.000         3rd Qu.:3.000   3rd Qu.:10.00  
##  Max.   :40.00     Max.   :6.000         Max.   :4.000   Max.   :40.00  
##                                                                         
##  YearsInCurrentRole YearsSinceLastPromotion YearsWithCurrManager
##  Min.   : 0.000     Min.   : 0.000          Min.   : 0.000      
##  1st Qu.: 2.000     1st Qu.: 0.000          1st Qu.: 2.000      
##  Median : 3.000     Median : 1.000          Median : 3.000      
##  Mean   : 4.203     Mean   : 2.163          Mean   : 4.189      
##  3rd Qu.: 7.000     3rd Qu.: 2.000          3rd Qu.: 7.000      
##  Max.   :18.000     Max.   :15.000          Max.   :17.000      
## 

2. Δημιουργία (και αξιολόγηση) μοντέλου παλινδρόμησης

α) Χρησιμοποιούμε τη συνάρτηση lm για να δημιουργήσουμε το μοντέλο Γραμμικής Παλινδρόμησης μίας ανεξάρτητης μεταβλητής (model1), με εξαρτημένη μεταβλητή το MonthlyIncome και ανεξάρτητη το TotalWorkingYears.

# Δημιουργία model1
model1 <- lm(MonthlyIncome ~ TotalWorkingYears, data = train_set)

summary(model1)
## 
## Call:
## lm(formula = MonthlyIncome ~ TotalWorkingYears, data = train_set)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11397.3  -1726.6    -73.8   1425.5  10691.3 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        1181.91     154.06   7.672 3.56e-14 ***
## TotalWorkingYears   472.31      11.12  42.459  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3004 on 1174 degrees of freedom
## Multiple R-squared:  0.6056, Adjusted R-squared:  0.6053 
## F-statistic:  1803 on 1 and 1174 DF,  p-value: < 2.2e-16
# Υπολογισμός SSE
SSE_train <- sum(model1$residuals^2)
print(paste("SSE στο Training Set:", round(SSE_train, 2)))
## [1] "SSE στο Training Set: 10596316602.98"
# Υπολογισμός RMSE 
RMSE_train <- sqrt(SSE_train / nrow(train_set))
print(paste("RMSE στο Training Set:", round(RMSE_train, 2)))
## [1] "RMSE στο Training Set: 3001.75"

β) Ομοίως, δημιουργούμε το μοντέλο Πολλαπλής Γραμμικής Παλινδρόμησης (model2), με εξαρτημένη μεταβλητή το MonthlyIncome και ανεξάρτητες το TotalWorkingYears, Age, YearsInCurrentRole. Οι επιλογή τους έγινε με βάση το p-value -αν αυτό είναι μικρότερο του 0,05 θεωρείται στατιστικά σημαντική η μεταβλητή- δηλαδή επηρεάζει πραγματικά το εισόδημα.

# Δημιουργία model2
model2 <- lm(MonthlyIncome ~ TotalWorkingYears + Age + YearsInCurrentRole, data = train_set) # 

summary(model2)
## 
## Call:
## lm(formula = MonthlyIncome ~ TotalWorkingYears + Age + YearsInCurrentRole, 
##     data = train_set)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11367.0  -1645.3    -96.3   1457.3  10470.2 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         1979.08     412.62   4.796 1.82e-06 ***
## TotalWorkingYears    492.83      17.06  28.895  < 2e-16 ***
## Age                  -29.22      13.34  -2.190   0.0287 *  
## YearsInCurrentRole    12.37      27.76   0.446   0.6559    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3000 on 1172 degrees of freedom
## Multiple R-squared:  0.6074, Adjusted R-squared:  0.6064 
## F-statistic: 604.4 on 3 and 1172 DF,  p-value: < 2.2e-16
# Υπολογισμός SSE 
SSE_train_2 <- sum(model2$residuals^2) # 
print(paste("SSE Model 2 (Train):", round(SSE_train_2, 2)))
## [1] "SSE Model 2 (Train): 10548082538.24"
# 4. Υπολογισμός RMSE 
RMSE_train_2 <- sqrt(SSE_train_2 / nrow(train_set)) 
print(paste("RMSE Model 2 (Train):", round(RMSE_train_2, 2)))
## [1] "RMSE Model 2 (Train): 2994.91"
# Σύγκριση Adjusted R-squared
adj_r1 <- summary(model1)$adj.r.squared
adj_r2 <- summary(model2)$adj.r.squared

print(paste("Adjusted R-squared Model 1:", round(adj_r1, 4)))
## [1] "Adjusted R-squared Model 1: 0.6053"
print(paste("Adjusted R-squared Model 2:", round(adj_r2, 4)))
## [1] "Adjusted R-squared Model 2: 0.6064"

3.Εφαρμογή σε νέο σύνολο δεδομένων - Πρόβλεψη

Σε αυτό το βήμα χρησιμοποιούμε το test_set, δηλαδή το 20% των δεδομένων, ώστε να δοκιμάσουμε το model2, για να δούμε την διαφορές, που υπάρχουν σε σχέση με το training set.

Predictions_test <- predict(model2, newdata = test_set)

# Υπολογισμός SSE 
# Μετράμε τη διαφορά μεταξύ πραγματικών τιμών και προβλέψεων
SSE_test <- sum((test_set$MonthlyIncome - Predictions_test)^2)

# Υπολογισμός SST (Total Sum of Squares)
# Η διακύμανση των πραγματικών τιμών σε σχέση με τον μέσο όρο του training set
SST_test <- sum((test_set$MonthlyIncome - mean(train_set$MonthlyIncome))^2)

# Υπολογισμός out-of-sample R-squared 
R2_test <- 1 - (SSE_test / SST_test)

# Υπολογισμός RMSE (Root-Mean-Square Error) 
# Ο δείκτης αυτός δηλώνει τον μέσο όρο σφάλματος σε ευρώ
RMSE_test <- sqrt(SSE_test / nrow(test_set))

# Εμφάνιση αποτελεσμάτων
print(paste("R-squared στο Test Set:", round(R2_test, 4)))
## [1] "R-squared στο Test Set: 0.5582"
print(paste("Μέσο σφάλμα (RMSE) στο Test Set:", round(RMSE_test, 2)))
## [1] "Μέσο σφάλμα (RMSE) στο Test Set: 2926.19"

4.Παραδείγματα και Συμπεράσματα

Σε αυτό το σημείο θα δημιουργήσουμε παραδείγματα εργαζομένων για να δούμε τι προβλέπει το μοντέλο 2.

# Δημιουργία παραδειγμάτων 
# Ένας έμπειρος υπάλληλος (45 ετών, 20 χρόνια προϋπηρεσία, 10 χρόνια στον ρόλο)
# Και ένας νέος υπάλληλος (25 ετών, 2 χρόνια προϋπηρεσία, 1 έτος στον ρόλο)
new_employees <- data.frame(
  TotalWorkingYears = c(20, 2),
  Age = c(45, 25),
  YearsInCurrentRole = c(10, 1)
)
row.names(new_employees) <- c("Έμπειρος Εργαζόμενος", "Νέος Εργαζόμενος")

# Πρόβλεψη 
final_predictions <- predict(model2, newdata = new_employees)

# Εμφάνιση των προβλέψεων
print("Προβλεπόμενο Μηνιαίο Εισόδημα:")
## [1] "Προβλεπόμενο Μηνιαίο Εισόδημα:"
print(round(final_predictions, 2))
## Έμπειρος Εργαζόμενος     Νέος Εργαζόμενος 
##             10644.58              2246.69

Δημιουργία διαγράμματος διασποράς με τη γραμμή παλινδρόμησης

# Δημιουργία διαγράμματος διασποράς με τη γραμμή παλινδρόμησης
library(ggplot2)

ggplot(train_set, aes(x = TotalWorkingYears, y = MonthlyIncome)) +
  geom_point(alpha = 0.5, color = "darkblue") + 
  geom_abline(intercept = coef(model2)[1], 
              slope = coef(model2)[2], 
              color = "red", 
              linewidth = 1) + 
  labs(title = "Γραμμή Παλινδρόμησης: Monthly Income vs Total Working Years",
       x = "Συνολικά Έτη Προϋπηρεσίας",
       y = "Μηνιαίο Εισόδημα") +
  theme_minimal()

Φαίνεται από το διάγραμμα ξεκάθαρα η θετική συσχέτιση μεταξύ προϋπηρεσίας και μισθού.

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

Παρακάτω παρατίθονται κάποια από τα βασικότερα συμπεράσματα με βάση τα αποτελέσματα: