Στα πλαίσια της εργασίας 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 περιλαμβάνει:
Νο: Ο αύξων αριθμός (ID)
X1.transaction.date: Ημερομηνία πώλησης (σε δεκαδική μορφή). Οι πωλήσεις αφορούν τα έτη 2013 έως 2014.
X2.house.age: Ηλικία του σπιτιού. Το εύρος είναι από 0 (ολοκαίνουργιο) έως 43.8 έτη.
X3.distance.to.the.nearest.MRT.station: Απόσταση από το μετρό. Είναι μια πολύ κρίσιμη μεταβλητή, με ελάχιστη απόσταση 23 μέτρα και μέγιστη 6.488 μέτρα.
X4.number.of.convenience.stores: Πλήθος κοντινών καταστημάτων. Κυμαίνεται από 0 έως 10 καταστήματα.
X5.latitude & X6.longitude: Γεωγραφικές συντεταγμένες (Πλάτος και Μήκος).
Y.house.price.of.unit.area: Η τιμή μονάδας (εξαρτημένη μεταβλητή). Οι τιμές ξεκινούν από 7.6 και φτάνουν έως 117.5.
Προκειμένου να κατανοήσουμε πώς οι παραπάνω μεταβλητές επηρεάζουν την τιμή, δημιουργούμε τα ακόλουθα διαγράμματα:
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 καταστήματα, η συνολική εικόνα ενισχύει την υπόθεση ότι η αστική ανάπτυξη και η εμπορική δραστηριότητα μιας γειτονιάς είναι άρρηκτα συνδεδεμένες με την αξία του ακινήτου.
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) προς το κέντρο, ενώ τείνουν να μειώνονται ξανά στις πολύ ανατολικές παρυφές του δείγματος. Αντίστοιχα, στο γεωγραφικό πλάτος, τα ακίνητα στα άκρα (πολύ νότια ή πολύ βόρεια) εμφανίζουν κυρίως χαμηλότερες τιμές, με τη “θερμή” ζώνη των ακριβών ακινήτων να εντοπίζεται σε ενδιάμεσο επίπεδο.
Τέλος, είναι αξιοσημείωτο ότι ακόμα και εντός της περιοχής υψηλής πυκνότητας, παρατηρείται σημαντική μεταβλητότητα στις τιμές. Η συνύπαρξη σημείων με διαφορετικές αποχρώσεις (π.χ. μωβ δίπλα σε κόκκινα) στις ίδιες περίπου συντεταγμένες υποδηλώνει ότι, ενώ η γεωγραφική θέση θέτει τη βάση της αξίας, επιπλέον ποιοτικά χαρακτηριστικά έρχονται να διαφοροποιήσουν την τελική τιμή. Συμπερασματικά, η αγορά ακινήτων εμφανίζεται έντονα γεωγραφικά εξαρτημένη, με τις τιμές να κλιμακώνονται γύρω από συγκεκριμένους θύλακες υψηλής ζήτησης και όχι με μια τυχαία ή απλοϊκή γραμμική κατανομή.
Στην παρούσα εργασία η επιλογή των μεταβλητών έγινε με βάση την μέθοδο πρόσθεσης μεταβλητών.
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\).
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, κάτι που δείχνει μεγαλύτερη ακρίβεια στις προβλέψεις.
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.
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).
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 <- 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.
Τα αποτελέσματα είναι εξαιρετικά ενθαρρυντικά για την αξιοπιστία του μοντέλου:
\(R^2\) (0.7102): Ο συντελεστής προσδιορισμού στα νέα δεδομένα ανέρχεται στο 71%. Αυτό σημαίνει ότι το μοντέλο εξηγεί ένα πολύ μεγάλο μέρος της διακύμανσης των τιμών, ακόμα και σε ακίνητα που δεν είχε “δει” ποτέ πριν. Η τιμή αυτή είναι σημαντικά υψηλότερη από το \(R^2\) του δείγματος εκπαίδευσης (52.7%), γεγονός που υποδηλώνει ότι το μοντέλο έχει συλλάβει με επιτυχία τις γενικές τάσεις της αγοράς.
RMSE (7.47): Το μέσο σφάλμα πρόβλεψης διαμορφώθηκε στις 7.47 μονάδες. Είναι αξιοσημείωτο ότι το σφάλμα αυτό είναι μικρότερο από το τυπικό σφάλμα του δείγματος εκπαίδευσης (9.32).
Η ανάλυση επιβεβαιώνει ότι το μοντέλο είναι αρκετά στιβαρό. Δεν παρουσιάζει καμία ένδειξη 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), επιτυγχάνοντας:
Το τελικό αυτό μοντέλο αποτελεί ένα αξιόπιστο εργαλείο για εκτιμητές ακινήτων και επενδυτές. Επιτρέπει την αντικειμενική κοστολόγηση ενός ακινήτου με βάση τα γεωγραφικά και δομικά του χαρακτηριστικά, βοηθώντας στον εντοπισμό ευκαιριών ή υπερτιμημένων ακινήτων στην αγορά.