În această postare, voi arăta cum să folosesc ahead::mlf
o funcție din pachetul R care are previziuni conformizate. ahead::mlf
Utilizează modele de aplecare a mașinilor (oricare dintre ele), iar seriile de timp au întârziat într -un mod autoregresiv, ca cai de lucru pentru prognoza univariate a seriilor de timp probabilistice.
Această funcție diferă de ahead::dynrmf
Prin faptul că nu selectează automat întârzierea seriei de timp și prin disponibilitatea unei simple funcționalități de generalizare stivuite. Am discutat pentru prima dată despre o metodă de generalizare stivuită pentru prognoză în acest document din 2018, la pagina 79.
În contextul ahead::mlf
algoritmul descris în https://www.researchgate.net/publication/379643443_CONFORMALIZED_PREDICTIVE_SIMULARE_FOR_UNIVARIATE_TIME_SERIES PENTRU SERIA TIMPULUI Predicția conformală este îmbogățită: Previziunile obținute pe setul de calibrare sunt utilizate ca covariate pentru predicțiile setului de teste. Este important să alegeți un model care să nu se înalțeze prea mult aici, deoarece există deja o mulțime de informații furnizate pentru calibrarea setată de acest algoritm. Aleg plasa elastică.
Ce vom acoperi
- Instalarea pachetului
- Rulați exemplele
options(repos = c( techtonique = "https://r-packages.techtonique.net", CRAN = "https://cloud.r-project.org" )) install.packages("ahead") install.packages("glmnet")
În această etapă, merită să încerci alte implementări net elastice (de exemplu, doar glmnet::glmnet
), în special pentru că, din cauza glmnet::cv.glmnet
implementarea, validarea mea încrucișată este un fel de Căutând înapoi. Ei bine, utilizați o validare încrucișată a seriei de timp pentru a reduce volatilitatea prognozei.
(res1 <- ahead::mlf(AirPassengers, h=25L, lags=20L, fit_func=glmnet::cv.glmnet, stack=FALSE)) (res2 <- ahead::mlf(AirPassengers, h=25L, lags=20L, fit_func=glmnet::cv.glmnet, stack=TRUE)) (res3 <- ahead::mlf(USAccDeaths, h=25L, lags=20L, fit_func=glmnet::cv.glmnet, stack=TRUE)) (res4 <- ahead::mlf(USAccDeaths, h=25L, lags=20L, fit_func=glmnet::cv.glmnet, stack=FALSE)) par(mfrow=c(1, 2)) plot(res1, main="Conformal ML without stacking") plot(res2, main="Conformal ML with stacking")
par(mfrow=c(1, 2)) plot(res3, main="Conformal ML with stacking") plot(res4, main="Conformal ML without stacking")