Εισαγωγή

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

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

Τα δεδομένα

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

Συντομογραφία Χαρακτηριστικό Περιγραφή
X1 transaction date Ημερομηνία αγοροπωλησίας σε δεκαδική μορφή (π.χ. 2012.917 αντιστοιχεί περίπου σε 1 Δεκεμβρίου 2012).
X2 house age Ηλικία του σπιτιού σε έτη κατά τη στιγμή της συναλλαγής.
X3 distance to the nearest MRT station Απόσταση (σε μέτρα) από το σπίτι μέχρι τον πλησιέστερο σταθμό MRT (μετρό).
X4 number of convenience stores Αριθμός καταστημάτων ευκολίας (π.χ. 7-Eleven) κοντά στο σπίτι.
X5 latitude Γεωγραφικό πλάτος της τοποθεσίας του σπιτιού.
X6 longitude Γεωγραφικό μήκος της τοποθεσίας του σπιτιού.
Y house price of unit area Τιμή μονάδας ανά τετραγωνικό μέτρο (σε NT$).

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

Οπτικοποίηση δεδομένων
No X1 transaction date X2 house age X3 distance to the nearest MRT station X4 number of convenience stores X5 latitude X6 longitude Y house price of unit area
1 2012.917 32.0 84.87882 10 24.98298 121.5402 37.9
2 2012.917 19.5 306.59470 9 24.98034 121.5395 42.2
3 2013.583 13.3 561.98450 5 24.98746 121.5439 47.3
4 2013.500 13.3 561.98450 5 24.98746 121.5439 54.8
5 2012.833 5.0 390.56840 5 24.97937 121.5425 43.1

Προετοιμασία Δεδομένων

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

Έλεγχος Κενών Τιμών

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

Σύνολο κενών τιμών σε ποσοστά %
Missing_Values
No 0 %
X1 transaction date 0 %
X2 house age 0 %
X3 distance to the nearest MRT station 0 %
X4 number of convenience stores 0 %
X5 latitude 0 %
X6 longitude 0 %
Y house price of unit area 0 %

Έλεγχος Εύρους Τιμών και Κατάλληλων Τύπων

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

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

Οπτικοποίηση στατιστικών χαρακτηριστικών των δεδομένων
X1 transaction date X2 house age X3 distance to the nearest MRT station X4 number of convenience stores X5 latitude X6 longitude Y house price of unit area
Min. :2013 Min. : 0.000 Min. : 23.38 Min. : 0.000 Min. :24.93 Min. :121.5 Min. : 7.60
1st Qu.:2013 1st Qu.: 9.025 1st Qu.: 289.32 1st Qu.: 1.000 1st Qu.:24.96 1st Qu.:121.5 1st Qu.: 27.70
Median :2013 Median :16.100 Median : 492.23 Median : 4.000 Median :24.97 Median :121.5 Median : 38.45
Mean :2013 Mean :17.713 Mean :1083.89 Mean : 4.094 Mean :24.97 Mean :121.5 Mean : 37.98
3rd Qu.:2013 3rd Qu.:28.150 3rd Qu.:1454.28 3rd Qu.: 6.000 3rd Qu.:24.98 3rd Qu.:121.5 3rd Qu.: 46.60
Max. :2014 Max. :43.800 Max. :6488.02 Max. :10.000 Max. :25.01 Max. :121.6 Max. :117.50

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

central_tendency_data <- data.frame(
  Mean = round(sapply(Real_estate[, 2:8], mean, na.rm = TRUE), digits = 2),
  Median = round(sapply(Real_estate[, 2:8], median, na.rm = TRUE), digits = 2),
  Most_Frequent = sapply(round(Real_estate[, 2:8], digits = 2), function(x) {
    as.numeric(names(sort(table(x), decreasing = TRUE)[1]))
  })
)
kable(central_tendency_data, caption = "Μέτρα Κεντρικής Τάσης")
Μέτρα Κεντρικής Τάσης
Mean Median Most_Frequent
X1 transaction date 2013.15 2013.17 2013.42
X2 house age 17.71 16.10 0.00
X3 distance to the nearest MRT station 1083.89 492.23 289.32
X4 number of convenience stores 4.09 4.00 0.00
X5 latitude 24.97 24.97 24.97
X6 longitude 121.53 121.54 121.54
Y house price of unit area 37.98 38.45 24.70

Πραγματοποιήθηκε ανάλυση των μέτρων κεντρικής τάσης για κάθε χαρακτηριστικό του συνόλου δεδομένων. Οι βασικές μετρικές που εξετάστηκαν είναι η μέση τιμή (mean), η μεσαία τιμή (median) και η συχνότερη τιμή (mode). Οι τιμές αυτές παρέχουν σημαντικές πληροφορίες για την κατανομή των μεταβλητών και για πιθανές ασυμμετρίες ή ακραίες τιμές.

  • Το Χ1 (transaction date) παρουσιάζει ήπια θετική ασυμμετρία, καθώς η συχνότερη τιμή (2013.42) είναι μεγαλύτερη τόσο της μέσης (2013.15) όσο και της μεσαίας τιμής (2013.17). Αυτό υποδηλώνει ότι οι περισσότερες συναλλαγές πραγματοποιήθηκαν προς το τέλος της περιόδου συλλογής των δεδομένων, γεγονός που ίσως σχετίζεται με αυξημένη δραστηριότητα στην αγορά.

  • Το Χ2 (house age) παρουσιάζει μία ιδιόμορφη κατανομή. Η συχνότερη τιμή είναι 0.00, γεγονός που δηλώνει έντονη παρουσία νεόδμητων κατοικιών, ενώ η μέση (17.71) και η μεσαία (16.10) τιμή είναι σαφώς μεγαλύτερες. Η αντίθεση αυτή υποδηλώνει επικάλυψη διαφορετικών υποκατανομών και πιθανή ύπαρξη κατανομής σχήματος αναστραμμένου J.

  • Το Χ3 (distance to the nearest MRT station) εμφανίζει σημαντική θετική ασυμμετρία. Η συχνότερη τιμή (289.32) είναι πολύ μικρότερη της μέσης (1083.89) και της μεσαίας (492.23), γεγονός που φανερώνει ότι τα περισσότερα ακίνητα βρίσκονται κοντά σε σταθμούς μετρό, ενώ υπάρχει μικρό ποσοστό ακινήτων σε απομακρυσμένες περιοχές.

  • Το Χ4 (number of convenience stores) έχει συχνότερη τιμή το 0, ενώ η μέση τιμή είναι 4.09 και η μεσαία 4.00. Αυτό δείχνει ότι ένα σημαντικό ποσοστό ακινήτων στερείται άμεσης πρόσβασης σε καταστήματα ευκολίας, αν και ο γενικός μέσος όρος δείχνει επαρκή παρουσία τους σε άλλες περιοχές.

  • Τα Χ5 (latitude) και Χ6 (longitude) έχουν σχεδόν ίσες τιμές σε όλες τις μετρικές (μέση, μεσαία και συχνότερη), κάτι που επιβεβαιώνει ότι τα δεδομένα αφορούν γεωγραφικά περιορισμένη περιοχή, χωρίς αξιοσημείωτες διαφορές στον άξονα πλάτους και μήκους.

  • Η εξαρτημένη μεταβλητή Y (house price of unit area) παρουσιάζει ελαφρά αρνητική ασυμμετρία. Η συχνότερη τιμή (24.70) είναι χαμηλότερη της μέσης (37.98) και της μεσαίας τιμής (38.45), γεγονός που υποδηλώνει ύπαρξη ακινήτων με χαμηλή τιμή μονάδας, αλλά με πλειοψηφία γύρω από υψηλότερες τιμές.

Μέτρα Διασποράς

dispersion_data <- data.frame(
  Standard_Deviation = round(sapply(Real_estate[, 2:8], sd, na.rm = TRUE), digits= 2),
  Variance = round(sapply(Real_estate[, 2:8], var, na.rm = TRUE), digits= 2),
  Range_Min = round(sapply(Real_estate[, 2:8], function(x) min(x, na.rm = TRUE)), digits=2),
  Range_Max = round(sapply(Real_estate[, 2:8], function(x) max(x, na.rm = TRUE)), digits= 2)
)
kable(dispersion_data, caption = "Μέτρα Διασποράς")
Μέτρα Διασποράς
Standard_Deviation Variance Range_Min Range_Max
X1 transaction date 0.28 0.08 2012.67 2013.58
X2 house age 11.39 129.79 0.00 43.80
X3 distance to the nearest MRT station 1262.11 1592920.63 23.38 6488.02
X4 number of convenience stores 2.95 8.68 0.00 10.00
X5 latitude 0.01 0.00 24.93 25.01
X6 longitude 0.02 0.00 121.47 121.57
Y house price of unit area 13.61 185.14 7.60 117.50

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

  • Το Χ1 (transaction date) παρουσιάζει μικρή διασπορά (τυπική απόκλιση ≈ 0.28), γεγονός αναμενόμενο καθώς οι συναλλαγές πραγματοποιούνται μέσα σε μικρό χρονικό διάστημα (2012.67–2013.58).

  • Το Χ2 (house age) εμφανίζει σημαντική διακύμανση (τυπική απόκλιση ≈ 11.39), που υποδηλώνει την ύπαρξη κατοικιών διαφορετικών ηλικιών στην αγορά, από νεόδμητα έως παλαιότερα ακίνητα.

  • Το Χ3 (distance to the nearest MRT station) παρουσιάζει τη μεγαλύτερη διασπορά (τυπική απόκλιση ≈ 1262.11), γεγονός που αντανακλά την μεγάλη απόκλιση στις αποστάσεις των ακινήτων από σταθμούς μετρό. Αυτό επιβεβαιώνει και την προηγούμενη παρατήρηση περί έντονης ποικιλομορφίας, από κεντρικές έως επαρχιακές περιοχές.

  • Το Χ4 (number of convenience stores) εμφανίζει μέτρια διασπορά (τυπική απόκλιση ≈ 2.95), με τις τιμές να κυμαίνονται από 0 έως 10 καταστήματα ανά περιοχή, γεγονός που δηλώνει ποικιλία στην εμπορική προσβασιμότητα των περιοχών.

  • Τα Χ5 (latitude) και Χ6 (longitude) εμφανίζουν εξαιρετικά μικρή διασπορά, γεγονός που υποδηλώνει ότι όλα τα ακίνητα βρίσκονται σε στενό γεωγραφικό πλαίσιο. Αυτό ήταν αναμενόμενο, καθώς πρόκειται για δεδομένα από μια περιορισμένη γεωγραφική περιοχή στην Ταϊβάν.

  • Τέλος, η εξαρτημένη μεταβλητή Y (house price of unit area) παρόλο που δεν εμφανίζεται ολοκληρωμένα στον πίνακα, βάσει των προηγούμενων μετρικών τάσης και διασποράς, χαρακτηρίζεται από ικανοποιητική μεταβλητότητα, που επιτρέπει την εφαρμογή παλινδρομικών τεχνικών για την εξαγωγή συσχετίσεων.

Έλεγχος Κανονικότητας με Q-Q Plots

Τα παρακάτω διαγράμματα Q-Q (Quantile-Quantile) χρησιμοποιήθηκαν για τον οπτικό έλεγχο της κανονικότητας των μεταβλητών του συνόλου δεδομένων. Η κανονική κατανομή υποδηλώνεται από την ευθυγράμμιση των σημείων κατά μήκος της διαγωνίου (κόκκινη γραμμή). Η απόκλιση των σημείων από τη γραμμή καταδεικνύει παρεκκλίσεις από την κανονικότητα.

# Reshape your data to long format (for variables X2 to X8)
qq_data <- Real_estate %>%
  select(2:8) %>%  
  pivot_longer(cols = everything(), names_to = "Variable", values_to = "Value")

# Create QQ plot
ggplot(qq_data, aes(sample = Value)) +
  stat_qq() +
  stat_qq_line(color = "red") +
  facet_wrap(~ Variable, scales = "free") +
  theme_minimal() +
  labs(title = "QQ Plots for Real Estate Variables",
       x = "Theoretical Quantiles", y = "Sample Quantiles")

  • Οι μεταβλητές X1 (transaction date), X2 (house age) και X4 (number of convenience stores) εμφανίζουν σχετικά καλή ευθυγράμμιση στο κεντρικό τμήμα των δεδομένων, αλλά παρουσιάζουν σημαντικές αποκλίσεις στα άκρα, φανερώνοντας την παρουσία ακραίων τιμών ή ασυμμετρίας που αποκλίνει από την κανονική κατανομή.

  • Οι μεταβλητές X3 (distance to the nearest MRT station) και X6 (longitude) εμφανίζουν τις μεγαλύτερες αποκλίσεις από την κανονικότητα, καθώς η πλειοψηφία των παρατηρήσεων αποκλίνει έντονα από την διαγώνια γραμμή. Η κατανομή τους ενδέχεται να είναι πολυτροπική ή να χαρακτηρίζεται από έντονη ασυμμετρία.

  • Η μεταβλητή Y (house price of unit area) παρουσιάζει σημαντικά καλή ευθυγράμμιση με την θεωρητική κατανομή, ιδιαίτερα στο μέσο εύρος τιμών. Η κανονικότητα είναι αποδεκτή με εξαίρεση λίγες ακραίες τιμές (outliers) στο ανώτερο άκρο της κατανομής.

  • Οι γεωγραφικές συντεταγμένες X5 (latitude) και X6 (longitude) είναι σχεδόν γραμμικά ευθυγραμμισμένες, με μικρές αποκλίσεις, γεγονός που ενδεχομένως οφείλεται στον περιορισμένο γεωγραφικό χώρο στον οποίο εστιάζουν τα δεδομένα.

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

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

Οπτικοποίηση βασικών χαρακτηριστικών

Ηλικία Οικοδομών

ggplot(Real_estate, aes(x= X2, y= Y))+
  geom_point()+
  geom_smooth(method = "loess")+
  labs(x = "Ηλικία Σπιτιού (έτη)", y = "Τιμή ανά m²", title="Τιμή ανά ηλικία")

Παρατηρείται αρχικά μια φθίνουσα τάση στην τιμή ανά τετραγωνικό μέτρο έως περίπου την ηλικία των 25 ετών, ενώ μετά την ηλικία των 30 ετών διαφαίνεται μια ήπια αυξητική πορεία, γεγονός που ενδέχεται να υποδηλώνει διαφοροποίηση στη ζήτηση ή/και στην ποιότητα των ακινήτων ανάλογα με την ηλικία τους.

Απόστασή απο Μετρό

ggplot(Real_estate, aes(x= X3, y= Y))+
  geom_point()+
  geom_smooth(method = "loess")+
  geom_hline(aes(yintercept = min(Y)), color = "red", linetype = "dashed", linewidth = 1) +  
  geom_hline(aes(yintercept = max(Y)), color = "green", linetype = "dashed", linewidth = 1) +  
  labs(x = "Απόσταση από μετρό MRT", y = "Τιμή ανά m²", title="Τιμή ανά απόσταση MRT")

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

Περιοχές κατοικιών

library(leaflet)

leaflet(data = Real_estate) %>%
  addTiles() %>%
  addCircleMarkers(
    lng = ~X6, lat = ~X5,
    radius = 5,
    color = ~colorNumeric("plasma", Y)(Y),
    popup = ~paste("Τιμή:", Y, "NT$")
  )

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

Χρονική πορεία τιμής

ggplot(Real_estate, aes(x = X1, y = Y)) +
  geom_point() +
  geom_smooth(method = "loess") +
  labs(x = "Ημερομηνία Συναλλαγής", y = "Τιμή ανά m²")

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

Τιμή ανά αριθμό καταστημάτων

ggplot(Real_estate, aes(x = factor(X4), y = Y)) +
  geom_boxplot() +
  labs(x = "Αριθμός Καταστημάτων", y = "Τιμή ανά m²")

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

Συσχέτιση Δεδομένων

library(corrplot)

# Calculate correlation matrix
cor_matrix <- cor(Real_estate[, 2:8], method = "pearson")

# Visualize
corrplot(cor_matrix, method = "color", type = "upper", 
         tl.col = "black", tl.srt = 45, addCoef.col = "black")

Στο παραπάνω διάγραμμα παρουσιάζεται η συσχέτιση των χαρακτηριστικών μεταξύ τους, σύμφωνα με τη μέθοδο Pearson. Μια υψηλή συσχέτιση μεταξύ της εξαρτημένης μεταβλητής και ενός χαρακτηριστικού υποδεικνύει ότι το συγκεκριμένο χαρακτηριστικό συμβάλλει σημαντικά στην πρόβλεψή της και, αντιστρόφως, η εξαρτημένη μεταβλητή επηρεάζεται σε μεγάλο βαθμό από αυτό το χαρακτηριστικό. Επιπλέον, όταν παρατηρείται υψηλή συσχέτιση μεταξύ δύο ή περισσοτέρων χαρακτηριστικών, αυτό σημαίνει ότι τα χαρακτηριστικά αυτά σχετίζονται στενά και μπορούν να θεωρηθούν ως ένα μόνο χαρακτηριστικό με παρόμοιο επιδραστικό ρόλο στην ανάλυση. Στην περίπτωση αυτή, εφόσον ο συντελεστής συσχέτισης (corr) είναι μεγαλύτερος από 90%, μπορεί να δικαιολογηθεί η αφαίρεση αυτών των χαρακτηριστικών από το μοντέλο, καθώς η παρουσία τους μπορεί να οδηγήσει σε πολλαπλή συν-συσχέτιση, με αποτέλεσμα τη μείωση της προβλεπτικής ικανότητας του μοντέλου. Τέλος, παρατηρείται ότι το χαρακτηριστικό X3 είναι το πιο συσχετιζόμενο με την εξαρτημένη μεταβλητή Υ. Αντιθέτως, το χαρακτηριστικό Χ1 ειναι το λιγότερο συσχετισμένο.

Εκπαίδευση Μοντέλου

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

Για να γίνει η εκπαίδευση του μοντέλου, χρησιμοποιούμε τη μέθοδο της γραμμικής παλινδρόμησης και την αξιολογούμε με κατάλληλους δείκτες απόδοσης, όπως τα υπόλοιπα του μοντέλου, το \(R^2\) και το σφάλμα πρόβλεψης SSE.

Train Test Split

set.seed(123)  # For reproducibility

# 70/30 split
sample_index <- sample(1:nrow(Real_estate), size = 0.7 * nrow(Real_estate))
train_data <- Real_estate[sample_index, ]
test_data <- Real_estate[-sample_index, ]
## Σύνολο δεδομένων του Train set: 289
## Σύνολο δεδομένων του Test set: 125

Πριν από κάθε εκπαίδευση και αξιολόγηση του μοντέλου, το σύνολο δεδομένων διαχωρίζεται σε δύο κατηγορίες. Η πρώτη κατηγορία ονομάζεται Train set και χρησιμοποιείται για την εκπαίδευση του μοντέλου. Επιπλέον, σε ορισμένες περιπτώσεις, το Train set μπορεί να χρησιμοποιηθεί και ως validation set όταν δουλεύουμε με πιο σύνθετα μοντέλα, όπως τα νευρωνικά δίκτυα, για να αξιολογήσουμε την απόδοση του μοντέλου κατά τη διάρκεια της εκπαίδευσης.

Η δεύτερη κατηγορία δεδομένων είναι το Test set, το οποίο χρησιμεύει για την τελική αξιολόγηση του μοντέλου αφού έχει ολοκληρωθεί η εκπαίδευση. Το Test set πρέπει να παραμείνει “αόρατο” από το μοντέλο κατά τη διάρκεια της εκπαίδευσης, και καμία προεπεξεργασία (όπως κανονικοποίηση με τη μέθοδο min-max) δεν πρέπει να εφαρμοστεί σε αυτό το σύνολο. Αν γίνει οποιαδήποτε επεξεργασία ή η χρήση των δεδομένων του Test set πριν από την τελική αξιολόγηση, αυτό μπορεί να οδηγήσει σε data leakage, δηλαδή την αποκατάσταση κρίσιμων πληροφοριών που επηρεάζουν την εκπαίδευση του μοντέλου, καθιστώντας την αξιολόγηση αναξιόπιστη. Ο σωστός διαχωρισμός και η προστασία του Test set είναι κρίσιμος για τη σωστή και αξιόπιστη εκτίμηση της απόδοσης του μοντέλου.

Linear Regression

# Get the names of potential predictor variables 
predictor_names <- names(Real_estate)[2:8]
num_predictors <- length(predictor_names)

for (i in 1:(num_predictors-1)) {
  # Select features
  select_features <- predictor_names[1:i]
  
  # Create formula
  formula_str <- paste("Y ~", paste(select_features, collapse = " + "))
  param <- as.formula(formula_str)
  
  # Train model
  model <- lm(param, data = train_data)
  
  # 1. Create model matrix for prediction 
  X_test <- model.matrix(param, data = test_data)[,-1]  # Remove intercept
  
  # 2. Manual prediction using coefficients
  coefs <- coef(model)
  intercept <- coefs[1] # a
  slope_coefs <- coefs[-1] #b1, b2, ..., bn
  
  # 3. Calculate predictions (intercept + X_test * coefficients)
  preds <- intercept + as.matrix(X_test) %*% slope_coefs
  
  # Get actual values
  true_y <- test_data$Y
  
  # Calculate metrics
  SSE_test <- sum((true_y - preds)^2)
  SST_test <- sum((true_y - mean(true_y))^2)
  
  # R-squared
  if (SST_test == 0) {
    R2_test <- NA
  } else {
    R2_test <- 1 - SSE_test / SST_test
  }
  
  # Model R²
  R2_model <- summary(model)$r.squared
  
  # Store results
  features_str <- paste(select_features, collapse = ", ")
  current_results <- data.frame(
    features = features_str,
    SSE = SSE_test,
    Train.R2 = R2_model,
    Test.R2 = R2_test,
    stringsAsFactors = FALSE
  )
  
  results <- rbind(results, current_results)
}

# Print results
kable(results)
features SSE Train.R2 Test.R2
X1 34311.68 0.0001501 -0.0416523
X1, X2 32181.90 0.0282510 0.0230048
X1, X2, X3 18685.97 0.5419870 0.4327214
X1, X2, X3, X4 17097.67 0.5904955 0.4809397
X1, X2, X3, X4, X5 16906.76 0.6343747 0.4867355
X1, X2, X3, X4, X5, X6 16988.90 0.6349018 0.4842418

Με βάση τα παραπάνω αποτελέσματα, μπορούμε να συμπεράνουμε τα εξής: Η σταδιακή προσθήκη νέων χαρακτηριστικών οδηγεί σε αύξηση της ακρίβειας του μοντέλου γραμμικής παλινδρόμησης μέχρι και την προσθήκη της ανεξάρτητης μεταβλητής X5. Τα χαρακτηριστικά X1 και X2 δεν συνέβαλαν ουσιαστικά στην προβλεπτική απόδοση του μοντέλου, καθώς, όπως αναλύθηκε στην ενότητα των συσχετίσεων, οι μεταβλητές αυτές εμφανίζουν χαμηλή συσχέτιση με την εξαρτημένη μεταβλητή Υ. Αντίθετα, οι ανεξάρτητες μεταβλητές X4, X5, και ιδιαίτερα X3, συντέλεσαν στην σημαντική μείωση του σφάλματος \(R^2\). Μια τιμή 0.4876 στο \(R^2\) σημαίνει ότι το 48.76% της μεταβλητότητας των χαρακτηριστικών σχετίζεται με την τιμή ενώ ένα 51.24% δεν συνδέεται. Συνεχίζοντας παρατηρούμε ότι, η απόδοση του μοντέλου φθίνει με την προσθήκη του χαρακτηριστικού X6, γεγονός που δείχνει ότι η προσθήκη επιπλέον χαρακτηριστικών μπορεί να οδηγήσει σε υπερπροσαρμογή (overfitting) ή σε μείωση της γενικής ικανότητας πρόβλεψης του μοντέλου.

Αποτελέσματα

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

# Train model
model <- lm(Y ~ X1 + X2 + X3 + X4 + X5 + X6, data = train_data)

# Print a summary of the model
summary(model)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4 + X5 + X6, data = train_data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -17.7364  -4.6846  -0.9299   4.1948  26.8641 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.637e+04  6.483e+03  -2.525   0.0121 *  
## X1           3.255e+00  1.569e+00   2.075   0.0389 *  
## X2          -2.141e-01  3.914e-02  -5.470 9.93e-08 ***
## X3          -3.771e-03  6.874e-04  -5.486 9.14e-08 ***
## X4           1.043e+00  1.921e-01   5.430 1.22e-07 ***
## X5           2.524e+02  4.310e+01   5.857 1.31e-08 ***
## X6           2.927e+01  4.588e+01   0.638   0.5240    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.415 on 282 degrees of freedom
## Multiple R-squared:  0.6349, Adjusted R-squared:  0.6271 
## F-statistic: 81.73 on 6 and 282 DF,  p-value: < 2.2e-16

Τα παρακάτω αποτελέσματα παρουσιάζουν τους εκτιμηθέντες συντελεστές του γραμμικού μοντέλου, μαζί με τα στατιστικά τους χαρακτηριστικά:

  • Intercept\(α\) ή \(β_0\)): Αντιπροσωπεύει την τιμή της εξαρτημένης μεταβλητής όταν όλες οι ανεξάρτητες μεταβλητές λαμβάνουν τιμή 0. Στην παρούσα περίπτωση, η τιμή του είναι -16.37, δηλαδή όταν οι μεταβλητές \(X_1, X_2, ..., X_5\) είναι μηδέν, η εξαρτημένη μεταβλητή έχει την τιμή -16.37.

  • X1, …, X6: Αυτές είναι οι ανεξάρτητες μεταβλητές, και οι συντελεστές \(β_1, ..., β_6\) εκτιμούν την επίδραση αυτών των μεταβλητών στην εξαρτημένη μεταβλητή. Κάθε συντελεστής εκφράζει πόσο αυξάνεται ή μειώνεται η εξαρτημένη μεταβλητή με την αύξηση της αντίστοιχης ανεξάρτητης μεταβλητής κατά μία μονάδα, ενώ οι υπόλοιπες παραμένουν σταθερές.

  • Std. Error: Η τυπική απόκλιση (standard error) αναπαριστά την αβεβαιότητα της εκτίμησης του κάθε συντελεστή. Εκφράζει την απόσταση της εκτιμημένης τιμής από την πραγματική της τιμή και υπολογίζεται ως το μέτρο της μεταβλητότητας της εκτίμησης. Σε αυτήν την περίπτωση, για το X1, η τυπική απόκλιση είναι 1.569, δηλαδή η εκτίμηση του συντελεστή \(β_1\) έχει μια αβεβαιότητα της τάξης των 1.569.

  • t value: Ο λόγος του εκτιμημένου συντελεστή προς την τυπική απόκλιση. Το t-value χρησιμοποιείται για να εξετάσουμε εάν ο συγκεκριμένος συντελεστής είναι σημαντικά διαφορετικός από το μηδέν. Με υψηλό t-value, αποδεικνύεται ότι ο συντελεστής είναι σημαντικός και η αντίστοιχη μεταβλητή συνεισφέρει στη διαμόρφωση του μοντέλου.

  • Pr(>|t|): Η p-τιμή εξετάζει την μηδενική υπόθεση ότι ο συντελεστής είναι ίσος με το μηδέν (δηλαδή η μεταβλητή δεν έχει καμία επίδραση στην εξαρτημένη μεταβλητή). Μια μικρή p-τιμή υποδηλώνει ότι μπορούμε να απορρίψουμε τη μηδενική υπόθεση και να συμπεράνουμε ότι η μεταβλητή έχει σημαντική επίδραση στην εξαρτημένη μεταβλητή.

  • Οι αστερίσκοι δηλώνουν το επίπεδο στατιστικής σημαντικότητας:

    • *** υποδηλώνει p-τιμή μικρότερη από 0.001, δηλαδή ο συντελεστής είναι εξαιρετικά σημαντικός.
    • ** υποδηλώνει p-τιμή μικρότερη από 0.01.
    • * υποδηλώνει p-τιμή μικρότερη από 0.05.

Σε αυτήν την περίπτωση, οι σημαντικότερες μεταβλητές είναι οι Χ2, …, Χ5 όπου η Χ6 δεν είναι καθόλου σημαντική.

Η Γραμμική Συνάρτηση

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

\[ Y = -16.37 + 3.255 \cdot X_1 - 0.214 \cdot X_2 - 0.00377 \cdot X_3 + 1.043 \cdot X_4 + 249.4 \cdot X_5 + 29.27 \cdot X_6 \]

Όπου:

  • \(Y\) είναι η εξαρτημένη μεταβλητή,
  • \(X_1, X_2, ..., X_6\) είναι οι ανεξάρτητες μεταβλητές,
  • οι αριθμοί μπροστά από κάθε \(X\) είναι οι εκτιμηθέντες συντελεστές της γραμμικής συνάρτησης.

Η γραμμική αυτή συνάρτηση περιγράφει την αναμενόμενη τιμή της εξαρτημένης μεταβλητής Y για δεδομένες τιμές των ανεξαρτήτων μεταβλητών X1, X2, …, X6.

Έλεγχος Αποτελεσμάτων

# Predict for the test set
preds <- predict(model, newdata = test_data[, -8]) # exclude the Y column

# Get the Predicted value
true_y <- test_data$Y

# Calculate metrics
SSE_test <- sum((true_y - preds)^2)  # Error sum of squares
SSR_test <- sum((preds - mean(true_y))^2)  # Regression sum of squares
SST_test <- sum((true_y - mean(true_y))^2)  # Total sum of squares

# In case the mean in true y value
if (SST_test == 0) {
  R2_test <- NA
} else {
  R2_test <- 1 - SSE_test / SST_test
}

test_data$predicted <- preds

# Plot predicted graph, values should fall close to the red line
ggplot(test_data, aes(x = predicted, y = Y)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  geom_abline(intercept = 0, slope = 1, color = "red", linetype = "dashed") +
  labs(x = "Predicted", y = "Actual", title = "Actual vs Predicted on Test set")

## Results for the Test set:
## SSE:  16988.9021994884
## SSR:  13550.266204674
## SST:  32939.66608
## 
## R2:   0.484241820842149

Όπως παρατηρούμε, υπάρχει σημαντική διαφορά μεταξύ του train set και του test set στις μετρικές απόδοσης. Το train set απο μόνο του δεν αποτελεί σημαντικός παράγοντας μέτρησης της απόδοσης. Για αυτόν τον λόγο, χρησιμοποιείται το test set που εκτελείται το μοντέλο σε νέα δεδομένα που μπορούν να αναπαραστήσουν μια κατάσταση πραγματικού προβλήματος.

Επιπλέον, οι τιμές που προκύπτουν αντανακλούν τα αποτελέσματα των “πιο” αλγοριθμικών και “μαθηματικών” διαδικασιών που εκτελέστηκαν παραπάνω.

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

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

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