Περιγραφή dataset

Στα πλαίσια της εργασίας 005 για την Γραμμική παλινδρόμηση χρησιμοποιήθηκε το dataset Real Estate price prediction από το Kaggle (https://www.kaggle.com/datasets/quantbruce/real-estate-price-prediction).

library(ggplot2)
data <- read.csv("Real estate.csv")

cat("Το dataset έχει", nrow(data), "γραμμές και", ncol(data), "στήλες.")
## Το dataset έχει 414 γραμμές και 8 στήλες.

Όπως φαίνεται το dataset έχει 414 γραμμές και 8 στήλες.

Στα πλαίσια όμως της γραμμικής παλινδρόμησης πρέπει το dataset να χωριστεί σε train(80%) και test (20%):

set.seed(123)

# Δημιουργία τυχαίων δεικτών για το 80% των δεδομένων
sample_size <- floor(0.80 * nrow(data))
train_indices <- sample(seq_len(nrow(data)), size = sample_size)

# Χωρισμός σε Train και Test
train_data <- data[train_indices, ]
test_data <- data[-train_indices, ]

cat("Το train dataset έχει", nrow(train_data), "γραμμές και", ncol(train_data), "στήλες.")
## Το train dataset έχει 331 γραμμές και 8 στήλες.

Το νέο αυτό dataset, με τις πλέον 331 εγγραφές, έχει:

print(summary(train_data))
##        No        X1.transaction.date  X2.house.age  
##  Min.   :  2.0   Min.   :2013        Min.   : 0.00  
##  1st Qu.:112.5   1st Qu.:2013        1st Qu.:10.05  
##  Median :221.0   Median :2013        Median :16.20  
##  Mean   :213.9   Mean   :2013        Mean   :17.95  
##  3rd Qu.:312.5   3rd Qu.:2013        3rd Qu.:28.50  
##  Max.   :413.0   Max.   :2014        Max.   :43.80  
##  X3.distance.to.the.nearest.MRT.station X4.number.of.convenience.stores
##  Min.   :  23.38                        Min.   : 0.00                  
##  1st Qu.: 291.16                        1st Qu.: 1.00                  
##  Median : 519.46                        Median : 4.00                  
##  Mean   :1132.39                        Mean   : 3.97                  
##  3rd Qu.:1557.04                        3rd Qu.: 6.00                  
##  Max.   :6488.02                        Max.   :10.00                  
##   X5.latitude     X6.longitude   Y.house.price.of.unit.area
##  Min.   :24.93   Min.   :121.5   Min.   :  7.60            
##  1st Qu.:24.96   1st Qu.:121.5   1st Qu.: 27.00            
##  Median :24.97   Median :121.5   Median : 38.10            
##  Mean   :24.97   Mean   :121.5   Mean   : 37.34            
##  3rd Qu.:24.98   3rd Qu.:121.5   3rd Qu.: 45.60            
##  Max.   :25.01   Max.   :121.6   Max.   :117.50

Πιο αναλυτικά το dataset περιλαμβάνει:

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

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

Α. Ιστόγραμμα κατανομής τιμής

print(ggplot(train_data, aes(x = Y.house.price.of.unit.area)) +
        geom_histogram(bins = 30, fill = "darkred", color = "white") +
        labs(title = "Κατανομή Τιμών Σπιτιών (Train Set)",
             x = "Τιμή ανά μονάδα επιφάνειας",
             y = "Συχνότητα") +
        theme_minimal())

Το ιστόγραμμα παρουσιάζει τη συχνότητα των τιμών των ακινήτων ανά μονάδα επιφάνειας (μεταβλητή Y) στο dataset μα. Παρατηρούμε ότι οι περισσότερες τιμές συγκεντρώνονται στην περιοχή μεταξύ 30 και 50, η οποία αποτελεί τον “πυρήνα” της αγοράς για τη συγκεκριμένη περιοχή. Η κατανομή δεν είναι απόλυτα συμμετρική, καθώς παρουσιάζει μια έντονη δεξιά ασυμμετρία. Αυτό σημαίνει ότι ενώ η πλειοψηφία των σπιτιών έχει μέτριες τιμές, υπάρχει ένας μικρός αριθμός ακινήτων με εξαιρετικά υψηλές τιμές (outliers), που φτάνουν ή και ξεπερνούν το 80, με αποκορύφωμα μια ακραία τιμή κοντά στο 120. Αυτές οι ακραίες τιμές υποδηλώνουν ότι στο δείγμα μας υπάρχουν κάποια “luxury” ακίνητα που αποκλίνουν σημαντικά από το μέσο όρο.

Β. Τιμή σε σχέση με την απόσταση από το μετρό

print(ggplot(train_data, aes(x = X3.distance.to.the.nearest.MRT.station, 
                       y = Y.house.price.of.unit.area)) +
  geom_point(alpha = 0.5, color = "darkred") +
  labs(title = "Σχέση Τιμής και Απόστασης από το Μετρό",
       x = "Απόσταση από Μετρό (m)",
       y = "Τιμή") +
  theme_minimal())

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

Η μορφή της κατανομής των σημείων υποδεικνύει ότι η σχέση αυτή δεν είναι αυστηρά γραμμική. Παρατηρούμε ότι οι τιμές είναι εξαιρετικά υψηλές και παρουσιάζουν μεγάλη διακύμανση όταν η απόσταση από το μετρό είναι πολύ μικρή, δηλαδή κάτω από τα 500 μέτρα. Μετά το όριο των 2.000 μέτρων περίπου, η καμπύλη των τιμών φαίνεται να “επιπεδώνεται” σε χαμηλά επίπεδα, γεγονός που υποδηλώνει ότι μετά από μια συγκεκριμένη απόσταση, η περαιτέρω απομάκρυνση από το μετρό παύει να επηρεάζει τόσο δραματικά την τιμή, καθώς το ακίνητο θεωρείται πλέον απομακρυσμένο από το κέντρο της τοπικής αγοράς.

Επιπλέον, η πυκνότητα των δεδομένων στο αριστερό τμήμα του γραφήματος αναδεικνύει ότι η συντριπτική πλειοψηφία των συναλλαγών αφορά ακίνητα που βρίσκονται σε ακτίνα μικρότερη των 1.000 μέτρων από σταθμό. Αυτό μαρτυρά μια αγορά ακινήτων έντονα συγκεντρωμένη γύρω από τους συγκοινωνιακούς κόμβους. Παρόλα αυτά, η ύπαρξη ακραίων τιμών (outliers) με τιμές άνω του 70 ή 80 σε πολύ μικρές αποστάσεις, υποδηλώνει ότι ενώ η τοποθεσία είναι ο βασικός άξονας, υπάρχουν και άλλοι παράγοντες που μπορούν να εκτοξεύσουν την τιμή ενός ακινήτου ακόμη υψηλότερα από τον μέσο όρο της περιοχής.

Γ. Τιμή σε σχέση με την ηλικία του σπιτιού

print(ggplot(train_data, aes(x = X2.house.age, 
                       y = Y.house.price.of.unit.area)) +
  geom_point(alpha = 0.5, color = "darkred") +
  labs(title = "Σχέση Τιμής και Ηλικίας Σπιτιού",
       x = "Ηλικία (έτη)",
       y = "Τιμή") +
  theme_minimal())

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

Ένα ιδιαίτερα ενδιαφέρον εύρημα είναι η “καμπύλη” που σχηματίζεται στην κατανομή των δεδομένων. Βλέπουμε υψηλές τιμές στα πολύ καινούργια σπίτια (0-5 έτη), μια αισθητή κάμψη στις τιμές των σπιτιών μέσης ηλικίας (περίπου 15-25 έτη) και στη συνέχεια μια εκ νέου άνοδο ή σταθεροποίηση για ορισμένα παλαιότερα ακίνητα (άνω των 30 ετών). Αυτό το φαινόμενο μπορεί να οφείλεται σε ανακαινίσεις παλαιών ακινήτων ή στο γεγονός ότι τα παλαιότερα σπίτια βρίσκονται συχνά σε προνομιακές, ιστορικές ή ήδη ανεπτυγμένες τοποθεσίες που διατηρούν την αξία τους παρά την παλαιότητα της κατασκευής.

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

Δ. Τιμή σε σχέση με τα κοντινά καταστήματα

print(ggplot(train_data, aes(x = as.factor(X4.number.of.convenience.stores), 
                       y = Y.house.price.of.unit.area, 
                       fill = as.factor(X4.number.of.convenience.stores))) +
  geom_boxplot(show.legend = FALSE) +
  labs(title = "Τιμή ανάλογα με τον Αριθμό Κοντινών Καταστημάτων",
       x = "Αριθμός Καταστημάτων (Convenience Stores)",
       y = "Τιμή") +
  theme_minimal() +
  scale_fill_brewer(palette = "Set3"))

Στο παραπάνω διάγραμμα εξετάζεται η επίδραση του αριθμού καταστημάτων σε κοντινή απόσταση από το ακίνητο (μεταβλητή X4) στην αξία των ακινήτων (μεταβλητή Υ). Παρατηρείται μια σαφής θετική συσχέτιση, καθώς η άνοδος του αριθμού των διαθέσιμων καταστημάτων στην περιοχή συνεπάγεται, σε γενικές γραμμές, και την αύξηση της τιμής μονάδας του ακινήτου. Αυτό υποδηλώνει ότι οι αγοραστές εκτιμούν ιδιαίτερα την ευκολία πρόσβασης σε βασικές υπηρεσίες, γεγονός που προσδίδει επιπλέον εμπορική αξία στα ακίνητα που βρίσκονται σε “ζωντανές” και αναπτυγμένες γειτονιές.

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

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

E. Γεωγραφικό Διάγραμμα

print(ggplot(train_data, aes(x = X6.longitude, y = X5.latitude, color = Y.house.price.of.unit.area)) +
  geom_point(size = 3, alpha = 0.7) +
  scale_color_gradient(low = "blue", high = "red") +
  labs(title = "Γεωγραφική Κατανομή Τιμών Ακινήτων",
       x = "Γεωγραφικό Μήκος (Longitude)",
       y = "Γεωγραφικό Πλάτος (Latitude)",
       color = "Τιμή") +
  theme_minimal())

Στο συγκεκριμένο διάγραμμα εξετάζεται η χωρική διάσταση των τιμών των ακινήτων σε σχέση με τις γεωγραφικές συντεταγμένες του γεωγραφικού πλάτους (Χ5) και του γεωγραφικού μήκους (Χ6). Η οπτικοποίηση των δεδομένων αποκαλύπτει ότι η τοποθεσία αποτελεί καθοριστικό παράγοντα για τη διαμόρφωση της αξίας στην αγορά, αναδεικνύοντας σαφή πρότυπα χωρικής εξάρτησης. Αντί για μια απλή, συνεχή γραμμική τάση, το διάγραμμα φανερώνει την ύπαρξη ενός κεντρικού γεωγραφικού πυρήνα υψηλής αξίας, όπου οι υψηλότερες τιμές (έντονο ροζ και κόκκινο χρώμα) εντοπίζονται συγκεντρωμένες σε ένα συγκεκριμένο εύρος συντεταγμένων, περίπου μεταξύ 121.53 και 121.55 για το μήκος και 24.97 έως 24.98 για το πλάτος.

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

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

Γραμμική παλινδρόμηση- Μέρος Α: Δημιουργία (και αξιολόγηση) μοντέλου παλινδρόμησης

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

Βήμα 1: Απλή γραμμική παλινδρόμηση

model1 <- lm(Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station, data = train_data)
print (summary(model1))
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station, 
##     data = train_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -34.918  -6.006  -1.325   4.710  73.996 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            45.2730337  0.7477775   60.54   <2e-16
## X3.distance.to.the.nearest.MRT.station -0.0070044  0.0004379  -15.99   <2e-16
##                                           
## (Intercept)                            ***
## X3.distance.to.the.nearest.MRT.station ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.18 on 329 degrees of freedom
## Multiple R-squared:  0.4375, Adjusted R-squared:  0.4358 
## F-statistic: 255.9 on 1 and 329 DF,  p-value: < 2.2e-16
print(ggplot(train_data, aes(x = X3.distance.to.the.nearest.MRT.station, 
                       y = Y.house.price.of.unit.area)) +
  geom_point(alpha = 0.5, color = "darkred") +
  geom_abline(aes(intercept = coef(model1)[1], 
slope = coef(model1)[2]), colour = "red")+
  labs(title = "Σχέση Τιμής και Απόστασης από το Μετρό",
       x = "Απόσταση από Μετρό (m)",
       y = "Τιμή") +
  theme_minimal())

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

Πρατηρώντας τους κωδικούς σημαντικότητας, παρατηρούμε ότι η μεταβλητή Χ3 εμφανίζει *** γεγονός που την καθιστά στατιστικά πάρα πολύ σημαντική.

Με βάση τις εκτιμήσεις των συντελεστών, η μαθηματική συνάρτηση που προκύπτει για την πρόβλεψη της τιμής είναι: \(Y = 45.273 - 0.007 *\cdot* X3\).

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

Ο συντελεστής προσδιορισμού \(R^2\) ανέρχεται σε 0.4375, υποδηλώνοντας ότι μόνο η απόσταση από το μετρό είναι ικανή να ερμηνεύσει το 43.7% της συνολικής διακύμανσης των τιμών. Παρά τη στατιστική σημαντικότητα, το υπολειπόμενο σφάλμα (Residual Standard Error) παραμένει στις 10.18 μονάδες, γεγονός που μας οδηγεί στο επόμενο βήμα: την προσθήκη επιπλέον μεταβλητών για τη βελτίωση της ακρίβειας και την αύξηση του Adjusted \(R^2\).

Βήμα 2: Προσθήκη δευτερης μεταβλητής - Απόσταση από κοντινά μαγαζιά

model2 <- lm(Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station + 
                                         X4.number.of.convenience.stores, 
             data = train_data)
print(summary(model2))
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station + 
##     X4.number.of.convenience.stores, data = train_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -35.933  -5.927  -1.736   4.279  78.125 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            39.8124106  1.4869724  26.774  < 2e-16
## X3.distance.to.the.nearest.MRT.station -0.0056554  0.0005338 -10.595  < 2e-16
## X4.number.of.convenience.stores         0.9907559  0.2350998   4.214 3.24e-05
##                                           
## (Intercept)                            ***
## X3.distance.to.the.nearest.MRT.station ***
## X4.number.of.convenience.stores        ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.933 on 328 degrees of freedom
## Multiple R-squared:  0.4664, Adjusted R-squared:  0.4631 
## F-statistic: 143.3 on 2 and 328 DF,  p-value: < 2.2e-16

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

Με βάση τις νέες εκτιμήσεις, η μαθηματική συνάρτηση του μοντέλου είναι: \[Y = 39.812 - 0.0057 \cdot X_3 + 0.991 \cdot X_4\]

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

  • Κρατώντας σταθερό τον αριθμό των καταστημάτων, για κάθε 1 μέτρο επιπλέον απόστασης από τον πλησιέστερο σταθμό MRT, η τιμή βάσης των 39.812 μονάδων μειώνεται κατά μέσο όρο κατά 0.0057. Πρακτικά, αν ένα σπίτι απέχει 100 μέτρα από το μετρό, η αξία του θα υποχωρήσει κατά 0.57 μονάδες σε σχέση με την αρχική σταθερά.

  • Κρατώντας σταθερή την απόσταση από το μετρό, η τιμή ενισχύεται κατά 0.991 μονάδες για κάθε επιπλέον κατάστημα που υπάρχει στην περιοχή. Έτσι, αν ένα ακίνητο βρίσκεται πάνω στο μετρό αλλά διαθέτει 5 καταστήματα γύρω του, η τιμή του θα αυξηθεί κατά περίπου 5 μονάδες πάνω από τη σταθερή βάση των 39.812.

Η προσθήκη της μεταβλητής αυτής κρίνεται επιτυχημένη γιατί:

α. Το Adjusted \(R^2\) αυξήθηκε από 0.4358 σε 0.4631, γεγονός που σημαίνει ότι το μοντέλο ερμηνεύει πλέον το 46.3% της διακύμανσης των τιμών.

β. Το Residual Standard Error μειώθηκε από 10.18 σε 9.93, κάτι που δείχνει μεγαλύτερη ακρίβεια στις προβλέψεις.

Βήμα 3: Προσθήκη τρίτης μεταβλητής - Χρονολογία σπιτιού

model3 <- lm(Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station + 
                                         X4.number.of.convenience.stores + 
                                         X2.house.age, 
             data = train_data)
print(summary(model3))
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station + 
##     X4.number.of.convenience.stores + X2.house.age, data = train_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -36.707  -5.082  -1.807   4.498  77.131 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            42.8943688  1.6061145  26.707  < 2e-16
## X3.distance.to.the.nearest.MRT.station -0.0054934  0.0005206 -10.552  < 2e-16
## X4.number.of.convenience.stores         1.1086047  0.2302823   4.814 2.26e-06
## X2.house.age                           -0.2080157  0.0470856  -4.418 1.36e-05
##                                           
## (Intercept)                            ***
## X3.distance.to.the.nearest.MRT.station ***
## X4.number.of.convenience.stores        ***
## X2.house.age                           ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.664 on 327 degrees of freedom
## Multiple R-squared:  0.4964, Adjusted R-squared:  0.4918 
## F-statistic: 107.4 on 3 and 327 DF,  p-value: < 2.2e-16

Στο τρίτο στάδιο έγινε η προσθήκη της μεταβλητής Χ2 που αφορά την ηλικία του σπιτιού. Η προσθήκη αυτή είναι πολή σημαντική (***) καθώς επιβεβαίωσε ότι η παλαιότητα της κατασκευής παίζει καθοριστικό ρόλο στην αξία.

Με βάση τις νέες εκτιμήσεις, η μαθηματική συνάρτηση του μοντέλου είναι: \(Y = 42.894 - 0.0055 \cdot X_3 + 1.109 \cdot X_4 - 0.208 \cdot X_2\)

Όπως φαίνεται, η θεωρητική τιμή εκκίνησης ενός καινουργιου ακινήτου (Χ2=0), που βρίσκεται δίπλα ακριβώς στο μετρό (Χ3=0) και δεν έχει καταστήματα κοντά (Χ4=0), ανέρχεται στις 42.894 μονάδες. Πάνω σε αυτή τη βάση, η τελική τιμή διαμορφώνεται ως εξής:

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

  • Κρατώντας σταθερό τον αριθμό των καταστημάτων και την ηλικία του σπιτιού, για κάθε 1 μέτρο επιπλέον απόστασης από τον πλησιέστερο σταθμό MRT, η τιμή βάσης των 42.894 μονάδων μειώνεται κατά μέσο όρο κατά 0.0055 (παραμένη σταθερή και αρνητική).

  • Κρατώντας σταθερή την απόσταση από το μετρό και την ηλικά του σπιτιού, η εμπορικότητα συνεχίζει να προσφέρει υπεραξία, με κάθε νέο κατάστημα να ενισχύει την τιμή κατά 1.109 μονάδες (παρατηρούμε μάλιστα ότι η σημασία των καταστημάτων αυξήθηκε ελαφρώς σε αυτό το μοντέλο).

Η προσθήκη και την τρίτης αυτής μεταβλητής κρίνεται επιτυχημένη γιατί το μοντέλο έγινε πιο δίκαιο και ακριβές:

α. Το Adjusted \(R^2\) αυξήθηκε στο 49.18%, γεγονός που αποδεικνύει ότι η ηλικία του ακινήτου είναι απαραίτητη πληροφορία

β. Το Residual Standard Error μειώθηκε από 9.93 σε 9.664.

Βήμα 4: Προσθήκη τέταρτης μεταβλητής - Γεωγραφικό πλάτος

model4 <- lm(Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station + 
                                         X4.number.of.convenience.stores + 
                                         X2.house.age + 
                                         X5.latitude, 
             data = train_data)
print(summary(model4))
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station + 
##     X4.number.of.convenience.stores + X2.house.age + X5.latitude, 
##     data = train_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -33.772  -5.114  -1.573   3.990  76.230 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            -6.402e+03  1.278e+03  -5.010 8.95e-07
## X3.distance.to.the.nearest.MRT.station -4.203e-03  5.636e-04  -7.456 8.12e-13
## X4.number.of.convenience.stores         9.879e-01  2.234e-01   4.422 1.33e-05
## X2.house.age                           -2.307e-01  4.564e-02  -5.055 7.20e-07
## X5.latitude                             2.581e+02  5.117e+01   5.043 7.61e-07
##                                           
## (Intercept)                            ***
## X3.distance.to.the.nearest.MRT.station ***
## X4.number.of.convenience.stores        ***
## X2.house.age                           ***
## X5.latitude                            ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.322 on 326 degrees of freedom
## Multiple R-squared:  0.5329, Adjusted R-squared:  0.5271 
## F-statistic: 92.97 on 4 and 326 DF,  p-value: < 2.2e-16

Στο τέταρτο στάδιο, έγινε προσθήκη της μεταβλητής X5 (Γεωγραφικό πλάτος). Η στατιστική σημαντικότητα και η αύξηση του Adjusted \(R^2\) στο 52.7% επιβεβαιώνουν ότι η χωρική θέση παίζει αυτόνομο και κρίσιμο ρόλο στην αξία των ακινήτων.

Η νέα μαθηματική συνάρτηση διαμορφώνεται ως εξής: \(Y = -6402 - 0.0042 \cdot X_3 + 0.988 \cdot X_4 - 0.231 \cdot X_2 + 258.1 \cdot X_5\)

  • Γεωγραφικό Πλάτος (X5): Ο συντελεστής 258.1 είναι ο πιο εντυπωσιακός. Σημαίνει ότι για κάθε 0.01 μοίρα που μετακινούμαστε προς τα βόρεια (αύξηση του πλάτους), η τιμή του ακινήτου αυξάνεται κατά περίπου 2.58 μονάδες, κρατώντας όλα τα άλλα σταθερά. Αυτό υποδεικνύει μια ισχυρή προτιμησιακή τάση για το βόρειο τμήμα της περιοχής Sindian.

  • Απόσταση από MRT (X3): Παρατηρούμε ότι ο συντελεστής της απόστασης μειώθηκε ελαφρώς (από -0.0055 σε -0.0042). Αυτό συμβαίνει γιατί ένα μέρος της “αξίας” που δίναμε στο μετρό, τώρα το μοντέλο το αποδίδει σωστά στη βόρεια τοποθεσία.

  • Ηλικία (X2) και Καταστήματα (X4): Οι μεταβλητές αυτές παραμένουν σταθεροί πυλώνες του μοντέλου. Κάθε έτος παλαιότητας αφαιρεί 0.23 μονάδες από την αξία, ενώ κάθε νέο κατάστημα προσθέτει σχεδόν 1 μονάδα (0.988).

  • Σταθερά (Intercept = -6402): Εδώ η σταθερά έγινε ένας πολύ μεγάλος αρνητικός αριθμός. Αυτό είναι φυσιολογικό στη γεωγραφική παλινδρόμηση. Επειδή το πλάτος (X5) παίρνει τιμές γύρω στο 24.9, η σταθερά πρέπει να είναι πολύ μικρή για να “ισορροπήσει” την εξίσωση. Σε αυτό το μοντέλο, η σταθερά δεν έχει φυσική ερμηνεία (δεν υπάρχει πλάτος 0), αλλά χρησιμεύει στον μαθηματικό υπολογισμό.

Η προσθήκη του πλάτους βελτίωσε σημαντικά την ακρίβεια του μοντέλου, μειώνοντας το Residual Standard Error στα 9.32. Πλέον εξηγείται πάνω από το μισό της μεταβλητότητας των τιμών, διαθέτοντας ένα μοντέλο που συνδυάζει δομικά χαρακτηριστικά (X2), τοπικές υποδομές (X3, X4) και χωρική τάση (X5).

Βήμα 5: Προσθήκη πέμπτης μεταβλητής - Γεωγραφικό μήκος

model5 <- lm(Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station + 
                                         X4.number.of.convenience.stores + 
                                         X2.house.age + 
                                         X5.latitude + 
                                         X6.longitude, 
             data = train_data)
print(summary(model5))
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X3.distance.to.the.nearest.MRT.station + 
##     X4.number.of.convenience.stores + X2.house.age + X5.latitude + 
##     X6.longitude, data = train_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -33.772  -5.115  -1.573   3.991  76.230 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            -6.410e+03  6.842e+03  -0.937    0.350
## X3.distance.to.the.nearest.MRT.station -4.202e-03  8.149e-04  -5.156 4.38e-07
## X4.number.of.convenience.stores         9.880e-01  2.245e-01   4.401 1.46e-05
## X2.house.age                           -2.307e-01  4.576e-02  -5.041 7.70e-07
## X5.latitude                             2.581e+02  5.172e+01   4.990 9.87e-07
## X6.longitude                            6.583e-02  5.387e+01   0.001    0.999
##                                           
## (Intercept)                               
## X3.distance.to.the.nearest.MRT.station ***
## X4.number.of.convenience.stores        ***
## X2.house.age                           ***
## X5.latitude                            ***
## X6.longitude                              
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.337 on 325 degrees of freedom
## Multiple R-squared:  0.5329, Adjusted R-squared:  0.5257 
## F-statistic: 74.15 on 5 and 325 DF,  p-value: < 2.2e-16

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

  • Η μεταβλητή Χ6 δεν έχει κανένα αστέρι άρα είναι εντελώς ασήμαντη για την πρόβλεψη όταν όλες οι άλλες μεταβλητές είναι παρούσες

  • Ο Adjusted \(R^2\) μειώθηκε από 0.5271 σε 0.5257 που οφείλεται στην προσθήκη μιας μεταβλητής που δεν προσφέρει καμία αξία

Με βάση τα παραπάνω, απορρίπτουμε το model5 και επιστρέφουμε στο model4, το οποίο είναι το πιο βέλτιστο μοντέλο

Συμπέρασμα

Μοντέλο Μεταβλητές Adjusted R² Residual Error
Model 1 X3 0.4358 10.18
Model 2 X3 + X4 0.4631 9.933
Model 3 X3 + X4 + X2 0.4918 9.664
Model 4 X3 + X4 + X2 + X5 0.5271 9.322
Model 5 X3 + X4 + X2 + X5 + X6 0.5257 9.337

Στον παραπάνω πίνακα συνοψίζεται η πορεία της χειροκίνητης επιλογής μεταβλητών.

Παρατηρούμε ότι από το Model 1 έως το Model 4, ο Adjusted \(R^2\) παρουσιάζει συνεχή άνοδο, ενώ το Residual Error μειώνεται σταθερά. Ωστόσο, στο Model 5 η τάση αυτή αναστρέφεται: το Adjusted \(R^2\) σημειώνει πτώση (από 0.5271 σε 0.5257) και το σφάλμα αυξάνεται ελαφρώς, υποδεικνύοντας ότι η μεταβλητή X6 (γεωγραφικό μήκος) είναι πλεονασματική και δεν προσφέρει επιπλέον πληροφορία.

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

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

Γραμμική παλινδρόμηση- Μέρος Β: Πρόβλεψη (Prediction)

prediction <- predict(model4, newdata = test_data)
predictions <- predict(model4, newdata = test_data)

# 2. Υπολογισμός SSE και SST για το Out-of-sample R-squared
SSE <- sum((predictions - test_data$Y.house.price.of.unit.area)^2)
SST <- sum((mean(train_data$Y.house.price.of.unit.area) - test_data$Y.house.price.of.unit.area)^2)

# 3. Υπολογισμός R2 (Out-of-sample)
R2_test <- 1 - SSE/SST

# 4. Υπολογισμός RMSE (Root Mean Square Error)
RMSE_test <- sqrt(SSE/nrow(test_data))

print(R2_test)
## [1] 0.7101738
print(RMSE_test)
## [1] 7.470462

Μετά την επιλογή του Model 4 ως του βέλτιστου, έγινε επικύρωση της προγνωστικής του ικανότητας χρησιμοποιώντας το Test Set.

Τα αποτελέσματα είναι εξαιρετικά ενθαρρυντικά για την αξιοπιστία του μοντέλου:

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

Γραμμική παλινδρόμηση- Μέρος Γ: Παράδειγμα και Συμπέρασμα

Α. Παράδειγμα

Έστω ότι είναι 2 σπίτια στην ίδια απόσταση από το μετρό (500 μέτρα) και στην ίδια γεωγραφική περιοχή (24). Το Σπίτι Α είναι καινούριο (νεόδμητο, 0 ετών) και ήσυχο (2 καταστήματα κοντά), ενώ το Σπίτι Β είναι 30 ετών και στην γειτονιά έχει 10 μαγαζιά.

  • Υπολογισμός Τιμής για το Σπίτι Α: \(Y_A = -6402 - (0.0042 \cdot 500) + (0.988 \cdot 2) - (0.231 \cdot 0) + (258.1 \cdot 24.97)\) \(Υ_Α = \mathbf{42.63}\)

  • Υπολογισμός Τιμής για το Σπίτι Β: \(Y_Β = -6402 - (0.0042 \cdot 500) + (0.988 \cdot 10) - (0.231 \cdot 30) + (258.1 \cdot 24.97)\) \(Y_B = \mathbf{43.61}\)

Στο παραπάνω παράδειγμα παρατηρούμε κάτι εξαιρετικά ενδιαφέρον:

Το Σπίτι Β, παρόλο που είναι 30 ετών, είναι ακριβότερο από το νεόδμητο Σπίτι Α κατά περίπου 3 μονάδες. Αυτό συμβαίνει γιατί η ‘δύναμη’ της εμπορικότητας της γειτονιάς (10 καταστήματα) προσέφερε μια υπεραξία +9.88 μονάδων, η οποία υπερκάλυψε τη φθορά της παλαιότητας (-6.93 μονάδες).

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

Β. Συμπέρασμα

Η παρούσα ανάλυση εξέτασε τους προσδιοριστικούς παράγοντες των τιμών ακινήτων σε μια περιοχή, χρησιμοποιώντας τη μέθοδο της σταδιακής προσθήκης μεταβλητών (Forward Selection).

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

Τα βασικά συμπεράσματα είναι:

  • Η Τοποθεσία είναι Καθοριστική: Η απόσταση από το μετρό (\(X_3\)) και το γεωγραφικό πλάτος (\(X_5\)) αποτελούν τους ισχυρότερους δείκτες αξίας. Η αγορά παρουσιάζει μια σαφή προτίμηση για τα βόρεια τμήματα της περιοχής και “τιμωρεί” την απόσταση από το μετρό.

  • Εμπορικότητα vs Παλαιότητα: Ο αριθμός των καταστημάτων (\(X_4\)) λειτουργεί ως ισχυρός πολλαπλασιαστής αξίας, ικανός σε πολλές περιπτώσεις να εξισορροπήσει τη φυσική φθορά που επιφέρει η ηλικία του ακινήτου (\(X_2\)).

  • Η ανάλυση έδειξε ότι το γεωγραφικό μήκος (\(X_6\)) δεν προσφέρει επιπλέον πληροφορία στο μοντέλο

Το επιλεγμένο μοντέλο επέδειξε εξαιρετική σταθερότητα κατά τη δοκιμή του σε νέα δεδομένα (Test Set), επιτυγχάνοντας:

  • \(R^2\) = 71%, γεγονός που υποδηλώνει ότι το μοντέλο ερμηνεύει το μεγαλύτερο μέρος της διακύμανσης των τιμών.
  • RMSE = 7.47, μια τιμή σφάλματος που είναι χαμηλότερη από το σφάλμα του δείγματος εκπαίδευσης, επιβεβαιώνοντας την αποφυγή της υπερπροσαρμογής (overfitting).

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