Εισαγωγή

Περιγραφή του Dataset

To Real Estate Price Prediction κοινοποιήθηκε στο Kaggle, ένα αποθετήριο βάσεων, συνόλων δεδομένων και θεωριών πεδίων. Το Dataset αποτελείται από συναλλαγές ακινήτων στην Ταϊβάν και έχει ως στόχο την πρόβλεψη των τιμών τους ανά τετραγωνικό μέτρο. Οι τιμές βασίζονται σε δεδομένα από τις 31 Αυγούστου 2012 έως και τις 2 Αυγούστου 2013.

Επιχειρηματική Αναλυτική

Η ανάλυση των δεδομένων του Dataset μπορεί να βοηθήσει στο data-driven decision-making (DDDM) στον κλάδο των ακινήτων. Ουσιαστικά συμβάλλει στην κατανόηση των παραγόντων που επηρεάζουν τις τιμές των ακινήτων, στην πρόβλεψη της αξίας τους και στη βελτιστοποίηση των επενδυτικών στρατηγικών.

Πιθανά Επιχειρηματικά Ερωτήματα

  • Ποιοι παράγοντες επηρεάζουν περισσότερο την τιμή των ακινήτων ανά τετραγωνικό μέτρο;
  • Μπορούμε να προβλέψουμε την τιμή ενός ακινήτου με βάση τα χαρακτηριστικά του;
  • Ποια είναι η καλύτερη περιοχή για επένδυση σε ακίνητα βάσει τιμής και υποδομών;

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

kable(stats, col.names = c("Μεταβλητή", "Περιγραφή", "Τύπος", "Εύρος", "Μονάδα Μέτρησης"), caption = "Αναλυτικός πίνακας με τα στοιχεία των μεταβλητών:")
Αναλυτικός πίνακας με τα στοιχεία των μεταβλητών:
Μεταβλητή Περιγραφή Τύπος Εύρος Μονάδα Μέτρησης
TransactionDate Ημερομηνία συναλλαγής Αριθμητική 2012-08-31 - 2013-08-02 -
HouseAge Ηλικία του ακινήτου Αριθμητική 0 - 43.8 Έτος
MRTdistance Απόσταση από τον κοντινότερο σταθμό μετρό Αριθμητική 23.38 - 6488.02 Meter(m)
NoConvinienceStores Πλήθος κοντινών καταστημάτων Αριθμητική 0 - 10 -
Latitude Γεωγραφικό πλάτος Αριθμητική 24.93207 - 25.01459 -
Longitude Γεωγραφικό μήκος Αριθμητική 121.47353 - 121.56627 -
SQMprice Τιμή ανά τετραγωνικό μέτρο Αριθμητική 7.6 - 117.5 Dollar($)

Περιγραφικά Στατιστικά

summary(realEstate)
##  TransactionDate         HouseAge       MRTdistance      NoConvinienceStores
##  Min.   :2012-08-31   Min.   : 0.000   Min.   :  23.38   Min.   : 0.000     
##  1st Qu.:2012-12-01   1st Qu.: 9.025   1st Qu.: 289.32   1st Qu.: 1.000     
##  Median :2013-03-03   Median :16.100   Median : 492.23   Median : 4.000     
##  Mean   :2013-02-23   Mean   :17.713   Mean   :1083.89   Mean   : 4.094     
##  3rd Qu.:2013-06-02   3rd Qu.:28.150   3rd Qu.:1454.28   3rd Qu.: 6.000     
##  Max.   :2013-08-02   Max.   :43.800   Max.   :6488.02   Max.   :10.000     
##     Latitude       Longitude        SQMprice     
##  Min.   :24.93   Min.   :121.5   Min.   :  7.60  
##  1st Qu.:24.96   1st Qu.:121.5   1st Qu.: 27.70  
##  Median :24.97   Median :121.5   Median : 38.45  
##  Mean   :24.97   Mean   :121.5   Mean   : 37.98  
##  3rd Qu.:24.98   3rd Qu.:121.5   3rd Qu.: 46.60  
##  Max.   :25.01   Max.   :121.6   Max.   :117.50

Διαγράμματα Συσχετίσεων

Γράφημα 1: Σχέση Τιμής ακινήτων ανά Τετραγωνικό Μέτρο και Απόστασης από την πλησιέστερη Στάση Μετρό

ggplot(realEstate, aes(MRTdistance, SQMprice)) +
  geom_point(color = "steelblue") +
  labs(title = "Τιμή ανά τ.μ. vs Απόσταση από σταθμό μετρό",
       x = "Απόσταση από σταθμό μετρό (m)",
       y = "Τιμή ανά τ.μ.($)") +
  theme_minimal()

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

Γράφημα 2: Σχέση Τιμής ακινήτων ανά Τετραγωνικό Μέτρο με βάση τον αριθμό των κοντινών Εμπορικών Καταστημάτων

ggplot(realEstate, aes(as.factor(NoConvinienceStores), SQMprice)) +
  geom_boxplot(fill = "tomato") +
  labs(title = "Κατανομή Τιμής ανά τ.μ. vs Αριθμός Καταστημάτων",
       x = "Αριθμός Convenience Stores",
       y = "Τιμή ανά τ.μ.($)") +
  theme_minimal()

Σχόλιο
Βλέπουμε ότι σε περιοχές με περισσότερα καταστήματα, η τιμή των ακινήτων τείνει να είναι υψηλότερη. Η ύπαρξη υποδομών εξυπηρέτησης φαίνεται πως παίζει σημαντικό ρόλο στη διαμόρφωση των τιμών.

Γράφημα 3: Κατανομή ηλικίας των σπιτιών

ggplot(realEstate, aes(HouseAge)) +
  geom_histogram(binwidth = 1, fill = "darkgreen", color = "white") +
  labs(title = "Κατανομή ηλικίας ακινήτων",
       x = "Ηλικία (σε έτη)",
       y = "Πλήθος") +
  theme_minimal()

Σχόλιο
Η πλειοψηφία των σπιτιών δείχνει πως είναι σχετικά νεόκτιστα (0-20 ετών), κάτι που μπορεί να επηρεάζει αυξητικά την τιμή τους. Υπάρχει μικρότερος αριθμός παλαιότερων ακινήτων.

Γράφημα 4: Αριθμός συναλλαγών ανά ημερομηνία

ggplot(realEstate, aes(as.factor(TransactionDate))) +
  geom_bar(fill = "purple") +
  labs(title = "Αριθμός συναλλαγών ανά ημερομηνία",
       x = "Ημερομηνία συναλλαγής",
       y = "Πλήθος συναλλαγών") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 50, hjust = 1))

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

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

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

Ο παρακάτω πίνακας δείχνει τους συντελεστές γραμμικής συσχέτισης (Pearson) μεταξύ των διαφόρων μεταβλητών. Όσο πιο κοντά είναι οι τιμές στο +1 ή -1, τόσο ισχυρότερη είναι η θετική ή η αρνητική γραμμική σχέση αντιστοίχως. Για την κατασκευή των μοντέλων, επιλέγουμε πρώτα τις μεταβλητές που εμφανίζουν τη μεγαλύτερη συσχέτιση (θετική ή αρνητική) με την εξαρτημένη μεταβλητή της ποιότητας (SQMprice), ταξινομώντας τις με φθίνουσα σειρά σύμφωνα με το μέγεθος της συσχέτισής τους.

#Αφαιρούμε την στήλη με την ημερομηνία της συναλλαγής
CorRealEstate <- realEstate[, -1]
cor_matrix <- cor(CorRealEstate)
knitr::kable(round(cor_matrix, 2), caption = "Πίνακας Συσχετίσεων Μεταβλητών")
Πίνακας Συσχετίσεων Μεταβλητών
HouseAge MRTdistance NoConvinienceStores Latitude Longitude SQMprice
HouseAge 1.00 0.03 0.05 0.05 -0.05 -0.21
MRTdistance 0.03 1.00 -0.60 -0.59 -0.81 -0.67
NoConvinienceStores 0.05 -0.60 1.00 0.44 0.45 0.57
Latitude 0.05 -0.59 0.44 1.00 0.41 0.55
Longitude -0.05 -0.81 0.45 0.41 1.00 0.52
SQMprice -0.21 -0.67 0.57 0.55 0.52 1.00

Σχόλια
Την ισχυρότερη αρνητική συσχέτιση με την SQMprice έχει η MRTdistance (r = -0.67)

Τις ισχυρότερες θετικές συσχετίσεις με την τιμή SQMprice έχουν οι εξής μεταβλητές:
- NoConvinienceStores (r = +0.57)
- Latitude (r = +0.55)
- Longitude (r = +0.52)

Η HouseAge έχει αδύναμη αρνητική συσχέτιση (-0.21) με την SQMprice και μπορεί να χρησιμοποιηθεί δευτερευόντως.

Μοντέλο 1 - Απόσταση από σταθμό μετρό

model1 <- lm(SQMprice ~ MRTdistance, data = realEstate)
summary(model1)
## 
## Call:
## lm(formula = SQMprice ~ MRTdistance, data = realEstate)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -35.396  -6.007  -1.195   4.831  73.483 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 45.8514271  0.6526105   70.26   <2e-16 ***
## MRTdistance -0.0072621  0.0003925  -18.50   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.07 on 412 degrees of freedom
## Multiple R-squared:  0.4538, Adjusted R-squared:  0.4524 
## F-statistic: 342.2 on 1 and 412 DF,  p-value: < 2.2e-16
ggplot(realEstate, aes(MRTdistance, SQMprice)) +
  geom_point() +
  geom_abline(intercept = coef(model1)[1], slope = coef(model1)[2], color = "red", linewidth = 1) +
  labs(title = "Γραμμική Παλινδρόμηση: Τιμή ανά τ.μ. ~ Απόσταση από σταθμό μετρό",
       x = "Απόσταση από σταθμό μετρό (m)", y = "Τιμή ανά τ.μ.($)")

Σχόλια
Όταν το ακίνητο βρίσκεται δίπλα σε σταθμό μετρό (απόσταση=0), τότε η εκτιμώμενη τιμή ανά τ.μ. είναι περίπου 45,85$. Για κάθε επιπλέον μέτρο απόστασης από τον σταθμό, η τιμή μειώνεται κατά 0,00726. Το μοντέλο εξηγεί περίπου το 45.4% της διακύμανσης της τιμής ανά τ.μ., μόνο με 1 μεταβλητή. Κατά μέσο όρο, οι πραγματικές τιμές διαφέρουν από τις προβλεπόμενες κατά περίπου 10 μονάδες.

Μοντέλο 2 - Πλήθος κοντινών καταστημάτων

model2 <- lm(SQMprice ~ NoConvinienceStores, data = realEstate)
summary(model2)
## 
## Call:
## lm(formula = SQMprice ~ NoConvinienceStores, data = realEstate)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -35.407  -7.341  -1.788   5.984  87.681 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          27.1811     0.9419   28.86   <2e-16 ***
## NoConvinienceStores   2.6377     0.1868   14.12   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11.18 on 412 degrees of freedom
## Multiple R-squared:  0.326,  Adjusted R-squared:  0.3244 
## F-statistic: 199.3 on 1 and 412 DF,  p-value: < 2.2e-16
ggplot(realEstate, aes(NoConvinienceStores, SQMprice)) +
  geom_point() +
  geom_abline(intercept = coef(model2)[1], slope = coef(model2)[2], color = "red", linewidth = 1) +
  labs(title = "Γραμμική Παλινδρόμηση: Τιμή ανά τ.μ. ~ Πλήθος κοντινών καταστημάτων",
       x = "Πλήθος κοντινών καταστημάτων", y = "Τιμή ανά τ.μ.($)")

Σχόλια
Όταν δεν υπάρχουν καταστήματα σε κοντινή απόσταση από το ακίνητο, τότε η εκτιμώμενη τιμή ανά τ.μ. είναι περίπου 27,18$. Για κάθε επιπλέον κατάστημα κοντά στο ακίνητο, η τιμή αυξάνεται κατά περίπου 2,64. Το μοντέλο εξηγεί περίπου το 32.6% της διακύμανσης της τιμής. Είναι χαμηλότερο από το προηγούμενο μοντέλο με MRTdistance (που είχε R² ≈ 45.4%), άρα το MRT μπορεί να προβλέψει καλύτερα την τιμή του ακινήτου. Επίσης παρατηρούμε ελαφρώς μεγαλύτερο σφάλμα πρόβλεψης (11,18) σε σχέση με το προηγούμενο μοντέλο.

Μοντέλο 3 - Απόσταση από σταθμό μετρό, Πλήθος κοντινών καταστημάτων και Ηλικία ακινήτου

model3 <- lm(SQMprice ~ MRTdistance + NoConvinienceStores + HouseAge, data = realEstate)
summary(model3)
## 
## Call:
## lm(formula = SQMprice ~ MRTdistance + NoConvinienceStores + HouseAge, 
##     data = realEstate)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -37.304  -5.430  -1.738   4.325  77.315 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         42.977286   1.384542  31.041  < 2e-16 ***
## MRTdistance         -0.005379   0.000453 -11.874  < 2e-16 ***
## NoConvinienceStores  1.297443   0.194290   6.678 7.91e-11 ***
## HouseAge            -0.252856   0.040105  -6.305 7.47e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.251 on 410 degrees of freedom
## Multiple R-squared:  0.5411, Adjusted R-squared:  0.5377 
## F-statistic: 161.1 on 3 and 410 DF,  p-value: < 2.2e-16

Σχόλια
Όταν όλες οι μεταβλητές (MRTdistance, NoConvinienceStores, HouseAge) είναι μηδενικές, η αναμενόμενη τιμή ανά τ.μ. είναι 42,97$. Για κάθε μέτρο μακριά από τον σταθμό του μετρό η τιμή μειώνεται κατά 0.0054, για κάθε επιπλέον κατάστημα η τιμή αυξάνεται κατά 1.30 και για κάθε έτος που περνάει μειώνεται η τιμή κατά 0.25. Το μοντέλο εξηγεί το 54.1% της διακύμανσης των τιμών και το σφάλμα πρόβλεψης ελλατώνεται στο 9.25. Γενικότερα το μοντέλο αυτό είναι πιο ισχυρό από τα προηγούμενα δύο, καθώς περιλαμβάνει σημαντικές μεταβλητές που έχουν τόσο θετική όσο και αρνητική επίδραση στην τιμή του ακινήτου.

Μοντέλο 4 - Προσθήκη Γεωγραφικών Συντεταγμένων στο μοντέλο 3

model4 <- lm(SQMprice ~ MRTdistance + NoConvinienceStores + HouseAge + Latitude + Longitude, data = realEstate)
summary(model4)
## 
## Call:
## lm(formula = SQMprice ~ MRTdistance + NoConvinienceStores + HouseAge + 
##     Latitude + Longitude, data = realEstate)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -34.546  -5.267  -1.600   4.247  76.372 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -4.946e+03  6.211e+03  -0.796    0.426    
## MRTdistance         -4.259e-03  7.233e-04  -5.888 8.17e-09 ***
## NoConvinienceStores  1.163e+00  1.902e-01   6.114 2.27e-09 ***
## HouseAge            -2.689e-01  3.900e-02  -6.896 2.04e-11 ***
## Latitude             2.378e+02  4.495e+01   5.290 2.00e-07 ***
## Longitude           -7.805e+00  4.915e+01  -0.159    0.874    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.965 on 408 degrees of freedom
## Multiple R-squared:  0.5712, Adjusted R-squared:  0.5659 
## F-statistic: 108.7 on 5 and 408 DF,  p-value: < 2.2e-16

Σχόλια
Το μοντέλο αυτό αποτελεί την πιο πλήρη και ακριβή εκδοχή γραμμικής παλινδρόμησης που έχουμε έως τώρα, ενσωματώνοντας τόσο δημογραφικές όσο και γεωγραφικές μεταβλητές. Οι παράγοντες MRTdistance, NoConvinienceStores, HouseAge και Latitude εμφανίζονται στατιστικά σημαντικοί (p < 0.001), ενώ ο Longitude δεν επηρεάζει σημαντικά την τιμή ανά τ.μ. (p = 0.874). Το μοντέλο εξηγεί το 57.1% της διακύμανσης στην τιμή, με σχετικά χαμηλό σφάλμα (RSE = 8.97), γεγονός που το καθιστά πιο αποτελεσματικό και ερμηνεύσιμο σε σχέση με τα προηγούμενα μοντέλα.

Σύγκριση Αποτελεσμάτων

SSE1 <- sum(model1$residuals^2)
SSE2 <- sum(model2$residuals^2)
SSE3 <- sum(model3$residuals^2)
SSE4 <- sum(model4$residuals^2)

R1 <- summary(model1)$r.squared
R2 <- summary(model2)$r.squared
R3 <- summary(model3)$r.squared
R4 <- summary(model4)$r.squared

results <- data.frame(
 Model = c("SQMprice ~ MRTdistance", 
           "SQMprice ~ NoConvinienceStores", 
           "SQMprice ~ MRTdistance + NoConvinienceStores + HouseAge", 
           "SQMprice ~ MRTdistance + NoConvinienceStores + HouseAge + Latitude + Longitude"),
  SSE = c(round(SSE1, 2), round(SSE2, 2), round(SSE3, 2), round(SSE4, 2)),
  R_Squared = c(round(R1, 4), round(R2, 4), round(R3, 4), round(R4, 4))
)

knitr::kable(results, caption = "Πίνακας SSE και R² για τα Μοντέλα Παλινδρόμησης")
Πίνακας SSE και R² για τα Μοντέλα Παλινδρόμησης
Model SSE R_Squared
SQMprice ~ MRTdistance 41766.70 0.4538
SQMprice ~ NoConvinienceStores 51531.40 0.3260
SQMprice ~ MRTdistance + NoConvinienceStores + HouseAge 35090.93 0.5411
SQMprice ~ MRTdistance + NoConvinienceStores + HouseAge + Latitude + Longitude 32789.57 0.5712

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

Το τελευταίο μοντέλο που περιλαμβάνει όλες τις ανεξάρτητες αριθμητικές μεταβλητές έχει τη χαμηλότερη SSE (32.789,57) και την υψηλότερη R² (0,5712), γεγονός που σημαίνει ότι εξηγεί καλύτερα τη διακύμανση της εξαρτημένης μεταβλητής (τιμή ανά τ.μ.) σε σχέση με τα υπόλοιπα μοντέλα. Η προσθήκη των γεωγραφικών παραμέτρων (Latitude, Longitude) βελτιώνει σημαντικά την απόδοση του μοντέλου σε σύγκριση με το μοτέλο 3, χωρίς όμως όλες οι μεταβλητές να είναι απαραίτητα στατιστικά σημαντικές (όπως η Longitude, που είχε p > 0,05). Το μοντέλο 3 εξηγεί το 54,1% της διακύμανσης και όλες οι μεταβλητές του είναι στατιστικά σημαντικές, κάτι που το καθιστά πολύ ισορροπημένο και αξιόπιστο. Τα μοντέλα με μία μόνο ανεξάρτητη μεταβλητή (μοντέλα 1 και 2) έχουν χαμηλότερη απόδοση (R² κάτω από 0,5) και δεν επαρκούν για πλήρη ανάλυση.

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

Διάγραμμα Βέλτιστου Μοντέλου

ggplot(realEstate, aes(SQMprice, fitted(model3))) +
  geom_point(color = "steelblue", alpha = 0.6) +
  geom_abline(intercept = 0, slope = 1, color = "red", linetype = "dashed", linewidth = 0.7) +
  labs(title = "Πραγματικές vs Προβλεπόμενες Τιμές (Μοντέλο 3)",
       x = "Πραγματική Τιμή ανά τ.μ.($)",
       y = "Προβλεπόμενη Τιμή ανά τ.μ.($)") +
  theme_minimal()

Σχόλια
Κάθε σημείο στο διάγραμμα αντιπροσωπεύει ένα ακίνητο από το dataset. Ο άξονας x δείχνει την πραγματική τιμή του ακινήτου, ενώ ο άξονας y δείχνει την προβλεπόμενη τιμή από το μοντέλο. Η κόκκινη διακεκομμένη γραμμή είναι η γραμμή ταύτισης (y = x). Αν ένα σημείο βρίσκεται πάνω σε αυτήν, σημαίνει ότι η πρόβλεψη του μοντέλου ήταν ακριβής. Τα περισσότερα σημεία βρίσκονται κοντά στην κόκκινη διαγώνιο, γεγονός που δείχνει ότι το μοντέλο προβλέπει ικανοποιητικά τις τιμές των ακινήτων. Υπάρχουν μερικές αποκλίσεις, ειδικά στις ακραίες τιμές, κάτι που είναι αναμενόμενο σε πραγματικά δεδομένα. Η γραμμική κατανομή των σημείων και η συμμετρία γύρω από τη διαγώνιο υποδηλώνουν ότι το μοντέλο δεν παρουσιάζει συστηματικά σφάλματα πρόβλεψης (bias). Το διάγραμμα υποδεικνύει ότι το μοντέλο 3 έχει καλή προγνωστική ικανότητα, με τις περισσότερες προβλεπόμενες τιμές να είναι κοντά στις πραγματικές.