Importo il dataset
DatiEsame <-read_excel("DatiEsame.xlsx")
Importo la mia serie Gold, Fixing Committee of the London Bullion Market Association, London 3 PM fixed price, US$ per troy ounce come serie storica nel formato ts(data,start,frequency) dove data è la mia serie storica, start indica il periodo di inizio della serie (1990,1), end indica la fine della serie (2020,1), frequency indica la frequenza dei dati (12 in quanto mensili).
serie=ts(data=DatiEsame$`Gold, Fixing Committee of the London Bullion Market Association, London 3 PM fixed price, US$ per troy ounce`,start=c(1990,1),end=c(2020,1),frequency=12)
Faccio un grafico della mia serie tramite il comando autoplot
serie %>% autoplot() +
ylab("US$ per troy ounce") +
ggtitle("Gold, Fixing Committee of the London\nBullion Market Association, London 3 PM\nfixed price") +
theme_minimal()
La trasformazione logaritmica della serie è un particolare tipo di trasformazione di BoxCox dove il parametro lambda è uguale a 0.
logserie=serie%>%BoxCox(lambda=0)
In r questo equivale a sezionare la serie (tramite il comando window, la cui sintassi è uguale a quella del comando ts), in due parti che chiamerò train e test.
train=window(logserie,start=c(1990,1),end=c(2013,12))
test=window(logserie,start=c(2014,1))
Un modo per verificare se una serie temporale è stazionaria consiste nell’eseguire un test Dickey-Fuller aumentato, che utilizza le seguenti ipotesi nulle e alternative:
H0: la serie storica non è stazionaria. In altre parole, ha una struttura dipendente dal tempo e non ha una varianza costante nel tempo.
H1: La serie storica è stazionaria.
Se il p-value del test è inferiore a un certo livello di significatività (α = .05), allora possiamo rifiutare l’ipotesi nulla e concludere che la serie temporale è stazionaria.
La scelta del numero di ritardi (lag) da utilizzare nell’equazione del test Dickey-Fuller Aumentato dipende dalla presenza di autocorrelazione residua nella serie.
In generale, si può scegliere il numero di ritardi utilizzando tecniche di selezione del modello come il criterio di informazione di Akaike (AIC) o il criterio di informazione di Schwarz (BIC). Questi criteri di informazione tengono conto sia dell’aderenza del modello ai dati sia della complessità del modello.
In R il comando VARselect è utilizzato appositamente per selezionare i lag ottimali tranmite il confronto degli AIC, il lag associato al minore AIC è considerato quello ottimale per il modello.
VARselect(train)
## $selection
## AIC(n) HQ(n) SC(n) FPE(n)
## 2 2 1 2
##
## $criteria
## 1 2 3 4 5
## AIC(n) -6.652598341 -6.658230947 -6.655859003 -6.654114654 -6.649032374
## HQ(n) -6.642128027 -6.642525477 -6.634918375 -6.627938869 -6.617621433
## SC(n) -6.626500347 -6.619083957 -6.603663016 -6.588869670 -6.570738393
## FPE(n) 0.001290664 0.001283416 0.001286465 0.001288714 0.001295284
## 6 7 8 9 10
## AIC(n) -6.641851322 -6.635690788 -6.631037414 -6.623865300 -6.616713152
## HQ(n) -6.605205223 -6.593809532 -6.583921001 -6.571513731 -6.559126425
## SC(n) -6.550508344 -6.531298813 -6.513596442 -6.493375332 -6.473174187
## FPE(n) 0.001304624 0.001312693 0.001318824 0.001328328 0.001337876
il valore ottimale a cui è associato l’AIC minimo corrisponde al lag=2.
Ora posso eseguire il test di Dickey Fuller aumentato tramite il comando adf.test
library(tseries)
adf.test(train,k=2)
##
## Augmented Dickey-Fuller Test
##
## data: train
## Dickey-Fuller = -1.58, Lag order = 2, p-value = 0.7531
## alternative hypothesis: stationary
La statistica del test e il p-value risultano essere rispettivamente pari a -1,58 e 0,7531. Poiché il p-value è maggiore di 0,05 non è possibile rifiutare l’ipotesi nulla. Ciò implica che la serie temporale non è stazionaria.
calcolo la differenza prima della serie tramite il comando diff
dtrain=train%>%diff(lag=1)
seleziono il lag associato al minimo AIC
VARselect(dtrain)
## $selection
## AIC(n) HQ(n) SC(n) FPE(n)
## 1 1 1 1
##
## $criteria
## 1 2 3 4 5
## AIC(n) -6.661415783 -6.658697699 -6.65738006 -6.652448166 -6.645244547
## HQ(n) -6.650916920 -6.642949404 -6.63638234 -6.626201009 -6.613747958
## SC(n) -6.635249592 -6.619448412 -6.60504768 -6.587032688 -6.566745973
## FPE(n) 0.001279334 0.001282817 0.00128451 0.001290863 0.001300199
## 6 7 8 9 10
## AIC(n) -6.639118664 -6.63443669 -6.627237841 -6.620052360 -6.6157249
## HQ(n) -6.602372643 -6.59244123 -6.579992958 -6.567558044 -6.5579811
## SC(n) -6.547536994 -6.52977192 -6.509489980 -6.489221403 -6.4718108
## FPE(n) 0.001308194 0.00131434 0.001323845 0.001333403 0.0013392
lag=1
adf.test(dtrain,k=1)
##
## Augmented Dickey-Fuller Test
##
## data: dtrain
## Dickey-Fuller = -12.183, Lag order = 1, p-value = 0.01
## alternative hypothesis: stationary
In questo caso la statistica test e il p-value sono pari a -12,183 e 0,01. Poichè il p-value è minore di 0,05 è possibile rifiutare l’ipotesi nulla e accettare l’ipotesi alternativa di stazionarietà della serie storica.
Tramite la funzione acf2 è possibile visualizzare le funzioni ACF e PACF della nostra serie.
acf2(dtrain)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## ACF 0.12 -0.06 0.06 0.05 0 0.04 0.06 0.01 -0.01 0.06 0.19 0.00 -0.01
## PACF 0.12 -0.08 0.08 0.03 0 0.04 0.05 0.00 -0.01 0.05 0.17 -0.04 0.02
## [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25]
## ACF 0.02 0.05 0.06 0.04 0.06 -0.02 0.09 0.05 0.08 0.04 0.05 0.02
## PACF -0.01 0.04 0.06 0.02 0.04 -0.04 0.10 0.00 0.05 0.02 0.04 0.00
## [,26] [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37]
## ACF 0.07 -0.02 -0.01 0.03 -0.04 0.04 -0.02 -0.03 -0.03 0.07 -0.03 -0.06
## PACF 0.06 -0.08 0.00 -0.01 -0.04 0.01 -0.06 -0.04 -0.05 0.06 -0.08 -0.06
## [,38] [,39] [,40] [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48]
## ACF 0.01 0.08 0.10 -0.04 0.01 0.09 -0.01 -0.02 0.05 0.06 -0.02
## PACF 0.01 0.07 0.09 -0.06 -0.01 0.10 -0.03 0.02 -0.01 0.09 0.00
Dal grafico noto uno spike significativo nel primo lag nel grafico dell’ACF e della PACF.
Testo 3 modelli ARIMA(1,1,0) ARIMA(0,1,1) ARIMA(1,1,1) scelgo il migliore a seconda della diagnostica dell’output del comando sarima.
il comando sarima produce 4 plot: 1) residui standardizzati 2)ACF campionaria dei residui 3) QQ plot 4) p-value della statistica LJung box (test autocorrelazione nei residui)
fit1=sarima(train,1,1,0)
## initial value -3.322699
## iter 2 value -3.330067
## iter 3 value -3.330068
## iter 4 value -3.330069
## iter 5 value -3.330069
## iter 5 value -3.330069
## iter 5 value -3.330069
## final value -3.330069
## converged
## initial value -3.331522
## iter 2 value -3.331523
## iter 3 value -3.331523
## iter 3 value -3.331523
## iter 3 value -3.331523
## final value -3.331523
## converged
fit2=sarima(train,0,1,1)
## initial value -3.324181
## iter 2 value -3.332660
## iter 3 value -3.332899
## iter 4 value -3.332899
## iter 4 value -3.332899
## iter 4 value -3.332899
## final value -3.332899
## converged
## initial value -3.332877
## iter 1 value -3.332877
## final value -3.332877
## converged
Questo secondo modello sembra migliorare, l’ACF dei residui ha meno spike oltre la soglia di significatività , i p-values della statistica ljung box mostrano meno autocorrelazione nei residui, la situazone tuttavia non è ottimale c’è ancora dell’informazione residua che il modello non cattura.
fit3=sarima(train,1,1,1)
## initial value -3.322699
## iter 2 value -3.325347
## iter 3 value -3.330935
## iter 4 value -3.331017
## iter 5 value -3.333825
## iter 6 value -3.334248
## iter 7 value -3.334774
## iter 8 value -3.334902
## iter 9 value -3.334905
## iter 10 value -3.334944
## iter 11 value -3.334954
## iter 12 value -3.334957
## iter 13 value -3.334958
## iter 14 value -3.334960
## iter 15 value -3.334963
## iter 15 value -3.334963
## final value -3.334963
## converged
## initial value -3.335662
## iter 2 value -3.335664
## iter 3 value -3.335666
## iter 4 value -3.335667
## iter 5 value -3.335667
## iter 6 value -3.335667
## iter 7 value -3.335667
## iter 8 value -3.335668
## iter 8 value -3.335668
## final value -3.335668
## converged
La diagnostica grafica non è sufficiente a scegliere il modello migliore. Per tutti e tre i modelli i residui sembrano comportarsi come dei White noise: dal test Ljung Box non noto punti sotto la soglia di significatività , i QQplot indicano una generale situazione di normalità eccetto per i valori estremi, l’ACF campionaria ha un solo spike oltre la soglia di significatività per tutti modelli.Scelgo il modello che minimizza l’AIC corretto.
fit1$AICc
## [1] -3.804117
fit2$AICc
## [1] -3.806824
fit3$AICc
## [1] -3.805288
Come si poteva intuire dalla diagnostica dei residui i tre modelli sono simili anche per l’AICc.Il modello migliore (quello con l’AIC corretto minimo) risulta essere il secondo ARIMA(0,1,1).
Nella libreria forecast di R è implementato il comando auto.arima che seleziona in modo automatico i parametri del modello ARIMA(pdq)(PDQ)[Freq]
fit_auto=auto.arima(train)
fit_auto
## Series: train
## ARIMA(2,2,2)(0,0,1)[12]
##
## Coefficients:
## ar1 ar2 ma1 ma2 sma1
## 0.9172 -0.1512 -1.7962 0.8159 -0.0692
## s.e. 0.1463 0.0656 0.1354 0.1315 0.0631
##
## sigma^2 = 0.001279: log likelihood = 548.12
## AIC=-1084.24 AICc=-1083.93 BIC=-1062.3
R ipotizza un modello più complicato ARIMA(2,2,2)(0,0,1)[12]
Chi fa meglio?
Confronto le previsioni dei due modelli per 73 periodi (il window del test set), faccio un check dei residui tra i due train e test set, e, tramite l’accuracy, scelgo il modello migliore (RMSE minimo).
fit2=train%>%Arima(order=c(0,1,1))
fit_auto=train%>%Arima(order=c(2,2,2),seasonal=c(0,0,1))
forecast2=forecast(fit2,h=73)
forecast_auto=forecast(fit_auto,h=73)
Confronto i residui dei due modelli:
checkresiduals(fit2,plot=F)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(0,1,1)
## Q* = 23.678, df = 23, p-value = 0.4218
##
## Model df: 1. Total lags used: 24
I residui sono white noise (regione di accettazione test Ljung Box)
checkresiduals(fit_auto,plot=F)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(2,2,2)(0,0,1)[12]
## Q* = 15.015, df = 19, p-value = 0.7216
##
## Model df: 5. Total lags used: 24
Anche nel caso stimato da R i residui sono White Noise.
Confronto le accuracy dei due modelli:
accuracy(forecast2,test)
## ME RMSE MAE MPE MAPE MASE
## Training set 0.003302838 0.03578207 0.02635108 0.04912434 0.4195820 0.217433
## Test set 0.038118318 0.08358742 0.06329505 0.52285915 0.8811668 0.522272
## ACF1 Theil's U
## Training set -0.01867082 NA
## Test set 0.86091694 2.696726
accuracy(forecast_auto,test)
## ME RMSE MAE MPE MAPE
## Training set -0.0005153056 0.03533114 0.02577405 -0.003965536 0.4104653
## Test set 0.7642508128 0.90248665 0.76425081 10.655012784 10.6550128
## MASE ACF1 Theil's U
## Training set 0.2126717 0.0103143 NA
## Test set 6.3061301 0.9536696 29.24236
Gli errori del training set sono basati sui residui, mentre quelli del test set sono gli errori di previsione.
A livello previsionale il modello stimato manualmente fà decisamente meglio l’RMSE di previsione è infatti pari a 0.083 contro 0.90 per quello stimato da R.
Plot delle previsioni.
train %>% Arima(order = c(0,1,1), include.constant = F) %>% forecast(h=73) %>% autoplot()+autolayer(test)
train%>%Arima(order=c(2,2,2),seasonal=c(0,0,1)) %>% forecast(h=73) %>% autoplot()+autolayer(test)
Anche graficamente sì può notare come il modello stimato da R diverga con la serie test, mentre quello selezionato manualmente, nella sua semplicità , non diverge dalla serie reale.
train %>% Arima(order = c(0,1,1), include.constant = F)%>%checkresiduals()
##
## Ljung-Box test
##
## data: Residuals from ARIMA(0,1,1)
## Q* = 23.678, df = 23, p-value = 0.4218
##
## Model df: 1. Total lags used: 24
Il grafico dell’ACF dei residui nella condizione ideale dovrebbe mostrare tutte le autocorrelazioni entro i limiti soglia indicando che i residui si comportano come un white noise.
Nel caso in esame c’è uno spike che si discosta significativamente dalla soglia fissata, è necessario un test Ljung Box (K=1) per confermare l’ipotesi di residui white noise: (in R lo script è uguale al precedente, richiedendo plot=FALSE si ha come output il test Ljung Box)
train %>% Arima(order = c(0,1,1), include.constant = F)%>%checkresiduals(plot=FALSE)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(0,1,1)
## Q* = 23.678, df = 23, p-value = 0.4218
##
## Model df: 1. Total lags used: 24
Il test Ljung Box associato ai residui del mio modello ARIMA conferma che le prime 24 autocorrelazioni si comportano come un white noise. Quindi non ci sono informazioni residue nella serie che il mio modello non coglie (in maniera significativa).
Un processo Random Walk con drift è un modello AR(1) con una costante, procedo a modellare la mia serie con un ARIMA(1,0,0) :
fit_RWD=train %>% Arima(order = c(1,0,0), include.drift = TRUE)%>%checkresiduals(plot=TRUE)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(1,0,0) with drift
## Q* = 33.224, df = 23, p-value = 0.07724
##
## Model df: 1. Total lags used: 24
I residui del modello RWD sembrano comportarsi un pò peggio del modello selezionato ARIMA(0,1,1) (gli spike oltre la soglia nel ACF campionario sono 2, dal primo grafico sembra anche esserci un comportamento eteroschedastico dei residui) tuttavia dal plot della PACF si poteva ipotizzare un modello AR(1) (la pacf si interrompe bruscamente dopo il primo spike)
acf2(train)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
## ACF 0.99 0.99 0.98 0.97 0.96 0.96 0.95 0.94 0.93 0.92 0.91 0.90
## PACF 0.99 -0.07 -0.02 -0.05 -0.02 0.02 -0.05 -0.05 -0.05 -0.05 -0.03 -0.08
## [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24]
## ACF 0.88 0.87 0.86 0.85 0.83 0.82 0.81 0.8 0.78 0.77 0.75 0.74
## PACF 0.00 -0.03 -0.02 -0.02 0.03 0.01 -0.02 0.0 -0.06 -0.02 -0.06 0.02
## [,25] [,26] [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36]
## ACF 0.72 0.71 0.69 0.68 0.66 0.65 0.63 0.62 0.60 0.59 0.58 0.56
## PACF -0.03 -0.06 0.00 -0.06 0.01 0.07 0.02 -0.01 0.01 0.03 0.03 -0.02
## [,37] [,38] [,39] [,40] [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48]
## ACF 0.55 0.53 0.52 0.51 0.49 0.48 0.47 0.45 0.44 0.43 0.41 0.40
## PACF -0.03 0.01 -0.01 0.00 -0.02 0.00 -0.03 -0.04 0.01 0.02 -0.01 -0.04
Eseguo test Ljung Box dei residui.
train %>% Arima(order = c(1,0,0), include.drift = TRUE)%>%checkresiduals(plot=FALSE)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(1,0,0) with drift
## Q* = 33.224, df = 23, p-value = 0.07724
##
## Model df: 1. Total lags used: 24
Il P-value è >0,05 (0,077) quindi posso accettare l’ipotesi di residui white noise, non c’è dell’informazione significativa che il modello non coglie.
Quale modello è migliore?
Forecast con RWD
forecast_RWD=train %>% Arima(order = c(1,0,0), include.drift = TRUE)%>%forecast(h=73)
Accuracy del forecast
accuracy(forecast_RWD,test)
## ME RMSE MAE MPE MAPE MASE
## Training set -0.001082403 0.0359294 0.02714593 -0.02518803 0.4333016 0.2239916
## Test set -0.089036895 0.1130631 0.09783015 -1.25186147 1.3744386 0.8072345
## ACF1 Theil's U
## Training set 0.1239690 NA
## Test set 0.8793331 3.705113
Il RMSE del RWD è più alto dell’ARIMA(0,1,1) che ho selezionato come ottimale, ma è sicuramente migliore del RMSE del modello stagionale che ipotizzava R. Mi aspetto che la previsione risultante stia tra questi estremi.
forecast_RWD %>% autoplot()+autolayer(test)
Propongo il comando più computazionalmente oneroso che conosco per stimare serie temporali, TBATS che include: una compone trigonometrica per la stagionalità (di Fourier) Una trasformazione BoxCox per l’eteroschedasticità (il parametro lambda viene stimato da R) la componente erratica ARMA come per le regressioni dinamiche e una modellizzazione del trend (damped se necessario)
fit_tbats=train%>%tbats()
fit_tbats
## BATS(0, {0,0}, 0.982, -)
##
## Call: tbats(y = .)
##
## Parameters
## Lambda: 0
## Alpha: 1.107308
## Beta: 0.02800556
## Damping Parameter: 0.9816
##
## Seed States:
## [,1]
## [1,] 1.783065565
## [2,] -0.001138506
## attr(,"lambda")
## [1] 4.175379e-07
##
## Sigma: 0.005669802
## AIC: -286.2809
Il primo termine del titolo indica il lambda che il modello sceglie nella trasformazione BoxCox (0 quindi logaritmica), dentro le parentesi graffe è inserito l’ordine dell’errore ARMA (0,0 quindi White Noise) la terza parte è il parametro di damping per il trend (0,982) l’ultima parte sono i termini di Fourier che dovrebbero modellizzare la stagionalità (qui assenti).
Come prevede?
forecast_tbats=fit_tbats%>%forecast(h=73)
forecast_tbats%>%autoplot()+autolayer(test)
Questa previsione sembra far meglio del modello ARIMA autoselezionato da R ma peggio dell’ARIMA(0,1,1) scelto manualmente come migliore
accuracy(forecast_tbats,test)
## ME RMSE MAE MPE MAPE MASE
## Training set 0.001660461 0.03568936 0.02626368 0.02748114 0.4186616 0.2167118
## Test set 0.103880179 0.13882594 0.11264303 1.44158207 1.5667262 0.9294613
## ACF1 Theil's U
## Training set -0.01431824 NA
## Test set 0.88816854 4.478967
Il Root Mean Squared Error (0,1388) conferma quanto visto a livello grafico , questo modello fà peggio degli ARIMA(0,1,1) E ARIMA(1,1,0) con drift ma meglio del modello SARIMA di R.
Ho sempre effettuato previsioni 73 passi in avanti per confrontare i vari train set con il test set.
Valori di previsione ARIMA(0,1,1) con intervallo di confidenza 80%
forecast2
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 2014 7.105507 7.059491 7.151524 7.035131 7.175884
## Feb 2014 7.105507 7.035282 7.175733 6.998106 7.212908
## Mar 2014 7.105507 7.017497 7.193517 6.970908 7.240107
## Apr 2014 7.105507 7.002746 7.208268 6.948348 7.262667
## May 2014 7.105507 6.989861 7.221153 6.928642 7.282372
## Jun 2014 7.105507 6.978275 7.232740 6.910922 7.300092
## Jul 2014 7.105507 6.967659 7.243356 6.894686 7.316328
## Aug 2014 7.105507 6.957804 7.253211 6.879615 7.331400
## Sep 2014 7.105507 6.948567 7.262448 6.865487 7.345527
## Oct 2014 7.105507 6.939844 7.271171 6.852146 7.358868
## Nov 2014 7.105507 6.931557 7.279457 6.839474 7.371541
## Dec 2014 7.105507 6.923648 7.287366 6.827378 7.383636
## Jan 2015 7.105507 6.916069 7.294945 6.815787 7.395228
## Feb 2015 7.105507 6.908782 7.302233 6.804642 7.406373
## Mar 2015 7.105507 6.901755 7.309259 6.793895 7.417119
## Apr 2015 7.105507 6.894963 7.316052 6.783507 7.427508
## May 2015 7.105507 6.888382 7.322632 6.773443 7.437571
## Jun 2015 7.105507 6.881996 7.329019 6.763676 7.447338
## Jul 2015 7.105507 6.875787 7.335227 6.754180 7.456834
## Aug 2015 7.105507 6.869741 7.341273 6.744935 7.466080
## Sep 2015 7.105507 6.863847 7.347167 6.735920 7.475094
## Oct 2015 7.105507 6.858093 7.352921 6.727120 7.483894
## Nov 2015 7.105507 6.852470 7.358544 6.718520 7.492494
## Dec 2015 7.105507 6.846969 7.364045 6.710107 7.500907
## Jan 2016 7.105507 6.841583 7.369432 6.701870 7.509145
## Feb 2016 7.105507 6.836304 7.374710 6.693797 7.517217
## Mar 2016 7.105507 6.831128 7.379887 6.685880 7.525135
## Apr 2016 7.105507 6.826046 7.384968 6.678109 7.532906
## May 2016 7.105507 6.821056 7.389958 6.670477 7.540538
## Jun 2016 7.105507 6.816152 7.394863 6.662976 7.548038
## Jul 2016 7.105507 6.811329 7.399685 6.655601 7.555414
## Aug 2016 7.105507 6.806585 7.404430 6.648345 7.562670
## Sep 2016 7.105507 6.801914 7.409100 6.641201 7.569813
## Oct 2016 7.105507 6.797314 7.413700 6.634167 7.576848
## Nov 2016 7.105507 6.792782 7.418232 6.627235 7.583779
## Dec 2016 7.105507 6.788315 7.422700 6.620403 7.590611
## Jan 2017 7.105507 6.783909 7.427105 6.613666 7.597349
## Feb 2017 7.105507 6.779563 7.431451 6.607019 7.603995
## Mar 2017 7.105507 6.775275 7.435740 6.600460 7.610554
## Apr 2017 7.105507 6.771041 7.439973 6.593985 7.617029
## May 2017 7.105507 6.766860 7.444154 6.587592 7.623423
## Jun 2017 7.105507 6.762731 7.448284 6.581276 7.629739
## Jul 2017 7.105507 6.758650 7.452364 6.575035 7.635979
## Aug 2017 7.105507 6.754617 7.456398 6.568867 7.642148
## Sep 2017 7.105507 6.750630 7.460385 6.562769 7.648246
## Oct 2017 7.105507 6.746687 7.464328 6.556739 7.654276
## Nov 2017 7.105507 6.742787 7.468228 6.550774 7.660241
## Dec 2017 7.105507 6.738928 7.472087 6.544873 7.666142
## Jan 2018 7.105507 6.735109 7.475905 6.539033 7.671982
## Feb 2018 7.105507 6.731330 7.479684 6.533253 7.677762
## Mar 2018 7.105507 6.727588 7.483426 6.527530 7.683484
## Apr 2018 7.105507 6.723883 7.487131 6.521864 7.689151
## May 2018 7.105507 6.720214 7.490801 6.516252 7.694762
## Jun 2018 7.105507 6.716579 7.494435 6.510693 7.700321
## Jul 2018 7.105507 6.712978 7.498036 6.505186 7.705829
## Aug 2018 7.105507 6.709410 7.501605 6.499728 7.711286
## Sep 2018 7.105507 6.705873 7.505141 6.494320 7.716695
## Oct 2018 7.105507 6.702368 7.508647 6.488959 7.722056
## Nov 2018 7.105507 6.698893 7.512122 6.483644 7.727371
## Dec 2018 7.105507 6.695447 7.515568 6.478374 7.732641
## Jan 2019 7.105507 6.692030 7.518985 6.473148 7.737867
## Feb 2019 7.105507 6.688641 7.522374 6.467965 7.743050
## Mar 2019 7.105507 6.685279 7.525736 6.462823 7.748191
## Apr 2019 7.105507 6.681944 7.529071 6.457723 7.753292
## May 2019 7.105507 6.678635 7.532380 6.452662 7.758352
## Jun 2019 7.105507 6.675351 7.535663 6.447640 7.763374
## Jul 2019 7.105507 6.672092 7.538922 6.442657 7.768358
## Aug 2019 7.105507 6.668858 7.542156 6.437710 7.773304
## Sep 2019 7.105507 6.665648 7.545367 6.432800 7.778215
## Oct 2019 7.105507 6.662460 7.548554 6.427925 7.783089
## Nov 2019 7.105507 6.659296 7.551719 6.423086 7.787929
## Dec 2019 7.105507 6.656153 7.554861 6.418280 7.792735
## Jan 2020 7.105507 6.653033 7.557982 6.413508 7.797507
Valori di previsione RWD con intervallo di confidenza 80%
forecast_RWD
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 2014 7.114215 7.067928 7.160502 7.043425 7.185005
## Feb 2014 7.117410 7.052132 7.182688 7.017575 7.217245
## Mar 2014 7.120609 7.040881 7.200338 6.998676 7.242543
## Apr 2014 7.123813 7.032005 7.215621 6.983405 7.264221
## May 2014 7.127021 7.024660 7.229383 6.970473 7.283570
## Jun 2014 7.130233 7.018411 7.242056 6.959215 7.301252
## Jul 2014 7.133450 7.012999 7.253901 6.949236 7.317664
## Aug 2014 7.136671 7.008257 7.265086 6.940278 7.333064
## Sep 2014 7.139897 7.004065 7.275728 6.932160 7.347633
## Oct 2014 7.143126 7.000338 7.285914 6.924751 7.361502
## Nov 2014 7.146360 6.997011 7.295709 6.917950 7.374770
## Dec 2014 7.149598 6.994032 7.305164 6.911681 7.387516
## Jan 2015 7.152840 6.991362 7.314319 6.905880 7.399800
## Feb 2015 7.156087 6.988967 7.323207 6.900499 7.411675
## Mar 2015 7.159337 6.986819 7.331855 6.895494 7.423180
## Apr 2015 7.162592 6.984897 7.340286 6.890831 7.434352
## May 2015 7.165851 6.983181 7.348520 6.886481 7.445220
## Jun 2015 7.169113 6.981653 7.356574 6.882418 7.455809
## Jul 2015 7.172380 6.980300 7.364460 6.878619 7.466141
## Aug 2015 7.175651 6.979109 7.372193 6.875066 7.476236
## Sep 2015 7.178926 6.978069 7.379783 6.871742 7.486111
## Oct 2015 7.182205 6.977170 7.387240 6.868631 7.495779
## Nov 2015 7.185488 6.976403 7.394573 6.865720 7.505256
## Dec 2015 7.188775 6.975761 7.401789 6.862998 7.514551
## Jan 2016 7.192065 6.975236 7.408895 6.860453 7.523678
## Feb 2016 7.195360 6.974822 7.415898 6.858076 7.532644
## Mar 2016 7.198658 6.974513 7.422804 6.855858 7.541459
## Apr 2016 7.201961 6.974305 7.429617 6.853791 7.550131
## May 2016 7.205267 6.974191 7.436343 6.851867 7.558667
## Jun 2016 7.208577 6.974168 7.442985 6.850080 7.567074
## Jul 2016 7.211891 6.974232 7.449549 6.848424 7.575358
## Aug 2016 7.215208 6.974379 7.456037 6.846892 7.583525
## Sep 2016 7.218529 6.974605 7.462454 6.845480 7.591579
## Oct 2016 7.221855 6.974908 7.468801 6.844182 7.599527
## Nov 2016 7.225183 6.975283 7.475083 6.842994 7.607373
## Dec 2016 7.228516 6.975729 7.481302 6.841911 7.615120
## Jan 2017 7.231852 6.976242 7.487461 6.840931 7.622773
## Feb 2017 7.235191 6.976821 7.493562 6.840048 7.630335
## Mar 2017 7.238535 6.977462 7.499607 6.839259 7.637810
## Apr 2017 7.241882 6.978165 7.505599 6.838561 7.645202
## May 2017 7.245232 6.978926 7.511539 6.837952 7.652513
## Jun 2017 7.248586 6.979743 7.517429 6.837427 7.659746
## Jul 2017 7.251944 6.980616 7.523272 6.836984 7.666904
## Aug 2017 7.255305 6.981542 7.529068 6.836621 7.673989
## Sep 2017 7.258670 6.982520 7.534820 6.836334 7.681005
## Oct 2017 7.262038 6.983547 7.540529 6.836123 7.687953
## Nov 2017 7.265410 6.984623 7.546196 6.835984 7.694835
## Dec 2017 7.268785 6.985746 7.551823 6.835915 7.701654
## Jan 2018 7.272163 6.986916 7.557411 6.835915 7.708411
## Feb 2018 7.275545 6.988129 7.562961 6.835981 7.715109
## Mar 2018 7.278930 6.989386 7.568474 6.836111 7.721749
## Apr 2018 7.282319 6.990686 7.573952 6.836304 7.728334
## May 2018 7.285711 6.992026 7.579396 6.836559 7.734863
## Jun 2018 7.289106 6.993406 7.584806 6.836872 7.741340
## Jul 2018 7.292505 6.994826 7.590184 6.837244 7.747766
## Aug 2018 7.295907 6.996283 7.595530 6.837672 7.754142
## Sep 2018 7.299312 6.997778 7.600846 6.838155 7.760469
## Oct 2018 7.302721 6.999309 7.606132 6.838692 7.766749
## Nov 2018 7.306132 7.000875 7.611390 6.839282 7.772983
## Dec 2018 7.309547 7.002476 7.616619 6.839922 7.779172
## Jan 2019 7.312966 7.004111 7.621820 6.840613 7.785318
## Feb 2019 7.316387 7.005778 7.626995 6.841352 7.791422
## Mar 2019 7.319811 7.007478 7.632145 6.842139 7.797484
## Apr 2019 7.323239 7.009210 7.637269 6.842972 7.803506
## May 2019 7.326670 7.010972 7.642368 6.843852 7.809488
## Jun 2019 7.330104 7.012764 7.647443 6.844775 7.815433
## Jul 2019 7.333541 7.014587 7.652495 6.845742 7.821339
## Aug 2019 7.336981 7.016438 7.657524 6.846752 7.827210
## Sep 2019 7.340424 7.018317 7.662531 6.847804 7.833044
## Oct 2019 7.343870 7.020224 7.667516 6.848897 7.838844
## Nov 2019 7.347320 7.022159 7.672480 6.850029 7.844610
## Dec 2019 7.350772 7.024120 7.677424 6.851201 7.850343
## Jan 2020 7.354227 7.026108 7.682347 6.852411 7.856043
Valori di previsione TBAS con intervallo di confidenza 80%
forecast_tbats
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 2014 7.104490 7.053055 7.156300 7.025977 7.183879
## Feb 2014 7.101813 7.024189 7.180294 6.983441 7.222190
## Mar 2014 7.099186 7.001483 7.198252 6.950307 7.251253
## Apr 2014 7.096608 6.981677 7.213431 6.921592 7.276050
## May 2014 7.094079 6.963633 7.226968 6.895553 7.298321
## Jun 2014 7.091597 6.946796 7.239416 6.871344 7.318910
## Jul 2014 7.089162 6.930850 7.251089 6.848482 7.338300
## Aug 2014 7.086772 6.915595 7.262185 6.826660 7.356794
## Sep 2014 7.084427 6.900896 7.272839 6.805673 7.374598
## Oct 2014 7.082126 6.886655 7.283144 6.785373 7.391857
## Nov 2014 7.079868 6.872803 7.293171 6.765653 7.408676
## Dec 2014 7.077652 6.859286 7.302970 6.746430 7.425135
## Jan 2015 7.075478 6.846061 7.312583 6.727642 7.441298
## Feb 2015 7.073344 6.833095 7.322040 6.709236 7.457212
## Mar 2015 7.071250 6.820362 7.331368 6.691174 7.472917
## Apr 2015 7.069196 6.807839 7.340586 6.673420 7.488443
## May 2015 7.067179 6.795509 7.349711 6.655948 7.503818
## Jun 2015 7.065201 6.783355 7.358757 6.638736 7.519062
## Jul 2015 7.063259 6.771366 7.367735 6.621762 7.534193
## Aug 2015 7.061354 6.759529 7.376655 6.605011 7.549226
## Sep 2015 7.059484 6.747836 7.385525 6.588468 7.564173
## Oct 2015 7.057649 6.736278 7.394351 6.572122 7.579045
## Nov 2015 7.055848 6.724849 7.403140 6.555961 7.593852
## Dec 2015 7.054081 6.713541 7.411895 6.539976 7.608601
## Jan 2016 7.052347 6.702349 7.420622 6.524158 7.623298
## Feb 2016 7.050645 6.691268 7.429324 6.508501 7.637949
## Mar 2016 7.048975 6.680294 7.438003 6.492998 7.652559
## Apr 2016 7.047336 6.669423 7.446662 6.477642 7.667133
## May 2016 7.045727 6.658651 7.455305 6.462430 7.681674
## Jun 2016 7.044149 6.647976 7.463931 6.447355 7.696184
## Jul 2016 7.042600 6.637393 7.472544 6.432414 7.710668
## Aug 2016 7.041079 6.626901 7.481144 6.417603 7.725127
## Sep 2016 7.039587 6.616497 7.489732 6.402919 7.739562
## Oct 2016 7.038123 6.606178 7.498311 6.388357 7.753977
## Nov 2016 7.036686 6.595943 7.506879 6.373916 7.768372
## Dec 2016 7.035276 6.585790 7.515439 6.359591 7.782749
## Jan 2017 7.033892 6.575717 7.523990 6.345382 7.797109
## Feb 2017 7.032533 6.565722 7.532534 6.331284 7.811452
## Mar 2017 7.031200 6.555804 7.541070 6.317297 7.825780
## Apr 2017 7.029892 6.545961 7.549599 6.303418 7.840092
## May 2017 7.028608 6.536192 7.558121 6.289645 7.854391
## Jun 2017 7.027348 6.526495 7.566636 6.275976 7.868675
## Jul 2017 7.026111 6.516870 7.575145 6.262409 7.882946
## Aug 2017 7.024897 6.507315 7.583647 6.248944 7.897203
## Sep 2017 7.023706 6.497829 7.592143 6.235577 7.911448
## Oct 2017 7.022537 6.488411 7.600632 6.222309 7.925679
## Nov 2017 7.021389 6.479060 7.609114 6.209136 7.939898
## Dec 2017 7.020263 6.469775 7.617590 6.196059 7.954104
## Jan 2018 7.019158 6.460555 7.626060 6.183075 7.968297
## Feb 2018 7.018073 6.451399 7.634522 6.170184 7.982477
## Mar 2018 7.017009 6.442307 7.642978 6.157384 7.996644
## Apr 2018 7.015964 6.433277 7.651427 6.144674 8.010799
## May 2018 7.014938 6.424309 7.659868 6.132053 8.024940
## Jun 2018 7.013932 6.415402 7.668302 6.119520 8.039068
## Jul 2018 7.012944 6.406555 7.676729 6.107074 8.053183
## Aug 2018 7.011974 6.397767 7.685148 6.094713 8.067284
## Sep 2018 7.011023 6.389038 7.693559 6.082437 8.081372
## Oct 2018 7.010089 6.380367 7.701962 6.070246 8.095446
## Nov 2018 7.009172 6.371754 7.710357 6.058137 8.109506
## Dec 2018 7.008273 6.363197 7.718743 6.046110 8.123552
## Jan 2019 7.007390 6.354697 7.727121 6.034164 8.137583
## Feb 2019 7.006523 6.346252 7.735490 6.022298 8.151600
## Mar 2019 7.005673 6.337862 7.743850 6.010512 8.165602
## Apr 2019 7.004838 6.329526 7.752201 5.998804 8.179589
## May 2019 7.004019 6.321243 7.760542 5.987175 8.193560
## Jun 2019 7.003214 6.313014 7.768874 5.975621 8.207516
## Jul 2019 7.002425 6.304837 7.777196 5.964144 8.221457
## Aug 2019 7.001650 6.296712 7.785508 5.952743 8.235382
## Sep 2019 7.000890 6.288639 7.793810 5.941416 8.249290
## Oct 2019 7.000144 6.280617 7.802102 5.930162 8.263182
## Nov 2019 6.999411 6.272645 7.810383 5.918982 8.277058
## Dec 2019 6.998692 6.264722 7.818654 5.907874 8.290917
## Jan 2020 6.997987 6.256849 7.826914 5.896838 8.304760
Ho sempre seguito quest’approccio nella valutazione dei vari modelli.
Il modello più accurato risulta essere l’ARIMA(0,1,1) selezionato.
Produco la previsione della serie iniziale (logserie) 12 passi in avanti
logserie %>% Arima(order = c(0,1,1), include.constant = F) %>% forecast(h=12) %>% autoplot()