1. Παρουσίαση και Προετοιμασία του Dataset

Το σύνολο δεδομένων προέρχεται από τη βάση δεδομένων του video game FIFA 19 (Πηγή: Kaggle). Παρόλο που πρόκειται για ψηφιακές αξιολογήσεις, τα δεδομένα αποτελούν μια λεπτομερή προσομοίωση των ικανοτήτων των παικτών σε παγκόσμιο επίπεδο, καθώς βασίζονται σε πραγματικό scouting της EA Sports.

Περιλαμβάνει πάνω από 18.000 παρατηρήσεις, γεγονός που το καθιστά ιδανικό για εκπαίδευση.

Περιγραφή Μεταβλητών:

  • Overall (Εξαρτημένη Μεταβλητή): Η τρέχουσα συνολική αξιολόγηση του παίκτη. Είναι ο δείκτης που θέλουμε να προβλέψουμε.

  • Reactions (Αντιδράσεις): Πνευματικό χαρακτηριστικό που δείχνει πόσο γρήγορα ανταποκρίνεται ο παίκτης σε μια φάση. Θεωρείται η πιο κρίσιμη μεταβλητή στο παιχνίδι.

  • Potential (Προοπτική): Η μέγιστη βαθμολογία που μπορεί να φτάσει ο παίκτης.

  • BallControl & ShortPassing: Τεχνικές δεξιότητες που ορίζουν την ποιότητα ενός παίκτη στο σύγχρονο ποδόσφαιρο.

  • Age: Η ηλικία, η οποία επηρεάζει την απόδοση.

Η Πρόβλεψη: Στόχος είναι η δημιουργία ενός μοντέλου που θα λειτουργεί ως “Αυτόματος Σκάουτερ”. Το μοντέλο θα μπορεί να εκτιμήσει αν η συνολική βαθμολογία (Overall) ενός παίκτη δικαιολογείται από τα επιμέρους τεχνικά χαρακτηριστικά του ή αν υπάρχουν υποτιμημένοι/υπερτιμημένοι παίκτες στην αγορά.

library(readr)
library(dplyr)
library(caret)

# 1. Εισαγωγή Δεδομένων
fifa_data <- read.csv("fifa_eda_stats.csv")

# 2. Καθαρισμός και Επιλογή Στρατηγικών Μεταβλητών
analysis_data <- fifa_data %>%
  select(Name, Overall, Age, Potential, Reactions, BallControl, ShortPassing, Finishing) %>%
  na.omit()

# 3. Διαχωρισμός σε Train και Test Set (80% - 20%)
set.seed(123)
train_index <- createDataPartition(analysis_data$Overall, p = 0.8, list = FALSE)
train_set <- analysis_data[train_index, ]
test_set  <- analysis_data[-train_index, ]

# Εμφάνιση των πρώτων εγγραφών
head(train_set)
##                Name Overall Age Potential Reactions BallControl ShortPassing
## 1          L. Messi      94  31        94        95          96           90
## 2 Cristiano Ronaldo      94  33        94        96          94           81
## 4            De Gea      91  27        93        90          42           50
## 5      K. De Bruyne      91  27        92        91          91           92
## 7         L. Modrić      91  32        91        90          93           93
## 9      Sergio Ramos      91  32        91        85          84           78
##   Finishing
## 1        95
## 2        94
## 4        13
## 5        82
## 7        72
## 9        60

Στατιστική Ανάλυση:

  • Overall Rating: Η μέση τιμή (66.25) και η διάμεσος (66.00) συμπίπτουν, υποδηλώνοντας συμμετρική κατανομή, ιδανική για γραμμική παλινδρόμηση.

  • Age: Με μέσο όρο τα 25 έτη και εύρος 16-45, το δείγμα καλύπτει όλο το φάσμα της ποδοσφαιρικής ωριμότητας.

  • Reactions: Η μεγάλη διακύμανση (21-96) καθιστά τις αντιδράσεις έναν δυνητικά ισχυρό προβλεπτικό παράγοντα για το μοντέλο.

  • Τεχνικά Χαρακτηριστικά: Η εγγύτητα των τιμών σε BallControl (58.3) και ShortPassing (58.64) δείχνει ισχυρή συσχέτιση μεταξύ τους.

  • Finishing: Ο χαμηλός μέσος όρος (45.45) οφείλεται στην ύπαρξη αμυντικών παικτών στο δείγμα με περιορισμένες επιθετικές ικανότητες.


2. Οπτικοποίηση Δεδομένων

Σε αυτό το στάδιο, δημιουργούμε διαγράμματα για να επιβεβαιώσουμε οπτικά τη σχέση των ανεξάρτητων μεταβλητών με την εξαρτημένη (Overall).

2.1 Scatterplot: Reactions vs Overall

Η μεταβλητή Reactions θεωρείται η πιο κρίσιμη για την πρόβλεψη του Overall.

library(ggplot2)

# Scatterplot με γραμμή παλινδρόμησης

ggplot(train_set, aes(x = Reactions, y = Overall)) +
  geom_point(alpha = 0.2, color = "darkblue") + 
  geom_smooth(method = "lm", color = "red") +   
  labs(title = "Σχέση Αντιδράσεων (Reactions) και Συνολικής Βαθμολογίας",
       x = "Reactions",
       y = "Overall Rating") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Σχολιασμός Scatterplot:

  • Ισχυρή Γραμμική Σχέση: Παρατηρούμε μια ξεκάθαρη θετική συσχέτιση μεταξύ των Αντιδράσεων (Reactions) και της Συνολικής Βαθμολογίας (Overall). Όσο αυξάνεται η ικανότητα αντίδρασης, τόσο αυξάνεται γραμμικά και η αξιολόγηση του παίκτη.

  • Πυκνότητα Δεδομένων: Η μεγάλη συγκέντρωση των σημείων (σκούρο μπλε χρώμα) γύρω από την κόκκινη γραμμή παλινδρόμησης υποδηλώνει ότι οι Αντιδράσεις αποτελούν έναν εξαιρετικά αξιόπιστο προβλεπτικό παράγοντα.

  • Ερμηνεία Μοντέλου: Η κόκκινη γραμμή αντιπροσωπεύει το «ιδανικό» μοντέλο. Παίκτες που βρίσκονται πολύ πάνω από τη γραμμή θεωρούνται «υποτιμημένοι» βάσει αντιδράσεων, ενώ όσοι βρίσκονται κάτω από αυτήν «υπερτιμημένοι».

2.2 Boxplot: Κατανομή Overall ανά Ηλικία

Εξετάζουμε πώς διακυμαίνεται η συνολική βαθμολογία ανάλογα με την ηλικία των παικτών.

# Χρησιμοποιούμε την ηλικία ως κατηγορική μεταβλητή για το boxplot
ggplot(train_set, aes(x = as.factor(Age), y = Overall)) +
  geom_boxplot(fill = "lightblue", outlier.size = 1) +
  labs(title = "Διακύμανση Overall Rating ανά Ηλικία",
       x = "Ηλικία",
       y = "Overall Rating") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90)) # Στροφή αξόνων για να φαίνονται οι ηλικίες

Σχολιασμός Boxplot:

  • Κύκλος Ζωής Αθλητή: Το διάγραμμα απεικονίζει τη σταδιακή άνοδο της μέσης αξιολόγησης (Overall) από τα 16 έως τα 28 έτη, όπου το επίπεδο των παικτών φτάνει στο “peak” του.

  • Σταθερότητα: Παρατηρούμε μια οριζόντια σταθερότητα στις διάμεσες τιμές από τα 28 έως τα 34 έτη, που αντιπροσωπεύει την περίοδο ακμής του ποδοσφαιριστή. Μετά τα 34, η διάμεση τιμή αρχίζει να παρουσιάζει μια μικρή πτωτική τάση.

  • Ακραίες Τιμές: Οι κουκκίδες πάνω από τα κουτιά αναδεικνύουν τα “super-talents” – παίκτες που, παρά το νεαρό της ηλικίας τους, έχουν ήδη πολύ υψηλή βαθμολογία, ξεχωρίζοντας από τον μέσο όρο της ηλικίας τους.


3. Μοντελοποίηση

Σε αυτό το στάδιο, κατασκευάζουμε το πρώτο μας μοντέλο πρόβλεψης. Η επιλογή της Γραμμικής Παλινδρόμησης βασίζεται στην οπτική επιβεβαίωση της γραμμικότητας που ακολουθεί.

3.1 Απλή Γραμμική Παλινδρόμηση

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

library(ggplot2)

# Διάγραμμα Scatterplot με γραμμή παλινδρόμησης
ggplot(train_set, aes(x = Reactions, y = Overall)) +
  geom_point(alpha = 0.2, color = "darkblue") + 
  geom_smooth(method = "lm", color = "red") +   
  labs(title = "Σχέση Reactions και Overall (Απλή Παλινδρόμηση)",
       x = "Reactions (Ανεξάρτητη)",
       y = "Overall Rating (Εξαρτημένη)") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

Μαθηματική Διατύπωση

Η θεωρητική εξίσωση του μοντέλου είναι: \[Overall = \beta_0 + \beta_1 \cdot Reactions + \epsilon\]

Όπου:

  • \(\beta_0\) (Intercept): Η σταθερά του μοντέλου (η τιμή του Overall όταν οι αντιδράσεις είναι μηδέν).

  • \(\beta_1\) (Slope): Ο συντελεστής κλίσης, που δείχνει τη μεταβολή του Overall για κάθε μονάδα αύξησης των Reactions.

  • \(\epsilon\) (Error term): Το τυχαίο σφάλμα του μοντέλου.

Εκπαίδευση Μοντέλου και Υπολογισμός Σφάλματος

# Προσαρμογή του απλού μοντέλου
model_simple <- lm(Overall ~ Reactions, data = train_set)

#Εμφάνιση αποτελεσμάτων
summary(model_simple)
## 
## Call:
## lm(formula = Overall ~ Reactions, data = train_set)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -18.9710  -2.3175   0.1078   2.4149  13.9023 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 25.838550   0.210539   122.7   <2e-16 ***
## Reactions    0.653522   0.003369   194.0   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.652 on 14527 degrees of freedom
## Multiple R-squared:  0.7214, Adjusted R-squared:  0.7214 
## F-statistic: 3.762e+04 on 1 and 14527 DF,  p-value: < 2.2e-16

Ερμηνεία Αποτελεσμάτων Απλού Μοντέλου

  • Συντελεστής Reactions (\(\beta_1 = 0.653\)): Η τιμή αυτή δείχνει ότι υπάρχει ισχυρή θετική σχέση. Συγκεκριμένα, για κάθε 1 μονάδα αύξησης στις αντιδράσεις (Reactions), το συνολικό score (Overall) του παίκτη αναμένεται να αυξάνεται κατά 0.65 μονάδες.
  • Στατιστική Σημαντικότητα: Η τιμή του \(p\)-value είναι εξαιρετικά μικρή (\(< 2 \times 10^{-16}\)), γεγονός που επιβεβαιώνεται από τα τρία αστεράκια (***). Αυτό σημαίνει ότι οι αντιδράσεις είναι ένας στατιστικά σημαντικός παράγοντας και η επίδρασή τους στο Overall δεν οφείλεται στην τύχη.
  • Προσαρμογή Μοντέλου (\(R^2 = 0.7214\)): Ο συντελεστής προσδιορισμού μας δείχνει ότι το μοντέλο είναι πολύ επιτυχημένο. Οι αντιδράσεις από μόνες τους εξηγούν το 72.14% της διακύμανσης του Overall Rating. Το υπόλοιπο ποσοστό οφείλεται σε άλλους παράγοντες (όπως ηλικία, τεχνική κλπ).
  • Τυπικό Σφάλμα (Residual Standard Error = 3.652): Κατά μέσο όρο, οι προβλέψεις του μοντέλου μας αποκλίνουν από τις πραγματικές τιμές του Overall κατά περίπου 3.65 μονάδες.

Συμπέρασμα: Η πνευματική ετοιμότητα (Reactions) αποτελεί τον θεμέλιο λίθο της αξιολόγησης ενός παίκτη στο FIFA, καθώς καθορίζει σε τεράστιο βαθμό την τελική του εικόνα.

3.2 Πολλαπλή Γραμμική Παλινδρόμηση

Σε αυτό το στάδιο, επεκτείνουμε το μοντέλο μας προσθέτοντας επιπλέον ανεξάρτητες μεταβλητές. Στόχος είναι να εξετάσουμε αν η συμπερίληψη της ηλικίας και των τεχνικών χαρακτηριστικών βελτιώνει την ακρίβεια της πρόβλεψης, μειώνοντας το συνολικό σφάλμα.

Μαθηματική Διατύπωση

Η θεωρητική εξίσωση του πολλαπλού μοντέλου είναι: \[Overall = \beta_0 + \beta_1 \cdot Reactions + \beta_2 \cdot Age + \beta_3 \cdot BallControl + \beta_4 \cdot ShortPassing + \epsilon\]

Όπου:

  • \(\beta_0\) (Intercept): Η σταθερά του μοντέλου.

  • \(\beta_1, \beta_2, \beta_3, \beta_4\): Οι συντελεστές μερικής κλίσης για κάθε μεταβλητή (Reactions, Age, BallControl, ShortPassing αντίστοιχα).

  • \(\epsilon\) (Error term): Το τυχαίο σφάλμα του μοντέλου.

Εκπαίδευση Πολλαπλού Μοντέλου και Υπολογισμός Σφαλμάτος

Ακολουθώντας τη μεθοδολογία της διάλεξης, προσαρμόζουμε το μοντέλο και υπολογίζουμε το νέο SSE για να το συγκρίνουμε με το απλό.

# Προσαρμογή του πολλαπλού μοντέλου
model_multiple <- lm(Overall ~ Reactions + Age + BallControl + ShortPassing, 
                     data = train_set)

# Εμφάνιση αναλυτικών αποτελεσμάτων
summary(model_multiple)
## 
## Call:
## lm(formula = Overall ~ Reactions + Age + BallControl + ShortPassing, 
##     data = train_set)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -17.2634  -2.2825   0.0511   2.3463  15.4649 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  23.696024   0.218741 108.329   <2e-16 ***
## Reactions     0.569629   0.004164 136.804   <2e-16 ***
## Age           0.148492   0.007121  20.853   <2e-16 ***
## BallControl   0.010296   0.004285   2.403   0.0163 *  
## ShortPassing  0.051182   0.004964  10.311   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.527 on 14524 degrees of freedom
## Multiple R-squared:  0.7403, Adjusted R-squared:  0.7402 
## F-statistic: 1.035e+04 on 4 and 14524 DF,  p-value: < 2.2e-16

Ερμηνεία Αποτελεσμάτων Πολλαπλού Μοντέλου

  • Συνεισφορά Μεταβλητών: Όλες οι μεταβλητές που προσθέσαμε (Age, BallControl, ShortPassing) είναι στατιστικά σημαντικές (\(p < 0.05\)). Οι αντιδράσεις (Reactions) παραμένουν ο ισχυρότερος παράγοντας πρόβλεψης.
  • Ανάλυση Συντελεστών:
    • Ηλικία (0.148): Για κάθε επιπλέον έτος ηλικίας, το Overall αυξάνεται κατά 0.15 μονάδες, επιβεβαιώνοντας ότι η εμπειρία παίζει ρόλο στην αξιολόγηση.
    • Τεχνικά Χαρακτηριστικά: Το BallControl και το ShortPassing έχουν θετική επίδραση, με την πάσα να συνεισφέρει 0.05 μονάδες ανά μονάδα αύξησης.
  • Προσαρμογή Μοντέλου (\(R^2 = 0.7403\)): Ο συντελεστής προσδιορισμού αυξήθηκε στο 74.03% (από 72.14% στο απλό μοντέλο). Αυτό σημαίνει ότι το πολλαπλό μοντέλο εξηγεί μεγαλύτερο μέρος της διακύμανσης του Overall Rating.
  • Βελτίωση Σφάλματος (Residual Standard Error = 3.527): Το τυπικό σφάλμα μειώθηκε ελαφρώς σε σχέση με το απλό μοντέλο (από 3.652 σε 3.527), υποδεικνύοντας ότι οι προβλέψεις μας έγιναν πιο ακριβείς.

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


4. Σύγκριση Μοντέλων και Αξιολόγηση (SSE)

Σε αυτό το στάδιο, συγκρίνουμε το Απλό και το Πολλαπλό μοντέλο χρησιμοποιώντας το άθροισμα των τετραγώνων των σφαλμάτων (SSE). Το SSE μετράει τη συνολική απόκλιση των προβλέψεων από τις πραγματικές τιμές. Όσο μικρότερο είναι το SSE, τόσο ακριβέστερο είναι το μοντέλο.

Υπολογισμός SSE

# SSE για το Απλό Μοντέλο 
SSE_simple <- sum(residuals(model_simple)^2)

# SSE για το Πολλαπλό Μοντέλο 
SSE_multiple <- sum(residuals(model_multiple)^2)

# Εμφάνιση αποτελεσμάτων
cat("SSE Απλού Μοντέλου:", SSE_simple, "\n")
## SSE Απλού Μοντέλου: 193773.1
cat("SSE Πολλαπλού Μοντέλου:", SSE_multiple, "\n")
## SSE Πολλαπλού Μοντέλου: 180660.7

Σχολιασμός Σύγκρισης (SSE)

Από τους παραπάνω υπολογισμούς, παρατηρούμε τα εξής:

  • SSE Απλού Μοντέλου: 193,773.1
  • SSE Πολλαπλού Μοντέλου: 180,660.7

Η μείωση του SSE κατά περίπου 13,112 μονάδες στο πολλαπλό μοντέλο υποδηλώνει ότι η προσθήκη των μεταβλητών της ηλικίας και των τεχνικών χαρακτηριστικών (Ball Control, Short Passing) περιόρισε το συνολικό σφάλμα των προβλέψεών μας.

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


5. Πρόβλεψη και Αξιολόγηση στο Test Set

Για να επιβεβαιώσουμε την αξιοπιστία του Πολλαπλού Μοντέλου, εφαρμόζουμε το μοντέλο σε νέα δεδομένα που δεν έχει δει ποτέ κατά την εκπαίδευση (test set).

# Πρόβλεψη των τιμών
predictions <- predict(model_multiple, newdata = test_set)

# Δημιουργία data frame που περιλαμβάνει και τα ονόματα (Name)
comparison_with_names <- data.frame(
  Player_Name = test_set$Name,
  Actual_Overall = test_set$Overall, 
  Predicted_Overall = round(predictions, 1)
)

# Εμφάνιση των πρώτων 10 παικτών για έλεγχο
head(comparison_with_names, 10)
##      Player_Name Actual_Overall Predicted_Overall
## 3      Neymar Jr             92              86.4
## 6      E. Hazard             91              84.5
## 8      L. Suárez             91              85.8
## 12      T. Kroos             90              84.2
## 13      D. Godín             90              81.7
## 16     P. Dybala             89              81.6
## 30    L. Insigne             88              80.3
## 34 P. Aubameyang             88              82.3
## 42     G. Buffon             88              76.8
## 44     M. Icardi             87              82.1

Αξιολόγηση Προβλέψεων και Ταυτοποίηση Παικτών

Με την εμφάνιση των ονομάτων στο test set, μπορούμε να εξάγουμε πολύτιμα συμπεράσματα για την αξιοπιστία του μοντέλου:

  • Αναγνώριση Κορυφαίων Παικτών: Το μοντέλο κατατάσσει σωστά παίκτες παγκόσμιας κλάσης όπως ο Neymar Jr, ο E. Hazard και ο L. Suárez στις υψηλότερες βαθμίδες. Αν και υπάρχει μια απόκλιση από το πραγματικό Overall (π.χ. 92 vs 86.4), η ιεραρχία των παικτών διατηρείται σε μεγάλο βαθμό.
  • Η επίδραση των Reactions: Παίκτες όπως ο T. Kroos (90 Actual / 84.2 Predicted), που φημίζονται για την πνευματική τους ταχύτητα και τις πάσες τους, επιβεβαιώνουν την επιλογή των μεταβλητών μας.
  • Ειδικές Περιπτώσεις: Η μεγαλύτερη απόκλιση σε παίκτες όπως ο G. Buffon (88 Actual / 76.8 Predicted) είναι αναμενόμενη, καθώς οι τερματοφύλακες αξιολογούνται με διαφορετικά κριτήρια (π.χ. GK Reflexes) που δεν περιλαμβάνονται στο γενικό μοντέλο των παικτών πεδίου.
# Δημιουργία δεδομένων για τη σύγκριση
sse_data <- data.frame(
  Model = c("Simple Model", "Multiple Model"),
  SSE = c(SSE_simple, SSE_multiple) 
)

# Διάγραμμα Bar chart για το SSE
ggplot(sse_data, aes(x = Model, y = SSE, fill = Model)) +
  geom_bar(stat = "identity", width = 0.5) +
  geom_text(aes(label = round(SSE, 0)), vjust = -0.5) +
  scale_fill_manual(values = c("gray", "steelblue")) +
  labs(title = "Σύγκριση Σφαλμάτων (SSE)",
       subtitle = "Η μείωση του SSE υποδηλώνει βελτίωση της ακρίβειας",
       x = "Μοντέλο",
       y = "Sum of Squared Errors (SSE)") +
  theme_classic() +
  guides(fill = "none") 

# Διάγραμμα Actual vs Predicted
plot_test <- data.frame(
  Actual = test_set$Overall,
  Predicted = predictions
)

ggplot(plot_test, aes(x = Actual, y = Predicted)) +
  geom_point(alpha = 0.2, color = "#e83e8c") + # Χρησιμοποιώ το pink χρώμα του theme σου
  geom_abline(intercept = 0, slope = 1, color = "red", linetype = "dashed", linewidth = 1) +
  labs(title = "Αξιολόγηση Πολλαπλού Μοντέλου: Actual vs Predicted",
       x = "Πραγματικό Overall",
       y = "Προβλεπόμενο Overall") +
  theme_minimal()


Τελικό Συμπέρασμα Εργασίας

Η στατιστική ανάλυση ολοκληρώθηκε με επιτυχία, αποδεικνύοντας τα εξής:

  1. Κυριαρχία των Reactions: Η πνευματική ετοιμότητα είναι ο σημαντικότερος δείκτης για το Overall Rating.

  2. Πλεονέκτημα Πολλαπλού Μοντέλου: Η προσθήκη της Ηλικίας και των Τεχνικών Δεξιοτήτων μείωσε το σφάλμα (SSE) και βελτίωσε την ακρίβεια της πρόβλεψης.

  3. Εφαρμογή στην Πράξη: Το μοντέλο μπορεί να χρησιμοποιηθεί ως ένα πρώτο εργαλείο “Digital Scouting”, επιτρέποντας την αυτόματη αξιολόγηση παικτών με βάση τα στατιστικά τους χαρακτηριστικά.