1. Περιγραφή του Dataset και της πηγής του

Το dataset περιλαμβάνει πάνω από 7.500 πτήσεις σε 30 δρομολόγια από το Ντουμπάι (DXB). Κάθε εγγραφή περιέχει στοιχεία λειτουργίας της πτήσης (τύπος αεροσκάφους, επιβάτες, πληρότητα, ώρες πτήσης), οικονομικά δεδομένα εσόδων και αναλυτικές κατηγορίες κόστους (π.χ. καύσιμα, πλήρωμα, συντήρηση). Επιπλέον, παρέχει δείκτες κερδοφορίας και πληροφορίες για τις εποχιακές διακυμάνσεις της ζήτησης.

Πηγή Dataset: https://www.kaggle.com/datasets/waleedfaheem/airline-route-profitability-and-cost-analysis


2. Αιτιολόγηση της επιλογής

Η επιλογή του συγκεκριμένου Dataset είναι ιδανική για την Επιχειρηματική Αναλυτική. Ο κλάδος των αερομεταφορών είναι εντάσεως κεφαλαίου, με εξαιρετικά υψηλά κόστη και χαμηλά περιθώρια κέρδους. Η κατανόηση της σχέσης μεταξύ των χαρακτηριστικών ενός δρομολογίου, του λειτουργικού κόστους (π.χ. καύσιμα) και της κερδοφορίας είναι κρίσιμη για τη λήψη στρατηγικών αποφάσεων, όπως η βελτιστοποίηση του στόλου (fleet optimization) και η διαχείριση εσόδων (revenue management).


3. Επιχειρηματικά ερωτήματα προς απάντηση

Μέσω της ανάλυσης αυτών των δεδομένων, μπορούν να απαντηθούν κρίσιμα ερωτήματα, όπως:


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

Ενδεικτικά, μερικές από τις σημαντικότερες μεταβλητές του Dataset είναι:


5. Περιγραφικά στατιστικά

Εισαγωγή του Dataset

df <- read_csv("airline_route_profitability.csv")

Δημιουργία συνάρτησης για τον υπολογισμό της επικρατούσας τιμής (mode)

get_mode <- function(v) {
  uniqv <- unique(na.omit(v))
  uniqv[which.max(tabulate(match(v, uniqv)))]
}

Υπολογισμός των μέτρων κεντρικής τάσης και διασποράς για τη σημαντική μεταβλητή Total_Revenue (Συνολικά Έσοδα).

# Μέτρα Κεντρικής Τάσης
mean_rev <- mean(df$Total_Revenue, na.rm = TRUE)
median_rev <- median(df$Total_Revenue, na.rm = TRUE)
mode_rev <- get_mode(df$Total_Revenue)

# Μέτρα Διασποράς
sd_rev <- sd(df$Total_Revenue, na.rm = TRUE)
var_rev <- var(df$Total_Revenue, na.rm = TRUE)
range_rev <- max(df$Total_Revenue, na.rm = TRUE) - min(df$Total_Revenue, na.rm = TRUE)
min_rev <- min(df$Total_Revenue, na.rm = TRUE)
max_rev <- max(df$Total_Revenue, na.rm = TRUE)

# Εκτύπωση αποτελεσμάτων
cat("Μέτρα Κεντρικής Τάσης (Total Revenue)\n")
## Μέτρα Κεντρικής Τάσης (Total Revenue)
cat("Μέσος Όρος:", round(mean_rev, 2), "\n")
## Μέσος Όρος: 297436.2
cat("Διάμεσος:", round(median_rev, 2), "\n")
## Διάμεσος: 204812.6
cat("Επικρατούσα Τιμή (Mode):", round(mode_rev, 2), "\n\n")
## Επικρατούσα Τιμή (Mode): 464217.4
cat("Μέτρα Διασποράς (Total Revenue)\n")
## Μέτρα Διασποράς (Total Revenue)
cat("Τυπική Απόκλιση:", round(sd_rev, 2), "\n")
## Τυπική Απόκλιση: 266832.9
cat("Διακύμανση:", round(var_rev, 2), "\n")
## Διακύμανση: 71199792290
cat("Εύρος:", round(range_rev, 2), "(Min:", round(min_rev, 2), "- Max:", round(max_rev, 2), ")\n")
## Εύρος: 1479917 (Min: 16650.02 - Max: 1496567 )

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

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

# Επιλογή αριθμητικών μεταβλητών
numeric_vars <- df %>% 
  select(Passengers, Load_Factor, Flight_Hours, Total_Revenue, Total_Cost, Profit_Margin)

# Υπολογισμός πίνακα συσχετίσεων
cor_matrix <- cor(numeric_vars, use = "complete.obs")

# Οπτικοποίηση
corrplot(cor_matrix, method = "number", type = "upper", 
         tl.col = "black", tl.srt = 45, title = "Πίνακας Συσχετίσεων", mar=c(0,0,1,0))

Ερμηνεία Συσχετίσεων

Από τον πίνακα συσχετίσεων προκύπτουν σημαντικά συμπεράσματα για τη λειτουργία της εταιρείας:

  • Κόστος και Διάρκεια Πτήσης (\(r = 0.89\)): Παρατηρούμε τη διακριτά ισχυρότερη θετική συσχέτιση μεταξύ των ωρών πτήσης (Flight_Hours) και του συνολικού κόστους (Total_Cost). Αυτό επιβεβαιώνει ότι οι πτήσεις μεγάλης διάρκειας (Long-haul) επιβαρύνονται σημαντικά από μεταβλητά κόστη όπως τα καύσιμα, η συντήρηση και οι αμοιβές πληρωμάτων.

  • Έσοδα και Επιβάτες (\(r = 0.80\)): Υπάρχει ισχυρή θετική συσχέτιση μεταξύ του αριθμού των επιβατών (Passengers) και των συνολικών εσόδων (Total_Revenue), γεγονός που δείχνει ότι ο όγκος των πωλήσεων παραμένει ο κύριος οδηγός της κερδοφορίας.

  • Σχέση Εσόδων - Κόστους (\(r = 0.88\)): Η πολύ υψηλή συσχέτιση μεταξύ εσόδων και κόστους υποδηλώνει ότι καθώς αυξάνεται η κλίμακα της επιχείρησης (π.χ. μεγαλύτερα αεροσκάφη, μακρινότερα δρομολόγια), τα έξοδα ακολουθούν σχεδόν παράλληλα την αύξηση των εσόδων.

  • Αποδοτικότητα και Load Factor (\(r = 0.42\)): Είναι ενδιαφέρον ότι το περιθώριο κέρδους (Profit_Margin) συσχετίζεται θετικά με τον συντελεστή πληρότητας (Load_Factor), αλλά με μέτρια ένταση (0.42). Αυτό υποδηλώνει ότι ένα γεμάτο αεροπλάνο βοηθάει το κέρδος, αλλά δεν το εγγυάται πάντα, καθώς το τελικό αποτέλεσμα επηρεάζεται και από άλλους παράγοντες, όπως η τιμή του εισιτηρίου και ο έλεγχος των λειτουργικών εξόδων.

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

Α. Scatterplot

# Α. Scatterplot
ggplot(df, aes(x = Total_Cost, y = Total_Revenue, color = Route_Category)) +
  geom_point(alpha = 0.5) +
  geom_smooth(method = "lm", color = "black", se = FALSE, linetype = "dashed") + 
  theme_minimal() +
  labs(title = "Σχέση Εσόδων - Κόστους",
       subtitle = "Ανάλυση ανά Κατηγορία Δρομολογίου",
       x = "Συνολικό Κόστος (USD)", 
       y = "Συνολικά Έσοδα (USD)")

Συμπέρασμα

Η θετική κλίση της γραμμής επιβεβαιώνει την ισχυρή συσχέτιση. Ωστόσο, το ενδιαφέρον είναι η απόσταση των σημείων από τη γραμμή. Τα σημεία πάνω από τη γραμμή αντιπροσωπεύουν πτήσεις με εξαιρετική κερδοφορία, ενώ αυτά κάτω από τη γραμμή (κυρίως σε Long-haul διαδρομές) υποδεικνύουν δρομολόγια όπου το κόστος αυξάνεται ταχύτερα από τα έσοδα. Η εταιρεία πρέπει να επανεξετάσει την τιμολογιακή πολιτική στις Long-haul πτήσεις που “υποαποδίδουν” έναντι του κόστους τους.


Β. Boxplot

ggplot(df, aes(x = Season, y = Profit_Margin, fill = Season)) +
  geom_boxplot(outlier.color = "red", outlier.shape = 16) +
  theme_minimal() +
  labs(title = "Ανάλυση Περιθωρίου Κέρδους ανά Εποχή",
       x = "Εποχή", y = "Περιθώριο Κέρδους (%)")

Συμπέρασμα

Η ύπαρξη αρνητικών outliers (κόκκινες κουκκίδες) στην περίοδο “Low” δείχνει ότι υπάρχουν πτήσεις που εκτελούνται με ζημία απλώς για να διατηρηθεί το slot του αεροδρομίου. Αντίθετα, η στενή κατανομή στην περίοδο “Peak” δείχνει εγγυημένη κερδοφορία. Η διοίκηση μπορεί να χρησιμοποιήσει αυτά τα δεδομένα για να προσφέρει επιθετικές προσφορές (promotions) τη “Shoulder” περίοδο, ώστε να ανεβάσει το διάμεσο κέρδος στα επίπεδα της “Peak”


Γ. Histogram

ggplot(df, aes(x = Load_Factor)) +
  geom_histogram(binwidth = 0.02, fill = "darkgreen", color = "white") +
  geom_vline(aes(xintercept = mean(Load_Factor)), color = "red", linetype = "dashed") +
  theme_minimal() +
  labs(title = "Κατανομή Πληρότητας Πτήσεων",
       subtitle = "Η διακεκομμένη γραμμή δείχνει τον μέσο όρο",
       x = "Load Factor", y = "Αριθμός Πτήσεων")

Συμπέρασμα

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


Δ. Bar Chart

# Υπολογισμός και Οπτικοποίηση Αποδοτικότητας
df_fuel <- df %>%
  mutate(Fuel_Per_Hour = Fuel_Cost / Flight_Hours)

ggplot(df_fuel, aes(x = reorder(Aircraft_Type, Fuel_Per_Hour), y = Fuel_Per_Hour, fill = Aircraft_Type)) +
  stat_summary(fun = "mean", geom = "bar") + 
  coord_flip() +
  theme_minimal() +
  labs(title = "Αποδοτικότητα Καυσίμου ανά Τύπο Αεροσκάφους",
       subtitle = "Μέσο λειτουργικό κόστος καυσίμου ανά ώρα πτήσης",
       x = "Τύπος Αεροσκάφους", 
       y = "Μέσο Κόστος Καυσίμου ανά Ώρα (USD)") +
  theme(legend.position = "none")

Συμπέρασμα

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