Δεδομένα
Μια υπηρεσία θέλει να προβλέψει τη μέση ημερήσια θερμοκρασία των επόμενων εβδομάδων με βάση το ιστορικό. Τα δεδομένα είναι διατεταγμένα χρονικά και εμφανίζουν επαναλαμβανόμενα εποχικά μοτίβα — η σειρά των παρατηρήσεων έχει σημασία.
#install.packages(c("Rtools","forecast", "tseries", "ggplot2", "gridExtra"))
# Φόρτωση πακέτων
library(forecast) # το κεντρικό πακέτο για time series ## Warning: package 'forecast' was built under R version 4.5.3
## Warning: package 'tseries' was built under R version 4.5.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Warning: package 'ggplot2' was built under R version 4.5.3
## Warning: package 'gridExtra' was built under R version 4.5.3
## Warning: package 'ggfortify' was built under R version 4.5.3
## Registered S3 methods overwritten by 'ggfortify':
## method from
## autoplot.Arima forecast
## autoplot.acf forecast
## autoplot.ar forecast
## autoplot.bats forecast
## autoplot.decomposed.ts forecast
## autoplot.ets forecast
## autoplot.forecast forecast
## autoplot.stl forecast
## autoplot.ts forecast
## fitted.ar forecast
## fortify.ts forecast
## residuals.ar forecast
Για την ανάλυση του dataset “Daily Climate time series data” θα χρησιμοποιηθεί η μέθοδος Time Series Forecasting καθώς παρατηρείται πως οι μεταβλητές είναι εξαρτημένες χρονικά και παρουσιάζουν εποχικότητα.
train <- read.csv("DailyDelhiClimateTrain.csv")
ds <- ts(train, start=c(2013, 1), end=c(2019, 12), frequency=12)
class(ds) ## [1] "mts" "ts" "matrix" "array"
## [1] 2013 1
## [1] 2019 12
## [1] 12
## [1] 420
## date meantemp humidity wind_speed meanpressure
## Jan 2013 1 10.000000 84.50000 0.0000000 1015.667
## Feb 2013 2 7.400000 92.00000 2.9800000 1017.800
## Mar 2013 3 7.166667 87.00000 4.6333333 1018.667
## Apr 2013 4 8.666667 71.33333 1.2333333 1017.167
## May 2013 5 6.000000 86.83333 3.7000000 1016.500
## Jun 2013 6 7.000000 82.80000 1.4800000 1018.000
## Jul 2013 7 7.000000 78.60000 6.3000000 1020.000
## Aug 2013 8 8.857143 63.71429 7.1428571 1018.714
## Sep 2013 9 14.000000 51.25000 12.5000000 1017.000
## Oct 2013 10 11.000000 62.00000 7.4000000 1015.667
## Nov 2013 11 15.714286 51.28571 10.5714286 1016.143
## Dec 2013 12 14.000000 74.00000 13.2285714 1015.571
## Jan 2014 13 15.833333 75.16667 4.6333333 1013.333
## Feb 2014 14 12.833333 88.16667 0.6166667 1015.167
## Mar 2014 15 14.714286 71.85714 0.5285714 1015.857
## Apr 2014 16 13.833333 86.66667 0.0000000 1016.667
## May 2014 17 16.500000 80.83333 5.2500000 1015.833
## Jun 2014 18 13.833333 92.16667 8.9500000 1014.500
## Jul 2014 19 12.500000 76.66667 5.8833333 1021.667
## Aug 2014 20 11.285714 75.28571 8.4714286 1020.286
## Sep 2014 21 11.200000 77.00000 2.2200000 1021.000
## Oct 2014 22 9.500000 79.66667 3.0833333 1021.800
## Nov 2014 23 14.000000 60.16667 4.0166667 1020.500
## Dec 2014 24 13.833333 60.66667 6.1666667 1020.500
autoplot(ds)+
ggtitle("Ημερήσια δεδομένα Δελχί 2013–2018") +
xlab("Ημερομηνία") +
ylab("Δείκτης") +
theme_minimal()Υπάρχει εμφανής τάση και εποχικότητα στη μέση θερμοκρασία· πώς τα αναδεικνύετε (decomposition);
#dec_mult <- decompose(ds, type = "multiplicative")
##ggtitle("Multiplicative Decomposition — AirPassengers")Ναι υπάρχει υψηλή τάση και εποχικότητα καθώς παρατηρούμε τα ίδια μοτίβα ανά περιόδους.
Είναι η σειρά στάσιμη (stationary); Πώς το ελέγχετε και τι μετασχηματισμοί χρειάζονται;
Ο έλεγχος γίνεται με την παραπάνω συνάρτηση. Για να γίνει στάσιμη:
Τι δείχνουν τα ACF/PACF για την εξάρτηση από προηγούμενες τιμές;
Προβλέψτε τη θερμοκρασία των επόμενων 30 ημερών και αξιολογήστε την (π.χ. RMSE/MAE σε hold-out).
Πόσο βελτιώνει την πρόβλεψη η ρητή μοντελοποίηση της εποχικότητας;