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

Το Real Estate Dataset αφορά την αγορά ακινήτων και περιλαμβάνει πληροφορίες για 414 ιδιοκτησίες. Είναι ιδανικό για αναλύσεις όπως πρόβλεψη τιμών ακινήτων.

Πηγή: Το dataset διατίθεται από το Kaggle.

Περιέχει 414 παρατηρήσεις (γραμμές) και 8 μεταβλητές (στήλες)

Table 1.1: Περιγραφή Μεταβλητών Real Estate Dataset
Μεταβλητή Περιγραφή Τύπος
No Αύξων αριθμός καταγραφής Αριθμητική - Διακριτή
X1 transaction date Ημερομηνία συναλλαγής (σε έτη) Αριθμητική - Συνεχής
X2 house age Ηλικία του ακινήτου (σε έτη) Αριθμητική - Συνεχής
X3 distance to the nearest MRT station Απόσταση από τον πλησιέστερο σταθμό MRT (σε μέτρα) Αριθμητική - Συνεχής
X4 number of convenience stores Αριθμός κοντινών καταστημάτων Αριθμητική - Διακριτή
X5 latitude Γεωγραφικό πλάτος του ακινήτου Αριθμητική - Συνεχής
X6 longitude Γεωγραφικό μήκος του ακινήτου Αριθμητική - Συνεχής
Y house price of unit area Τιμή ανά μονάδα επιφάνειας (π.χ. NT$/m²) Αριθμητική - Συνεχής

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

library(readr)
Real_Estate_Dataset <- read.csv("Real Estate.csv")
summary(Real_Estate_Dataset)
##        No        X1.transaction.date  X2.house.age   
##  Min.   :  1.0   Min.   :2013        Min.   : 0.000  
##  1st Qu.:104.2   1st Qu.:2013        1st Qu.: 9.025  
##  Median :207.5   Median :2013        Median :16.100  
##  Mean   :207.5   Mean   :2013        Mean   :17.713  
##  3rd Qu.:310.8   3rd Qu.:2013        3rd Qu.:28.150  
##  Max.   :414.0   Max.   :2014        Max.   :43.800  
##  X3.distance.to.the.nearest.MRT.station X4.number.of.convenience.stores
##  Min.   :  23.38                        Min.   : 0.000                 
##  1st Qu.: 289.32                        1st Qu.: 1.000                 
##  Median : 492.23                        Median : 4.000                 
##  Mean   :1083.89                        Mean   : 4.094                 
##  3rd Qu.:1454.28                        3rd Qu.: 6.000                 
##  Max.   :6488.02                        Max.   :10.000                 
##   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.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

2 Διαγράμματα

2.1 Scatterplot

ggplot(Real_Estate_Dataset, aes(x = X2.house.age, y = X3.distance.to.the.nearest.MRT.station)) + 
  geom_point(color = "#E74C3C") +
  labs(
    x = "Ηλικία Ακινήτου (έτη)",
    y = "Απόσταση από Σταθμό MRT (μέτρα)"
  ) +
  theme_minimal(base_size = 14) + 
  theme(axis.title = element_text(face="bold"),
        axis.text = element_text(color="black"),
        panel.grid.major = element_line(color="gray80", linetype="dashed"))
ScatterPlot: Ηλικία Ακινήτου - Απόσταση από Σταθμό

Figure 2.1: ScatterPlot: Ηλικία Ακινήτου - Απόσταση από Σταθμό

Όπως φαίνεται στο Scatterplot 2.1, υπάρχει μεγάλη διασπορά σε όλες τις ηλικίες, δηλαδή και παλιά και νέα ακίνητα είναι τόσο κοντά όσο και μακριά από MRT. Η πλειοψηφία των ακινήτων, ανεξαρτήτως ηλικίας, φαίνεται να συγκεντρώνεται κάτω από τα 2000 μέτρα απόσταση. Τα ακίνητα με πολύ μεγάλη απόσταση (π.χ. >4000m) είναι σπάνια, και εμφανίζονται σε διαφορετικές ηλικίες.

2.2 Histogram

ggplot(Real_Estate_Dataset, aes(x=X5.latitude)) + 
  geom_histogram(bins=30, color="black", fill="#69b3a2") + 
  labs(x="Πλάτος", y="Συχνότητα") + 
  theme_minimal(base_size = 14) +
  theme(plot.title = element_text(hjust=0.5, face="bold"),
        axis.title = element_text(face="bold"),
        axis.text = element_text(color="black"),
        panel.grid.major = element_line(color="gray80", linetype="dashed"))
Histogram: Κατανομή Πλάτους

Figure 2.2: Histogram: Κατανομή Πλάτους

Όπως φαίνεται στο Histogram 2.2, τα περισσότερα ακίνητα εντοπίζονται σε πολύ περιορισμένο γεωγραφικό εύρος, με κέντρο γύρω στο 24.975. Παρατηρείται επίσης μικρή παρουσία ακινήτων σε πιο απομακρυσμένες περιοχές.

2.3 Barchart

price_range <- range(Real_Estate_Dataset$Y.house.price.of.unit.area, na.rm = TRUE)
Real_Estate_Dataset <- Real_Estate_Dataset %>%
  mutate(PriceCategory = cut(Y.house.price.of.unit.area, 
                             breaks = seq(floor(price_range[1]), ceiling(price_range[2]) + 5, by = 5),
                             include.lowest = TRUE,
                             right = FALSE))

ggplot(Real_Estate_Dataset, aes(x = PriceCategory)) + 
  geom_bar(fill = "purple", color = "black", width = 0.8) +
  labs(x = "Τιμή ανά Μονάδα Επιφάνειας (κατηγορίες)", y = "Συχνότητα") +
  theme_minimal(base_size = 12) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), axis.text = element_text(color="black"))
Barchart: Κατανομή Τιμής ανά μονάδα Επιφάνειας

Figure 2.3: Barchart: Κατανομή Τιμής ανά μονάδα Επιφάνειας

Όπως φαίνεται στο Barchart 2.3, οι τιμές ανά μονάδα επιφάνειας συγκεντρώνονται κυρίως στο εύρος [30, 50), το οποίο περιλαμβάνει τις περισσότερες παρατηρήσεις. Η κατανομή είναι ασύμμετρη, με εμφανή ουρά προς τα δεξιά (right-skewed). Η πλειονότητα των ακινήτων διατίθεται σε μεσαίες τιμές ανά μονάδα επιφάνειας. Υπάρχουν λίγα, αλλά πολύ ακριβά ακίνητα, που μπορεί να επηρεάζουν τον μέσο όρο προς τα πάνω.

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

3.1 Μοντέλο 1

m1 <- lm(Y.house.price.of.unit.area ~ X2.house.age, Real_Estate_Dataset)
summary(m1)
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X2.house.age, data = Real_Estate_Dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -31.113 -10.738   1.626   8.199  77.781 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  42.43470    1.21098  35.042  < 2e-16 ***
## X2.house.age -0.25149    0.05752  -4.372 1.56e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.32 on 412 degrees of freedom
## Multiple R-squared:  0.04434,    Adjusted R-squared:  0.04202 
## F-statistic: 19.11 on 1 and 412 DF,  p-value: 1.56e-05
SSE1 <- sum(m1$residuals^2)

ggplot(Real_Estate_Dataset, aes(X2.house.age, Y.house.price.of.unit.area)) +
      geom_point() + labs(x = "Ηλικία Ακινήτου", y = "Τιμή ανά Μονάδα Επιφάνειας") + geom_abline(aes(intercept = coef(m1)[1], slope = coef(m1)[2]), colour = "red")

Η αρνητική κλίση της κόκκινης γραμμής δείχνει ότι υπάρχει αρνητική γραμμική σχέση μεταξύ της ηλικίας του ακινήτου και της τιμής ανά μονάδα επιφάνειας. Δηλαδή, όσο αυξάνεται η ηλικία του ακινήτου, τόσο μειώνεται η τιμή του ανά τετραγωνικό μέτρο. Επίσης, R-squared: 0.044 ή 4.4% που είναι αρκετά μικρό.

3.2 Μοντέλο 2

m2 <- lm(Y.house.price.of.unit.area ~ X2.house.age + X3.distance.to.the.nearest.MRT.station, Real_Estate_Dataset)
summary(m2)
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X2.house.age + X3.distance.to.the.nearest.MRT.station, 
##     data = Real_Estate_Dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -36.032  -4.742  -1.037   4.533  71.930 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            49.8855858  0.9677644  51.547  < 2e-16
## X2.house.age                           -0.2310266  0.0420383  -5.496 6.84e-08
## X3.distance.to.the.nearest.MRT.station -0.0072086  0.0003795 -18.997  < 2e-16
##                                           
## (Intercept)                            ***
## X2.house.age                           ***
## X3.distance.to.the.nearest.MRT.station ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.73 on 411 degrees of freedom
## Multiple R-squared:  0.4911, Adjusted R-squared:  0.4887 
## F-statistic: 198.3 on 2 and 411 DF,  p-value: < 2.2e-16
SSE2 <- sum(m2$residuals^2)

Με την προσθήκη της μεταβλητής “Distance to MRT” (M2), το R-squared εκτοξεύεται στο 0.4911 ή 49.1%, που σημαίνει ότι η απόσταση από σταθμό μετρό εξηγεί πολύ μεγάλο μέρος της τιμής.

3.3 Μοντέλο 3

m3 <- lm(Y.house.price.of.unit.area ~ X2.house.age + X3.distance.to.the.nearest.MRT.station + X1.transaction.date, Real_Estate_Dataset)
summary(m3)
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X2.house.age + X3.distance.to.the.nearest.MRT.station + 
##     X1.transaction.date, data = Real_Estate_Dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -37.272  -5.393  -0.571   4.641  70.668 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            -1.278e+04  3.370e+03  -3.794 0.000171
## X2.house.age                           -2.336e-01  4.137e-02  -5.645 3.08e-08
## X3.distance.to.the.nearest.MRT.station -7.295e-03  3.741e-04 -19.501  < 2e-16
## X1.transaction.date                     6.375e+00  1.674e+00   3.808 0.000161
##                                           
## (Intercept)                            ***
## X2.house.age                           ***
## X3.distance.to.the.nearest.MRT.station ***
## X1.transaction.date                    ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.574 on 410 degrees of freedom
## Multiple R-squared:  0.5085, Adjusted R-squared:  0.5049 
## F-statistic: 141.4 on 3 and 410 DF,  p-value: < 2.2e-16
SSE3 <- sum(m3$residuals^2)

Η ημερομηνία συναλλαγής (M3), προσθέτει επιπλέον πληροφορία, ανεβάζοντας το R-squared σε 0.5085 ή 50.9%. Δείχνει ότι και ο χρόνος έχει κάποια σημασία (πιθανόν λόγω αλλαγών στην αγορά).

3.4 Μοντέλο 4

m4 <- lm(Y.house.price.of.unit.area ~ X2.house.age + X3.distance.to.the.nearest.MRT.station + X1.transaction.date + X5.latitude, Real_Estate_Dataset)
summary(m4)
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X2.house.age + X3.distance.to.the.nearest.MRT.station + 
##     X1.transaction.date + X5.latitude, data = Real_Estate_Dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -34.218  -5.269  -0.700   4.433  70.502 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            -1.767e+04  3.359e+03  -5.262 2.30e-07
## X2.house.age                           -2.530e-01  4.001e-02  -6.323 6.71e-10
## X3.distance.to.the.nearest.MRT.station -5.764e-03  4.493e-04 -12.829  < 2e-16
## X1.transaction.date                     5.570e+00  1.619e+00   3.440 0.000642
## X5.latitude                             2.607e+02  4.569e+01   5.705 2.23e-08
##                                           
## (Intercept)                            ***
## X2.house.age                           ***
## X3.distance.to.the.nearest.MRT.station ***
## X1.transaction.date                    ***
## X5.latitude                            ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.225 on 409 degrees of freedom
## Multiple R-squared:  0.5448, Adjusted R-squared:  0.5403 
## F-statistic: 122.4 on 4 and 409 DF,  p-value: < 2.2e-16
SSE4 <- sum(m4$residuals^2)

Το γεωγραφικό πλάτος (Latitude) στο M4 βελτιώνει κι άλλο το μοντέλο (R-squared ≈ 0.5448 ή 54.5%), που δείχνει ότι η θέση βόρεια-νότια παίζει ρόλο στην τιμολόγηση.

3.5 Μοντέλο 5

m5 <- lm(Y.house.price.of.unit.area ~ X2.house.age + X3.distance.to.the.nearest.MRT.station + X1.transaction.date + X5.latitude + X6.longitude, Real_Estate_Dataset)
summary(m5)
## 
## Call:
## lm(formula = Y.house.price.of.unit.area ~ X2.house.age + X3.distance.to.the.nearest.MRT.station + 
##     X1.transaction.date + X5.latitude + X6.longitude, data = Real_Estate_Dataset)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -34.325  -5.319  -0.805   4.468  70.164 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                            -1.400e+04  7.062e+03  -1.983 0.048029
## X2.house.age                           -2.539e-01  4.007e-02  -6.336 6.26e-10
## X3.distance.to.the.nearest.MRT.station -6.078e-03  6.960e-04  -8.733  < 2e-16
## X1.transaction.date                     5.595e+00  1.621e+00   3.451 0.000616
## X5.latitude                             2.571e+02  4.613e+01   5.573 4.56e-08
## X6.longitude                           -2.986e+01  5.055e+01  -0.591 0.555098
##                                           
## (Intercept)                            *  
## X2.house.age                           ***
## X3.distance.to.the.nearest.MRT.station ***
## X1.transaction.date                    ***
## X5.latitude                            ***
## X6.longitude                              
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.233 on 408 degrees of freedom
## Multiple R-squared:  0.5451, Adjusted R-squared:  0.5396 
## F-statistic:  97.8 on 5 and 408 DF,  p-value: < 2.2e-16
SSE5 <- sum(m5$residuals^2)

Η προσθήκη του γεωγραφικού μήκους (Longitude) στο M5 δεν βελτιώνει σημαντικά το μοντέλο όπου το R-squared παραμένει ουσιαστικά σταθερό με 0.5451 ή 54.5%.

model_summary <- data.frame(
  Model = paste0("M", 1:5),
  Variables = c(
    "Age",
    "Age + Distance",
    "Age + Distance + Date",
    "Age + Distance + Date + Latitude",
    "Age + Distance + Date + Latitude + Longitude"
  ),
  SSE = c(SSE1, SSE2, SSE3, SSE4, SSE5),
  R_squared = c(summary(m1)$r.squared,
                summary(m2)$r.squared,
                summary(m3)$r.squared,
                summary(m4)$r.squared,
                summary(m5)$r.squared)
)

knitr::kable(model_summary, caption = "Σύγκριση μοντέλων παλινδρόμησης")
Table 3.1: Σύγκριση μοντέλων παλινδρόμησης
Model Variables SSE R_squared
M1 Age 73071.20 0.0443385
M2 Age + Distance 38907.62 0.4911467
M3 Age + Distance + Date 37578.30 0.5085323
M4 Age + Distance + Date + Latitude 34808.29 0.5447599
M5 Age + Distance + Date + Latitude + Longitude 34778.55 0.5451488

4 Κύρια Συμπεράσματα

Κύρια Συμπεράσματα:

  • Η απόσταση από το μετρό είναι ο πιο ισχυρός αρνητικός προβλεπτικός παράγοντας της τιμής ανά μονάδα επιφάνειας.
  • Η ηλικία του ακινήτου, αν και σημαντική, εξηγεί μόνο ένα μικρό μέρος της διακύμανσης.
  • Οι γεωγραφικές μεταβλητές (latitude) παίζουν ρόλο, ενώ το longitude δεν είναι ιδιαίτερα χρήσιμος προβλεπτικός παράγοντας στο συγκεκριμένο dataset.
  • Το τελικό μοντέλο (M4 ή M5) εξηγεί πάνω από 54% της διακύμανσης στις τιμές, που είναι ένα ικανοποιητικό αποτέλεσμα για δεδομένα ακινήτων.