Case study - Γραμμική Παλινδρόμηση
2026-03-29
- Σχολιασμός - Περιγραφή Dataset
- Ενδεικτικά διαγράμματα (scatterplots, boxplots, etc.) των βασικών του παραμέτρων
- Δημιουργία (και αξιολόγηση) μοντέλου παλινδρόμησης
- Σύγκριση μοντέλων και ανάδειξη βέλτιστου
- Εφαρμογή του βέλτιστου μοντέλου για Πρόβλεψη
- Πρακτικό Παράδειγμα
# 1. Φόρτωση βιβλιοθηκών
library(readr)## Warning: package 'readr' was built under R version 4.5.3
library(ggplot2)
# 2. Εισαγωγή
data <- read_csv("Real_estate.csv")
# 3. Διαχωρισμός σε 80% Training και 20% Test
set.seed(123) # Για να παίρνουμε πάντα τα ίδια τυχαία αποτελέσματα
sample_index <- sample(1:nrow(data), 0.8 * nrow(data))
train_data <- data[sample_index, ] # Το 80% για την ανάλυση και τα γραφήματα
test_data <- data[-sample_index, ] # Το 20% για τον έλεγχο μετάΣχολιασμός - Περιγραφή Dataset
Το συγκεκριμένο σύνολο δεδομένων αφορά την εκτίμηση της τιμής ακινήτων στην περιοχή Sindian του New Taipei City στην Ταϊβάν. Το dataset περιέχει 414 εγγραφές, με στήλες όπως η τιμή και διάφορα χαρακτηριστικά του ακινήτου. Παρακάτω, υπάρχει μια μικρή περιγραφή για την κάθε στήλη ξεχωριστά, καθώς και σε παρένθεση ο τύπος μεταβλητής κάθε μίας:
- No: Αύξων αριθμός παρατήρησης, μοναδικός για κάθε ακίνητο (int)
- X1 transaction date: Εκφράζει την ημερομηνία της συναλλαγής, έτος σε δεκαδική μορφή (num)
- X2 house age: Ηλικία ακινήτου, σε έτη (num)
- X3 distance to the nearest MRT station: Απόσταση από τον πλησιέστερο σταθμό μετρό, σε μέτρα (num)
- X4 number of convenience stores: Πλήθος καταστημάτων (mini markets) στη γύρω περιοχή (int)
- X5 latitude: Γεωγραφικό Πλάτος, σε μοίρες (num)
- X6 longitude: Γεωγραφικό Μήκος, σε μοίρες (num)
- Y house price of unit area: Τιμή ακινήτου ανά μονάδα επιφάνειας (num)
Περιγραφή των μεταβλητών (τύπος, εύρος τιμών, μονάδες μέτρησης)
# Εμφάνιση της δομής και των τύπων των μεταβλητών
str(data)## spc_tbl_ [414 × 8] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ No : num [1:414] 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 transaction date : num [1:414] 2013 2013 2014 2014 2013 ...
## $ X2 house age : num [1:414] 32 19.5 13.3 13.3 5 7.1 34.5 20.3 31.7 17.9 ...
## $ X3 distance to the nearest MRT station: num [1:414] 84.9 306.6 562 562 390.6 ...
## $ X4 number of convenience stores : num [1:414] 10 9 5 5 5 3 7 6 1 3 ...
## $ X5 latitude : num [1:414] 25 25 25 25 25 ...
## $ X6 longitude : num [1:414] 122 122 122 122 122 ...
## $ Y house price of unit area : num [1:414] 37.9 42.2 47.3 54.8 43.1 32.1 40.3 46.7 18.8 22.1 ...
## - attr(*, "spec")=
## .. cols(
## .. No = col_double(),
## .. `X1 transaction date` = col_double(),
## .. `X2 house age` = col_double(),
## .. `X3 distance to the nearest MRT station` = col_double(),
## .. `X4 number of convenience stores` = col_double(),
## .. `X5 latitude` = col_double(),
## .. `X6 longitude` = col_double(),
## .. `Y house price of unit area` = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
# Εμφάνιση στατιστικών στοιχείων και εύρους τιμών
summary(data)## 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
Ενδεικτικά διαγράμματα (scatterplots, boxplots, etc.) των βασικών του παραμέτρων
Παρακάτω, παρουσιάζονται κάποια ενδεικτικά διαγράμματα των βασικών παραμέτρων, ώστε να δούμε κάποια πρώτα στοιχεία για το dataset.
Scatterplot: Απόσταση από Μετρό (X3) vs Τιμή (Y)
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 = "darkblue") +
geom_smooth(method = "lm", color = "red") +
labs(title = "Σχέση Απόστασης από Μετρό και Τιμής",
x = "Απόσταση από MRT (μέτρα)", y = "Τιμή ανά Μονάδα") +
theme_minimal()## `geom_smooth()` using formula = 'y ~ x'
Σύντομος σχολιασμός:
Ο κώδικας δημιουργεί ένα διάγραμμα διασποράς (scatterplot) που απεικονίζει τη σχέση μεταξύ της απόστασης από τον πλησιέστερο σταθμό MRT (X3) και της τιμής ακινήτου ανά μονάδα επιφάνειας (Y). Η γραμμή τάσης (geom_smooth(method = “lm”), συνοψίζει τη γενική τάση της σχέσης μεταξύ των δύο μεταβλητών.
Αυτό που παρατηρούμε στο διάγραμμα είναι μια ξεκάθαρη αρνητική συσχέτιση μεταξύ της απόστασης από το MRT και της τιμής του ακινήτου. Συγκεκριμένα, όσο αυξάνεται η απόσταση (δηλαδή όσο πιο μακριά βρίσκεται ένα ακίνητο από σταθμό μετρό), τόσο τείνει να μειώνεται η τιμή ανά μονάδα επιφάνειας.
Παράλληλα, παρατηρείται ότι τα περισσότερα ακίνητα συγκεντρώνονται σε σχετικά μικρές αποστάσεις (κάτω από ~2000 μέτρα), όπου υπάρχει και μεγαλύτερη διασπορά στις τιμές, που δείχνει ότι η τιμή επηρεάζεται και από άλλους παράγοντες.
Boxplot: Αριθμός Καταστημάτων vs Τιμή
ggplot(train_data, aes(x = as.factor(`X4 number of convenience stores`), y = `Y house price of unit area`)) +
geom_boxplot(fill = "lightblue") +
labs(title = "Επίδραση Καταστημάτων στην Τιμή",
x = "Αριθμός Καταστημάτων", y = "Τιμή ανά Μονάδα") +
theme_minimal()
Σύντομος σχολιασμός:
Ο κώδικας δημιουργεί boxplot όπου ο αριθμός καταστημάτων (X4) μετατρέπεται σε κατηγορική μεταβλητή (as.factor), ώστε να συγκριθεί η κατανομή της τιμής (Y) για κάθε επίπεδο. Παρατηρούμε ότι όσο αυξάνεται ο αριθμός των καταστημάτων, η διάμεση τιμή των ακινήτων τείνει να αυξάνεται, ιδιαίτερα μέχρι και τα 5 καταστήματα, ενώ αργότερα μένει πιο σταθερός. Αυτό υποδηλώνει θετική σχέση μεταξύ εμπορικής δραστηριότητας και αξίας ακινήτου. Ωστόσο, υπάρχει διασπορά και αρκετά outliers σε όλες τις κατηγορίες.
Histogram: Κατανομή της Τιμής
ggplot(train_data, aes(x = `Y house price of unit area`)) +
geom_histogram(bins = 30, fill = "forestgreen", color = "white") +
labs(title = "Κατανομή Τιμών Ακινήτων",
x = "Τιμή ανά Μονάδα", y = "Συχνότητα") +
theme_minimal()Σύντομος σχολιασμός:
Το ιστόγραμμα απεικονίζει την κατανομή της τιμής ανά μονάδα επιφάνειας.Η κατανομή εμφανίζει ελαφρά δεξιά ασυμμετρία, καθώς υπάρχουν λίγες αλλά αρκετά υψηλές τιμές (outliers) που τραβούν την ουρά προς τα δεξιά. Αυτό σημαίνει ότι αν και τα περισσότερα ακίνητα έχουν μέτριες τιμές, υπάρχουν και ορισμένα πολύ ακριβά ακίνητα που επηρεάζουν τη συνολική εικόνα.
Δημιουργία (και αξιολόγηση) μοντέλου παλινδρόμησης
Σε αυτό το στάδιο προχωράμε στη δημιουργία ενός μοντέλου παλινδρόμησης με στόχο την πρόβλεψη της τιμής ακινήτου (Y), η οποία αποτελεί την εξαρτημένη μεταβλητή. Ως ανεξάρτητες μεταβλητές (X) χρησιμοποιούνται τα χαρακτηριστικά του dataset, όπως η ημερομηνία συναλλαγής (X1), η ηλικία του ακινήτου (X2), η απόσταση από το MRT (X3), ο αριθμός καταστημάτων (X4), καθώς και οι γεωγραφικές συντεταγμένες (X5, X6).
Η βασική ιδέα είναι να εκτιμήσουμε τη σχέση μεταξύ της τιμής και αυτών των παραγόντων, ώστε να μπορούμε να προβλέψουμε την τιμή ενός ακινήτου με βάση τα χαρακτηριστικά του.
Μοντέλο 1
Στο πρώτο μοντέλο, επιλέγουμε σαν ανεξάρτητη μεταβλητή την απόσταση από το Μετρό.
model_1 <- lm(`Y house price of unit area` ~ `X3 distance to the nearest MRT station`, data = train_data)
summary(model_1)##
## 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
Σύντομος σχολιασμός:
Το R² είναι 0.4375, που σημαίνει ότι το μοντέλο εξηγεί περίπου το 43.75% της μεταβλητότητας της τιμής, υποδεικνύοντας μέτρια προσαρμογή. Το SSE (συνολικό σφάλμα) είναι σχετικά υψηλό (10.18), γεγονός που δείχνει ότι υπάρχει σημαντική απόκλιση μεταξύ πραγματικών και προβλεπόμενων τιμών.
Ο συντελεστής της απόστασης είναι αρνητικός (-0.007), επιβεβαιώνοντας ότι όσο αυξάνεται η απόσταση από το MRT, η τιμή των ακινήτων μειώνεται. Η μεταβλητή είναι στατιστικά σημαντική (p-value < 0.001), γεγονός που δείχνει ότι η σχέση αυτή δεν είναι τυχαία.
Μοντέλο 2
Σε αυτό το μοντέλο, θα προσθέσουμε μια ακόμη ανεξάρτητη μεταβλητή, πόσα χρόνια έχει το κάθε σπίτι που χτίστηκε, για να δούμε αν αυτό επηρεάζει και κατά πόσο την τελική τιμή του ακινήτου.
model_2 <- lm(`Y house price of unit area` ~ + `X3 distance to the nearest MRT station` + `X2 house age`, data = train_data)
summary(model_2)##
## Call:
## lm(formula = `Y house price of unit area` ~ +`X3 distance to the nearest MRT station` +
## `X2 house age`, data = train_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -35.489 -5.111 -1.260 4.667 72.698
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 48.5334958 1.1353956 42.746 <2e-16
## `X3 distance to the nearest MRT station` -0.0070030 0.0004294 -16.309 <2e-16
## `X2 house age` -0.1817578 0.0483237 -3.761 2e-04
##
## (Intercept) ***
## `X3 distance to the nearest MRT station` ***
## `X2 house age` ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.986 on 328 degrees of freedom
## Multiple R-squared: 0.4607, Adjusted R-squared: 0.4574
## F-statistic: 140.1 on 2 and 328 DF, p-value: < 2.2e-16
Σύντομος σχολιασμός:
Υπάρχει εμφανής βελτίωση και εξηγεί πλέον το 46.07% της μεταβλητότητας έναντι με 43.75% του προηγούμενου. Επιπλέον, έχει μικρότερο SSE (9.986) και άρα κάνει λιγότερα σφάλματα από το προηγούμενο.
Μοντέλο 3
Στο τρίτο μοντέλο, θα προσθέσουμε σαν ανεξάρτητη μεταβλητή, τον αριθμό των καταστημάτων (mini markets) που υπάρχουν στη γύρω περιοχή του ακινήτου.
model_3 <- lm(`Y house price of unit area` ~ + `X3 distance to the nearest MRT station` + `X2 house age` + `X4 number of convenience stores`, data = train_data)
summary(model_3)##
## Call:
## lm(formula = `Y house price of unit area` ~ +`X3 distance to the nearest MRT station` +
## `X2 house age` + `X4 number of convenience stores`, 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
## `X2 house age` -0.2080157 0.0470856 -4.418 1.36e-05
## `X4 number of convenience stores` 1.1086047 0.2302823 4.814 2.26e-06
##
## (Intercept) ***
## `X3 distance to the nearest MRT station` ***
## `X2 house age` ***
## `X4 number of convenience stores` ***
## ---
## 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
Σύντομος σχολιασμός:
Το τρίτο μοντέλο δίνει την καλύτερη επίδοση μέχρι τώρα, με μεγαλύτερο R² = 0.4964 και μικρότερο SSE (9.664). Συνεπώς, και η απόσταση/πλήθος των κοντινών mini markets έχει ισχυρή επίδραση στην τελική τιμή του ακινήτου και έχει ισχυρή στατιστική σημαντικότητα.
Μοντέλο 4
Προσθέτουμε το γεωγραφικό πλάτος του ακινήτου:
model_4 <- lm(`Y house price of unit area` ~ + `X3 distance to the nearest MRT station` + `X2 house age` + `X4 number of convenience stores` + `X5 latitude`, data = train_data)
summary(model_4)##
## Call:
## lm(formula = `Y house price of unit area` ~ +`X3 distance to the nearest MRT station` +
## `X2 house age` + `X4 number of convenience stores` + `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
## `X2 house age` -2.307e-01 4.564e-02 -5.055 7.20e-07
## `X4 number of convenience stores` 9.879e-01 2.234e-01 4.422 1.33e-05
## `X5 latitude` 2.581e+02 5.117e+01 5.043 7.61e-07
##
## (Intercept) ***
## `X3 distance to the nearest MRT station` ***
## `X2 house age` ***
## `X4 number of convenience stores` ***
## `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
Σύντομος σχολιασμός:
Το τέταρτο μοντέλο παρουσιάζει περαιτέρω βελτίωση στην απόδοσή του, με υψηλότερο R² = 0.5329 και μικρότερο σφάλμα (Residual Standard Error = 9.322). Αυτό σημαίνει ότι εξηγεί περίπου το 53.29% της μεταβλητότητας των τιμών, σημαντικά καλύτερο από το προηγούμενο. Επιπλέον, η μεταβλητή latitude φαίνεται να έχει σημαντική επίδραση στην τιμή του ακινήτου και είναι στατιστικά σημαντική, όπως και όλες οι υπόλοιπες μεταβλητές του μοντέλου.
Μοντέλο 5
Προσθέτουμε το γεωγραφικό μήκος του ακινήτου:
model_5 <- lm(`Y house price of unit area` ~ + `X3 distance to the nearest MRT station` + `X2 house age` + `X4 number of convenience stores` + `X5 latitude` + `X6 longitude`, data = train_data)
summary(model_5)##
## Call:
## lm(formula = `Y house price of unit area` ~ +`X3 distance to the nearest MRT station` +
## `X2 house age` + `X4 number of convenience stores` + `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
## `X2 house age` -2.307e-01 4.576e-02 -5.041 7.70e-07
## `X4 number of convenience stores` 9.880e-01 2.245e-01 4.401 1.46e-05
## `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` ***
## `X2 house age` ***
## `X4 number of convenience stores` ***
## `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
Σύντομος σχολιασμός:
Το πέμπτο μοντέλο δεν παρουσιάζει καμία βελτίωση σε σχέση με το προηγούμενο, καθώς το R² παραμένει ίδιο (0.5329) και το σφάλμα (Residual Standard Error = 9.337) είναι ελαφρώς μεγαλύτερο. Αυτό δείχνει ότι η προσθήκη της μεταβλητής του γεωγραφικού μήκους δεν βελτιώνει την ερμηνευτική ικανότητα του μοντέλου. Επιπλέον, η συγκεκριμένη μεταβλητή δεν είναι στατιστικά σημαντική (p-value = 0.999), άρα δεν έχει ουσιαστική επίδραση στην τιμή του ακινήτου. Συνεπώς, το τέταρτο μοντέλο παραμένει προτιμότερο.
Μοντέλο 6
Στο τελευταίο μοντέλο, θα προσθέσουμε την μεταβλητή της ημερομηνίας συναλλαγής. Εδώ, είναι πολύ πιθανό να μην έχουμε βελτίωση, καθώς δεν είναι χαρακτηριστικό του ακινήτου, αλλά είναι παράγοντας που μπορεί να επηρεάσει τις τιμές λόγω τάσεων της αγοράς, πληθωρισμού κτλ.
model_6 <- lm(`Y house price of unit area` ~ + `X3 distance to the nearest MRT station` + `X2 house age` + `X4 number of convenience stores` + `X5 latitude` + `X1 transaction date`, data = train_data)
summary(model_6)##
## Call:
## lm(formula = `Y house price of unit area` ~ +`X3 distance to the nearest MRT station` +
## `X2 house age` + `X4 number of convenience stores` + `X5 latitude` +
## `X1 transaction date`, data = train_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -34.781 -5.149 -1.384 4.082 75.161
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.516e+04 3.794e+03 -3.996 7.97e-05
## `X3 distance to the nearest MRT station` -4.381e-03 5.641e-04 -7.766 1.07e-13
## `X2 house age` -2.375e-01 4.538e-02 -5.233 2.99e-07
## `X4 number of convenience stores` 9.595e-01 2.220e-01 4.322 2.06e-05
## `X5 latitude` 2.477e+02 5.096e+01 4.860 1.83e-06
## `X1 transaction date` 4.479e+00 1.829e+00 2.449 0.0148
##
## (Intercept) ***
## `X3 distance to the nearest MRT station` ***
## `X2 house age` ***
## `X4 number of convenience stores` ***
## `X5 latitude` ***
## `X1 transaction date` *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.252 on 325 degrees of freedom
## Multiple R-squared: 0.5413, Adjusted R-squared: 0.5343
## F-statistic: 76.71 on 5 and 325 DF, p-value: < 2.2e-16
Σύντομος σχολιασμός:
Το νέο μοντέλο παρουσιάζει μικρή αλλά ουσιαστική βελτίωση σε σχέση με το 4ο μοντέλο. Συγκεκριμένα, το R² αυξάνεται από 0.5329 σε 0.5413, ενώ το σφάλμα μειώνεται από 9.322 σε 9.252, γεγονός που δείχνει καλύτερη προσαρμογή στα δεδομένα. Επιπλέον, η μεταβλητή της ημερομηνίας της συναλλαγής είναι στατιστικά σημαντική (p-value ≈ 0.015), άρα φαίνεται να επηρεάζει την τιμή των ακινήτων. Συνεπώς, το συγκεκριμένο μοντέλο είναι προτιμότερο από το 4ο, καθώς επιτυγχάνει ελαφρώς καλύτερη ερμηνευτική ικανότητα χωρίς την παρουσία μη σημαντικών μεταβλητών.
Σύγκριση μοντέλων και ανάδειξη βέλτιστου
| Μοντέλο | Μεταβλητές | R² | Adjusted R² | Residual Std. Error (SSE) |
|---|---|---|---|---|
| 1ο | X3 | 0.4375 | 0.4358 | 10.18 |
| 2ο | X3, X2 | 0.4607 | 0.4574 | 9.986 |
| 3ο | X3, X2, X4 | 0.4964 | 0.4918 | 9.664 |
| 4ο | X3, X2, X4, X5 | 0.5329 | 0.5271 | 9.322 |
| 5ο | X3, X2, X4, X5, X6 | 0.5329 | 0.5257 | 9.337 |
| 6ο | X3, X2, X4, X5, X1 | 0.5413 | 0.5343 | 9.252 |
Από τον πίνακα παρατηρείται ότι καθώς προστίθενται μεταβλητές, το μοντέλο βελτιώνεται σταδιακά, με αύξηση του R² και του Adjusted R² και ταυτόχρονη μείωση του σφάλματος. Η σημαντικότερη βελτίωση εμφανίζεται μέχρι το 4ο μοντέλο, ενώ στο 5ο μοντέλο η προσθήκη της μεταβλητής του γεωγραφικού μήκους δεν προσφέρει καμία βελτίωση, καθώς το Adjusted R² μειώνεται και η μεταβλητή δεν είναι στατιστικά σημαντική.
Αντίθετα, στο 6ο μοντέλο η εισαγωγή της μεταβλητής της ημερομηνίας της συναλλαγής οδηγεί σε αύξηση του Adjusted R² και μείωση του σφάλματος, γεγονός που δείχνει καλύτερη προσαρμογή του μοντέλου.
Συνεπώς, το 6ο μοντέλο θεωρείται το καλύτερο, καθώς παρουσιάζει την υψηλότερη τιμή Adjusted R² και την καλύτερη συνολική απόδοση, χωρίς να περιλαμβάνει μη σημαντικές μεταβλητές.
Εφαρμογή του βέλτιστου μοντέλου για Πρόβλεψη
Σε αυτό το βήμα, θα χρησιμοποιήσουμε το test set (ένα κομμάτι 20% του αρχικού dataset που δεν χρησιμοποιήθηκε για την εύρεση του βέλτιστου μοντέλου), για να δούμε κατά πόσο το μοντέλο που δημιουργήσαμε έχει την ικανότητα να προβλέπει με νέα δεδομένα.
model_6 <- lm(`Y house price of unit area` ~ + `X3 distance to the nearest MRT station` + `X2 house age` + `X4 number of convenience stores` + `X5 latitude` + `X1 transaction date`, data = test_data)
summary(model_6)##
## Call:
## lm(formula = `Y house price of unit area` ~ +`X3 distance to the nearest MRT station` +
## `X2 house age` + `X4 number of convenience stores` + `X5 latitude` +
## `X1 transaction date`, data = test_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.775 -4.073 -0.112 3.716 26.353
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.567e+04 5.768e+03 -2.717 0.00813
## `X3 distance to the nearest MRT station` -4.418e-03 9.227e-04 -4.787 8.01e-06
## `X2 house age` -3.646e-01 6.779e-02 -5.378 7.82e-07
## `X4 number of convenience stores` 1.740e+00 3.166e-01 5.496 4.86e-07
## `X5 latitude` 1.024e+02 8.183e+01 1.252 0.21453
## `X1 transaction date` 6.535e+00 2.724e+00 2.399 0.01884
##
## (Intercept) **
## `X3 distance to the nearest MRT station` ***
## `X2 house age` ***
## `X4 number of convenience stores` ***
## `X5 latitude`
## `X1 transaction date` *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.842 on 77 degrees of freedom
## Multiple R-squared: 0.7619, Adjusted R-squared: 0.7465
## F-statistic: 49.28 on 5 and 77 DF, p-value: < 2.2e-16
Σύντομος σχολιασμός:
Η εφαρμογή του τελικού μοντέλου στο σύνολο ελέγχου δείχνει πολύ καλή απόδοση, καθώς το R² = 0.7619 και το Adjusted R² = 0.7465 είναι σημαντικά υψηλότερα σε σχέση με το training set. Αυτό σημαίνει ότι το μοντέλο εξηγεί περίπου το 76% της μεταβλητότητας των τιμών στα νέα δεδομένα, γεγονός που υποδηλώνει καλή γενίκευση.
Επιπλέον, το Residual Standard Error (SSE) = 6.842 είναι αισθητά μικρότερο, άρα οι προβλέψεις του μοντέλου στο test set είναι πιο ακριβείς. Οι περισσότερες μεταβλητές (απόσταση από το μετρό, ηλικία ακινήτου, αριθμός mini market, γεωγραφικό πλάτος και ημερομηνία συναλλαγής) παραμένουν στατιστικά σημαντικές, επιβεβαιώνοντας τη σημασία τους. Αντίθετα, η μεταβλητή γεωγραφικού μήκους δεν είναι στατιστικά σημαντική στο test set, κάτι που δείχνει ότι η επίδρασή της δεν είναι τόσο σταθερή σε νέα δεδομένα.
Συνολικά, το μοντέλο παρουσιάζει καλή προβλεπτική ικανότητα και σταθερότητα.
Πρακτικό Παράδειγμα
Ας συγκρίνουμε δύο ακίνητα που έχουν την ίδια ηλικία (15 ετών), βρίσκονται στην ίδια περιοχή (Latitude 24.97) και έχουν τον ίδιο αριθμό καταστημάτων (5 mini markets).
Σπίτι Α: Βρίσκεται δίπλα στο μετρό (100 μέτρα) αλλά πουλήθηκε νωρίς (αρχές 2012, δηλαδή X1 = 2012.0).
Σπίτι Β: Βρίσκεται μακριά από το μετρό (1000 μέτρα) αλλά πουλήθηκε αργότερα, όταν οι τιμές είχαν ανέβει (μέσα 2013, δηλαδή X1 = 2013.5).
Υπολογισμός Τιμής για το Σπίτι Α: YA = −15160 + (−0.004381⋅100) + (−0.2375⋅15) + (0.9595⋅5) + (247.7⋅24.97) + (4.479⋅201) => YA ≈ −15160 −0.438 −3.563 + 4.798 + 6183.77 + 9013.01 => Υ𝐴 ≈ 37.6
Υπολογισμός τιμής για το Σπίτι Β: YB = −15160 + (−0.004381⋅1000) + (−0.2375⋅15) + (0.9595⋅5) + (247.7⋅24.97 ) +(4.479⋅2013.5) =>YBY ≈ 40.4
Στο παραπάνω παράδειγμα παρατηρούμε ότι η χρονική στιγμή της συναλλαγής (X1) παίζει καθοριστικό ρόλο. Παρόλο που το Σπίτι Β βρίσκεται σε δεκαπλάσια απόσταση από το σταθμό MRT σε σχέση με το Σπίτι Α (1000μ. έναντι 100μ.), η πώλησή του σε μεταγενέστερο χρόνο (1.5 έτος μετά) οδήγησε σε υψηλότερη τιμή μονάδας (40.4 έναντι 37.6). Αυτό υποδηλώνει ότι η γενικότερη τάση αύξησης των τιμών στην αγορά ακινήτων της Ταϊβάν τη συγκεκριμένη περίοδο ήταν τόσο ισχυρή, που υπερκάλυψε την απώλεια αξίας λόγω τοποθεσίας.
Το μοντέλο μας αποδεικνύει ότι, ενώ η τοποθεσία είναι κρίσιμη, οι μακροοικονομικές τάσεις και η χρονική στιγμή της πώλησης μπορούν να ανατρέψουν τα δεδομένα, δίνοντας υπεραξία ακόμα και σε ακίνητα που υστερούν σε γεωγραφικά χαρακτηριστικά.