În popularul pachet R forecastexistă 2 tipuri diferite de interfețe:
- O direct interfață pentru funcții precum
forecast::thetaffăcând potrivire și deducere simultan
nile.fcast <- forecast::thetaf(Nile) plot(nile.fcast)
- O interfață pentru potrivire mai întâi și apoi pentru prognoză, cum ar fi
forecast::etsunde trebuie să utilizați, în plusforecast::forecast:
fit <- forecast::ets(USAccDeaths) plot(forecast::forecast(fit))
În această postare, descriu cum să obțineți previziuni probabilistice din pachetul R forecast – și pachete care urmează o filozofie similară, cum ar fi forecastHybrid, ahead etc. –, prin utilizarea unei interfețe unificate (ahead::genericforecast). Apoi, vă prezint ahead::conformalizeo funcție care permite obținerea de prognoze folosind metoda descrisă în Simulări predictive conformalizate pentru serii de timp univariate (mai multe detalii găsiți în aceste slide-uri).
utils::install.packages(c("remotes", "e1071", "forecast", "glmnet"))
remotes::install_github("Techtonique/ahead")
library(ahead)
library(forecast)
y <- fdeaths #AirPassengers #Nile #mdeaths #fdeaths #USAccDeaths
h <- 25L
1 – 1 – Utilizarea parametrilor impliciti
par(mfrow=c(2, 2)) plot(ahead::genericforecast(FUN=forecast::thetaf, y, h)) plot(ahead::genericforecast(FUN=forecast::meanf, y, h)) plot(ahead::genericforecast(FUN=forecast::rwf, y, h)) plot(ahead::genericforecast(FUN=forecast::ets, y, h)) par(mfrow=c(2, 2)) plot(ahead::genericforecast(FUN=forecast::tbats, y, h)) plot(ahead::genericforecast(FUN=HoltWinters, y, h)) plot(ahead::genericforecast(FUN=forecast::Arima, y, h)) plot(ahead::genericforecast(FUN=ahead::dynrmf, y, h))



1 – 2 – Utilizarea parametrilor suplimentari
par(mfrow=c(2, 2))
plot(ahead::genericforecast(FUN=ahead::dynrmf, y=y, h=h,
fit_func=e1071::svm, predict_func=predict))
plot(ahead::genericforecast(FUN=ahead::dynrmf, y=y, h=h,
fit_func=glmnet::cv.glmnet, predict_func=predict))
plot(ahead::genericforecast(FUN=forecast::tbats, y=y, h=h,
use.box.cox = TRUE, use.trend=FALSE))
plot(ahead::genericforecast(FUN=forecast::rwf,
y=y, h=h, lambda=1.1))


2 – 1 – Utilizarea parametrilor impliciti
y <- USAccDeaths par(mfrow=c(3, 2)) obj <- ahead::conformalize(FUN=forecast::thetaf, y, h); plot(obj) obj <- ahead::conformalize(FUN=forecast::meanf, y, h); plot(obj) obj <- ahead::conformalize(FUN=forecast::rwf, y, h); plot(obj) obj <- ahead::conformalize(FUN=forecast::ets, y, h); plot(obj) par(mfrow=c(2, 2)) obj <- ahead::conformalize(FUN=forecast::auto.arima, y, h); plot(obj) obj <- ahead::conformalize(FUN=forecast::tbats, y, h); plot(obj) obj <- ahead::conformalize(FUN=HoltWinters, y, h); plot(obj) obj <- ahead::conformalize(FUN=forecast::Arima, y, h); plot(obj)




2 – 2 – Utilizarea parametrilor suplimentari
y <- AirPassengers par(mfrow=c(2, 2)) obj <- ahead::conformalize(FUN=forecast::thetaf, y, h); plot(obj) obj <- ahead::conformalize(FUN=forecast::rwf, y=y, h=h, drift=TRUE); plot(obj) obj <- ahead::conformalize(FUN=HoltWinters, y=y, h=h, seasonal = "mult"); plot(obj) obj <- ahead::conformalize(FUN=ahead::dynrmf, y=y, h=h, fit_func=glmnet::cv.glmnet, predict_func=predict); plot(obj)


2 – 3 – Utilizarea altor metode de simulare (bazate pe predicție conformă)
y <- fdeaths
par(mfrow=c(3, 2))
obj <- ahead::conformalize(FUN=forecast::thetaf, y=y, h=h, method="block-bootstrap"); plot(obj)
obj <- ahead::conformalize(FUN=forecast::rwf, y=y, h=h, drift=TRUE, method="bootstrap"); plot(obj)
obj <- ahead::conformalize(FUN=forecast::ets, y, h, method="kde"); plot(obj)
obj <- ahead::conformalize(FUN=forecast::tbats, y=y, h=h, method="surrogate"); plot(obj)
obj <- ahead::conformalize(FUN=HoltWinters, y=y, h=h, seasonal = "mult", method="block-bootstrap"); plot(obj)
obj <- ahead::conformalize(FUN=ahead::dynrmf, y=y, h=h, fit_func=glmnet::cv.glmnet,
predict_func=predict, method="surrogate"); plot(obj)


