library(readxl)
## Warning: package 'readxl' was built under R version 4.1.3
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.1.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.1.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(forecast)
## Warning: package 'forecast' was built under R version 4.1.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
IVAE_03_22 <- read_excel("C:/Users/erick/Desktop/IVAE.xlsx",
col_names = FALSE, skip = 6, n_max = 10)
## New names:
## * `` -> `...1`
## * `` -> `...2`
## * `` -> `...3`
## * `` -> `...4`
## * `` -> `...5`
## * `` -> `...6`
## * `` -> `...7`
## * `` -> `...8`
## * `` -> `...9`
## * `` -> `...10`
## * `` -> `...11`
## * `` -> `...12`
## * `` -> `...13`
## * `` -> `...14`
## * `` -> `...15`
## * `` -> `...16`
## * `` -> `...17`
## * `` -> `...18`
## * `` -> `...19`
## * `` -> `...20`
## * `` -> `...21`
## * `` -> `...22`
## * `` -> `...23`
## * `` -> `...24`
## * `` -> `...25`
## * `` -> `...26`
## * `` -> `...27`
## * `` -> `...28`
## * `` -> `...29`
## * `` -> `...30`
## * `` -> `...31`
## * `` -> `...32`
## * `` -> `...33`
## * `` -> `...34`
## * `` -> `...35`
## * `` -> `...36`
## * `` -> `...37`
## * `` -> `...38`
## * `` -> `...39`
## * `` -> `...40`
## * `` -> `...41`
## * `` -> `...42`
## * `` -> `...43`
## * `` -> `...44`
## * `` -> `...45`
## * `` -> `...46`
## * `` -> `...47`
## * `` -> `...48`
## * `` -> `...49`
## * `` -> `...50`
## * `` -> `...51`
## * `` -> `...52`
## * `` -> `...53`
## * `` -> `...54`
## * `` -> `...55`
## * `` -> `...56`
## * `` -> `...57`
## * `` -> `...58`
## * `` -> `...59`
## * `` -> `...60`
## * `` -> `...61`
## * `` -> `...62`
## * `` -> `...63`
## * `` -> `...64`
## * `` -> `...65`
## * `` -> `...66`
## * `` -> `...67`
## * `` -> `...68`
## * `` -> `...69`
## * `` -> `...70`
## * `` -> `...71`
## * `` -> `...72`
## * `` -> `...73`
## * `` -> `...74`
## * `` -> `...75`
## * `` -> `...76`
## * `` -> `...77`
## * `` -> `...78`
## * `` -> `...79`
## * `` -> `...80`
## * `` -> `...81`
## * `` -> `...82`
## * `` -> `...83`
## * `` -> `...84`
## * `` -> `...85`
## * `` -> `...86`
## * `` -> `...87`
## * `` -> `...88`
## * `` -> `...89`
## * `` -> `...90`
## * `` -> `...91`
## * `` -> `...92`
## * `` -> `...93`
## * `` -> `...94`
## * `` -> `...95`
## * `` -> `...96`
## * `` -> `...97`
## * `` -> `...98`
## * `` -> `...99`
## * `` -> `...100`
## * `` -> `...101`
## * `` -> `...102`
## * `` -> `...103`
## * `` -> `...104`
## * `` -> `...105`
## * `` -> `...106`
## * `` -> `...107`
## * `` -> `...108`
## * `` -> `...109`
## * `` -> `...110`
## * `` -> `...111`
## * `` -> `...112`
## * `` -> `...113`
## * `` -> `...114`
## * `` -> `...115`
## * `` -> `...116`
## * `` -> `...117`
## * `` -> `...118`
## * `` -> `...119`
## * `` -> `...120`
## * `` -> `...121`
## * `` -> `...122`
## * `` -> `...123`
## * `` -> `...124`
## * `` -> `...125`
## * `` -> `...126`
## * `` -> `...127`
## * `` -> `...128`
## * `` -> `...129`
## * `` -> `...130`
## * `` -> `...131`
## * `` -> `...132`
## * `` -> `...133`
## * `` -> `...134`
## * `` -> `...135`
## * `` -> `...136`
## * `` -> `...137`
## * `` -> `...138`
## * `` -> `...139`
## * `` -> `...140`
## * `` -> `...141`
## * `` -> `...142`
## * `` -> `...143`
## * `` -> `...144`
## * `` -> `...145`
## * `` -> `...146`
## * `` -> `...147`
## * `` -> `...148`
## * `` -> `...149`
## * `` -> `...150`
## * `` -> `...151`
## * `` -> `...152`
## * `` -> `...153`
## * `` -> `...154`
## * `` -> `...155`
## * `` -> `...156`
## * `` -> `...157`
## * `` -> `...158`
## * `` -> `...159`
## * `` -> `...160`
data.ivae<-pivot_longer(data = IVAE_03_22[1,],names_to = "vars",cols = 2:160,values_to = "indice") %>% select("indice")
data.ivae.ts<- data.ivae %>% ts(start = c(2009,1),frequency = 12)
library(forecast)
descompocicion_aditiva<-decompose(data.ivae.ts,type = "additive")
Yt<-descompocicion_aditiva$x
TC<-descompocicion_aditiva$trend
library(forecast)
#Estimar el modelo
ModeloHW<-HoltWinters(x = Yt,
seasonal = "multiplicative",
optim.start = c(0.9,0.9,0.9))
ModeloHW
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component.
##
## Call:
## HoltWinters(x = Yt, seasonal = "multiplicative", optim.start = c(0.9, 0.9, 0.9))
##
## Smoothing parameters:
## alpha: 0.8472467
## beta : 0
## gamma: 1
##
## Coefficients:
## [,1]
## a 118.3719784
## b 0.1600947
## s1 0.9529095
## s2 1.0192349
## s3 1.0440936
## s4 0.9962326
## s5 1.0009929
## s6 0.9838373
## s7 0.9554392
## s8 1.0145286
## s9 1.0872315
## s10 0.9748891
## s11 0.9626701
## s12 1.0059813
#Generar el pronóstico:
PronosticosHW<-forecast(object = ModeloHW,h = 12,level = c(0.95))
PronosticosHW
## Point Forecast Lo 95 Hi 95
## Apr 2022 112.9503 107.46492 118.4358
## May 2022 120.9752 113.57246 128.3779
## Jun 2022 124.0929 115.22236 132.9634
## Jul 2022 118.5640 108.86876 128.2592
## Aug 2022 119.2908 108.50116 130.0804
## Sep 2022 117.4038 105.81297 128.9947
## Oct 2022 114.1680 101.97016 126.3657
## Nov 2022 121.3911 107.66977 135.1125
## Dec 2022 130.2643 114.88360 145.6450
## Jan 2023 116.9603 102.34981 131.5708
## Feb 2023 115.6485 100.48405 130.8129
## Mar 2023 121.0126 83.19827 158.8270
#Gráfico de la serie original y del pronóstico.
PronosticosHW %>% autoplot()

library(TSstudio)
## Warning: package 'TSstudio' was built under R version 4.1.3
library(forecast)
ts_plot(Yt,Xtitle = "Años/Meses")
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.1.3
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
library(magrittr)
## Warning: package 'magrittr' was built under R version 4.1.3
##
## Attaching package: 'magrittr'
## The following object is masked from 'package:tidyr':
##
## extract
d<-ndiffs(Yt)
D<-nsdiffs(Yt)
ordenes_integracion<-c(d,D)
names(ordenes_integracion)<-c("d","D")
ordenes_integracion %>% kable(caption = "Ordenes de Integración") %>% kable_material()
Ordenes de Integración
|
|
x
|
|
d
|
1
|
|
D
|
1
|
#Gráfico de la serie diferenciada
Yt %>%
diff(lag = 12,diffences=D) %>%
diff(diffences=d) %>%
ts_plot(title = "Yt estacionaria")
Yt %>%
diff(lag = 12,diffences=D) %>%
diff(diffences=d) %>%
ts_cor(lag.max = 36)
library(forecast)
library(ggthemes)
## Warning: package 'ggthemes' was built under R version 4.1.3
modelo_estimado <- Yt %>%
Arima(order = c(0, 1, 0),
seasonal = c(1, 1, 1))
summary(modelo_estimado)
## Series: .
## ARIMA(0,1,0)(1,1,1)[12]
##
## Coefficients:
## sar1 sma1
## -0.1022 -0.7232
## s.e. 0.1266 0.1135
##
## sigma^2 = 6.779: log likelihood = -351.22
## AIC=708.43 AICc=708.6 BIC=717.38
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.05202814 2.477766 1.68543 0.02782791 1.663587 0.4366552
## ACF1
## Training set 0.06837002
modelo_estimado %>% autoplot(type="both")+theme_solarized()

modelo_estimado %>% check_res(lag.max = 36)
## Warning: Ignoring 36 observations
## Warning: Ignoring 34 observations
## Warning: Ignoring 4 observations
Yt_Sarima<-modelo_estimado$fitted
Yt_HW<-PronosticosHW$fitted
grafico_comparativo<-cbind(Yt,Yt_Sarima,Yt_HW)
ts_plot(grafico_comparativo)
library(tsibble)
## Warning: package 'tsibble' was built under R version 4.1.3
##
## Attaching package: 'tsibble'
## The following objects are masked from 'package:base':
##
## intersect, setdiff, union
library(feasts)
## Warning: package 'feasts' was built under R version 4.1.3
## Loading required package: fabletools
## Warning: package 'fabletools' was built under R version 4.1.3
##
## Attaching package: 'fabletools'
## The following objects are masked from 'package:forecast':
##
## accuracy, forecast
library(fable)
## Warning: package 'fable' was built under R version 4.1.3
library(fabletools)
library(tidyr)
library(dplyr)
a<-Yt %>% as_tsibble() %>%
model(arima_original=ARIMA(value ~ pdq(0, 1, 0) + PDQ(1, 1, 1)),
arima_010_011 = ARIMA(value ~ pdq(0, 1, 0) + PDQ(0, 1, 1)),
arima_010_110 = ARIMA(value ~ pdq(0, 1, 0) + PDQ(1, 1, 0)),
arima_automatico=ARIMA(value,ic="bic",stepwise = FALSE)
)
print(a)
## # A mable: 1 x 4
## arima_original arima_010_011 arima_010_110
## <model> <model> <model>
## 1 <ARIMA(0,1,0)(1,1,1)[12]> <ARIMA(0,1,0)(0,1,1)[12]> <ARIMA(0,1,0)(1,1,0)[12]>
## # ... with 1 more variable: arima_automatico <model>
a %>% pivot_longer(everything(), names_to = "Model name",
values_to = "Orders") %>% glance() %>%
arrange(AICc) ->tabla
tabla
## # A tibble: 4 x 9
## `Model name` .model sigma2 log_lik AIC AICc BIC ar_roots ma_roots
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <list> <list>
## 1 arima_automatico Orders 6.13 -347. 702. 702. 714. <cpl [1]> <cpl [12]>
## 2 arima_010_011 Orders 6.72 -352. 707. 707. 713. <cpl [0]> <cpl [12]>
## 3 arima_original Orders 6.78 -351. 708. 709. 717. <cpl [12]> <cpl [12]>
## 4 arima_010_110 Orders 7.99 -361. 726. 726. 731. <cpl [12]> <cpl [0]>
library(forecast)
ma2_12 <- ma(data.ivae.ts, 12, centre = TRUE)
library(magrittr)
Yt <- data.ivae.ts
Tt <- ma2_12
SI <- Yt - Tt
St <- tapply(SI, cycle(SI), mean, na.rm = TRUE)
#Los factores estacionales deben sumar "0" en el modelo aditivo
St <- St - sum(St) / 12
#Generar la serie de factores para cada valor de la serie original
St <-
rep(St, len = length(Yt)) %>% ts(start = c(2009, 1), frequency = 12)
It<-Yt-Tt-St
library(tsibble)
library(feasts)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.1.3
Yt %>% as_tsibble() %>%
model(
classical_decomposition(value, type = "additive")
) %>%
components() %>%
autoplot() +
labs(title = "Descomposición Clásica Aditiva, IVAE")+xlab("Años/Meses")
## Warning: Removed 6 row(s) containing missing values (geom_path).

library(forecast)
library(dplyr)
library(tsibble)
library(fable)
library(fabletools)
Yt<-Yt %>% as_tsibble() %>% rename(IVAE=value)
data.cross.validation<-Yt %>%
as_tsibble() %>%
stretch_tsibble(.init = 60,.step = 1)
TSCV<-data.cross.validation %>%
model(ARIMA(IVAE ~ pdq(0, 1, 0) + PDQ(1, 1, 1))) %>%
forecast(h=1) %>% accuracy(Yt)
## Warning: The future dataset is incomplete, incomplete out-of-sample data will be treated as missing.
## 1 observation is missing at 2022 abr.
print(TSCV)
## # A tibble: 1 x 10
## .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ARIMA(IVAE ~ pdq(0, ~ Test 0.0506 2.94 2.09 0.00243 2.00 0.542 0.494 0.155
#El MAPE es de 2.004%, quiere decir que de cada 100 valores pronósticados, la distancia o el error cometido es de 2.004%
PIB TRIMESTRAL
PIBTRI <- read_excel("C:/Users/erick/Desktop/pibrimestral.xlsx",
col_types=c("skip", "numeric"))
data.pib.ts<- ts(data=PIBTRI, start = c(2009,1), frequency=4)
library(forecast)
descompocicion_aditiva2<-decompose(data.pib.ts,type = "additive")
Yt2<-descompocicion_aditiva2$x
TC2<-descompocicion_aditiva2$trend
library(forecast)
#Estimar el modelo
ModeloHW2<-HoltWinters(x = Yt2,
seasonal = "multiplicative",
optim.start = c(0.9,0.9,0.9))
ModeloHW2
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component.
##
## Call:
## HoltWinters(x = Yt2, seasonal = "multiplicative", optim.start = c(0.9, 0.9, 0.9))
##
## Smoothing parameters:
## alpha: 0.8742302
## beta : 0
## gamma: 0
##
## Coefficients:
## [,1]
## a 7429.8128051
## b 48.3963750
## s1 0.9751646
## s2 1.0058150
## s3 0.9783521
## s4 1.0406683
#Generar el pronóstico:
PronosticosHW2<-forecast(object = ModeloHW2,h = 4,level = c(0.95))
PronosticosHW2
## Point Forecast Lo 95 Hi 95
## 2022 Q1 7292.485 6847.413 7737.557
## 2022 Q2 7570.373 6930.977 8209.768
## 2022 Q3 7411.019 6646.235 8175.804
## 2022 Q4 7933.429 7119.875 8746.982
#Gráfico de la serie original y del pronóstico.
PronosticosHW2 %>% autoplot()

library(TSstudio)
library(forecast)
ts_plot(Yt2,Xtitle = "Años/Meses")
library(kableExtra)
library(magrittr)
d2<-ndiffs(Yt2)
D2<-nsdiffs(Yt2)
ordenes_integracion2<-c(d2,D2)
names(ordenes_integracion2)<-c("d2","D2")
ordenes_integracion2 %>% kable(caption = "Ordenes de Integración") %>% kable_material()
Ordenes de Integración
|
|
x
|
|
d2
|
1
|
|
D2
|
1
|
#Gráfico de la serie diferenciada
Yt2 %>%
diff(lag = 4,diffences=D2) %>%
diff(diffences=d2) %>%
ts_plot(title = "Yt estacionaria")
Yt2 %>%
diff(lag = 4,diffences=D2) %>%
diff(diffences=d2) %>%
ts_cor(lag.max = 12)
library(forecast)
library(ggthemes)
modelo_estimado2 <- Yt2 %>%
Arima(order = c(0, 1, 0),
seasonal = c(1, 1, 2))
summary(modelo_estimado2)
## Series: .
## ARIMA(0,1,0)(1,1,2)[4]
##
## Coefficients:
## sar1 sma1 sma2
## -0.3494 -0.5042 0.0640
## s.e. 0.5359 0.5323 0.3901
##
## sigma^2 = 79136: log likelihood = -331.65
## AIC=671.31 AICc=672.26 BIC=678.71
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 6.615822 258.7679 121.0037 -0.002908518 2.055323 0.3682692
## ACF1
## Training set -0.1013843
modelo_estimado2 %>% autoplot(type="both")+theme_solarized()

modelo_estimado2 %>% check_res(lag.max = 12)
## Warning: Ignoring 12 observations
## Warning: Ignoring 10 observations
## Warning: Ignoring 4 observations
Yt_Sarima2<-modelo_estimado2$fitted
Yt_HW2<-PronosticosHW2$fitted
grafico_comparativo2<-cbind(Yt2,Yt_Sarima2,Yt_HW2)
ts_plot(grafico_comparativo2)
library(tsibble)
library(feasts)
library(fable)
library(fabletools)
library(tidyr)
library(dplyr)
a2<-Yt2 %>% as_tsibble() %>%
model(arima_original2=ARIMA(value ~ pdq(0, 1, 0) + PDQ(1, 1, 2)),
arima_010_0112 = ARIMA(value ~ pdq(0, 1, 0) + PDQ(0, 1, 1)),
arima_010_1102 = ARIMA(value ~ pdq(0, 1, 0) + PDQ(1, 1, 1)),
arima_automatico2=ARIMA(value,ic="bic",stepwise = FALSE)
)
print(a2)
## # A mable: 1 x 4
## arima_original2 arima_010_0112 arima_010_1102
## <model> <model> <model>
## 1 <ARIMA(0,1,0)(1,1,2)[4]> <ARIMA(0,1,0)(0,1,1)[4]> <ARIMA(0,1,0)(1,1,1)[4]>
## # ... with 1 more variable: arima_automatico2 <model>
a2 %>% pivot_longer(everything(), names_to = "Model name",
values_to = "Orders") %>% glance() %>%
arrange(AICc) ->tabla2
tabla2
## # A tibble: 4 x 9
## `Model name` .model sigma2 log_lik AIC AICc BIC ar_roots ma_roots
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <list> <list>
## 1 arima_010_0112 Orders 75930. -332. 668. 669. 672. <cpl [0]> <cpl [4]>
## 2 arima_010_1102 Orders 77377. -332. 669. 670. 675. <cpl [4]> <cpl [4]>
## 3 arima_original2 Orders 79136. -332. 671. 672. 679. <cpl [4]> <cpl [8]>
## 4 arima_automatico2 Orders 62738. -334. 676. 677. 683. <cpl [1]> <cpl [4]>
library(forecast)
ma2_122 <- ma(data.pib.ts, 4, centre = TRUE)
library(magrittr)
Yt2 <- data.pib.ts
Tt2 <- ma2_122
SI2 <- Yt2 - Tt2
St2 <- tapply(SI2, cycle(SI2), mean, na.rm = TRUE)
#Los factores estacionales deben sumar "0" en el modelo aditivo
St2 <- St2 - sum(St2) / 4
#Generar la serie de factores para cada valor de la serie original
St2 <-
rep(St2, len = length(Yt2)) %>% ts(start = c(2009, 1), frequency = 4)
It2<-Yt2-Tt2-St2
library(tsibble)
library(feasts)
library(ggplot2)
Yt2 %>% as_tsibble() %>%
model(
classical_decomposition(value, type = "additive")
) %>%
components() %>%
autoplot() +
labs(title = "Descomposición Clásica Aditiva, IVAE")+xlab("Años/Meses")
## Warning: Removed 2 row(s) containing missing values (geom_path).

library(forecast)
library(dplyr)
library(tsibble)
library(fable)
library(fabletools)
Yt2<-Yt2 %>% as_tsibble() %>% rename(PIB=value)
data.cross.validation2<-Yt2 %>%
as_tsibble() %>%
stretch_tsibble(.init = 30,.step = 1)
TSCV2<-data.cross.validation2 %>%
model(ARIMA(PIB ~ pdq(0, 1, 0) + PDQ(1, 1, 2))) %>%
forecast(h=4) %>% accuracy(Yt2)
## Warning: It looks like you're trying to fully specify your ARIMA model but have not said if a constant should be included.
## You can include a constant using `ARIMA(y~1)` to the formula or exclude it by adding `ARIMA(y~0)`.
## Warning: 1 error encountered for ARIMA(PIB ~ pdq(0, 1, 0) + PDQ(1, 1, 2))
## [1] Could not find an appropriate ARIMA model.
## This is likely because automatic selection does not select models with characteristic roots that may be numerically unstable.
## For more details, refer to https://otexts.com/fpp3/arima-r.html#plotting-the-characteristic-roots
## Warning: The future dataset is incomplete, incomplete out-of-sample data will be treated as missing.
## 4 observations are missing between 2022 Q1 and 2022 Q4
print(TSCV2)
## # A tibble: 1 x 10
## .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ARIMA(PIB ~ pdq(0, 1, 0~ Test 136. 725. 409. 1.50 6.34 1.24 1.53 0.681
#El MAPE es de 6.33%, quiere decir que de cada 100 valores pronósticados, la distancia o el error cometido es de 6.33%
IPC
IPC <- read_excel("C:/Users/erick/Desktop/IPC.xlsx",
col_types=c("skip", "numeric"))
data.ipc.ts<- ts(data=IPC, start = c(2009,1), frequency=12)
library(forecast)
descompocicion_aditiva3<-decompose(data.ipc.ts,type = "additive")
Yt3<-descompocicion_aditiva3$x
TC3<-descompocicion_aditiva3$trend
library(forecast)
#Estimar el modelo
ModeloHW3<-HoltWinters(x = Yt3,
seasonal = "multiplicative",
optim.start = c(0.9,0.9,0.9))
ModeloHW3
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component.
##
## Call:
## HoltWinters(x = Yt3, seasonal = "multiplicative", optim.start = c(0.9, 0.9, 0.9))
##
## Smoothing parameters:
## alpha: 0.8353873
## beta : 0.07612657
## gamma: 1
##
## Coefficients:
## [,1]
## a 122.7690242
## b 0.4801476
## s1 1.0043291
## s2 1.0021040
## s3 0.9986014
## s4 0.9975846
## s5 0.9989586
## s6 0.9984650
## s7 0.9959074
## s8 0.9975598
## s9 1.0007205
## s10 1.0041558
## s11 1.0048925
## s12 1.0053839
#Generar el pronóstico:
PronosticosHW3<-forecast(object = ModeloHW3,h = 12,level = c(0.95))
PronosticosHW3
## Point Forecast Lo 95 Hi 95
## Jun 2022 123.7827 122.6365 124.9289
## Jul 2022 123.9896 122.4499 125.5294
## Aug 2022 124.0357 122.1459 125.9256
## Sep 2022 124.3884 122.1648 126.6120
## Oct 2022 125.0394 122.4870 127.5918
## Nov 2022 125.4570 122.5842 128.3298
## Dec 2022 125.6139 122.4280 128.7997
## Jan 2023 126.3012 122.7897 129.8128
## Feb 2023 127.1819 123.3369 131.0269
## Mar 2023 128.1007 123.9171 132.2842
## Apr 2023 128.6771 124.1616 133.1927
## May 2023 129.2228 123.9338 134.5118
#Gráfico de la serie original y del pronóstico.
PronosticosHW3 %>% autoplot()

library(TSstudio)
library(forecast)
ts_plot(Yt3,Xtitle = "Años/Meses")
library(kableExtra)
library(magrittr)
d3<-ndiffs(Yt3)
D3<-nsdiffs(Yt3)
ordenes_integracion3<-c(d3,D3)
names(ordenes_integracion3)<-c("d3","D3")
ordenes_integracion3 %>% kable(caption = "Ordenes de Integración") %>% kable_material()
Ordenes de Integración
|
|
x
|
|
d3
|
1
|
|
D3
|
0
|
#Gráfico de la serie diferenciada
Yt3 %>%
diff(lag = 12,diffences=D3) %>%
diff(diffences=d3) %>%
ts_plot(title = "Yt estacionaria")
Yt3 %>%
diff(lag = 12,diffences=D3) %>%
diff(diffences=d3) %>%
ts_cor(lag.max = 36)
library(forecast)
library(ggthemes)
modelo_estimado3 <- Yt3 %>%
Arima(order = c(1, 1, 1),
seasonal = c(1, 0, 3))
summary(modelo_estimado3)
## Series: .
## ARIMA(1,1,1)(1,0,3)[12]
##
## Coefficients:
## ar1 ma1 sar1 sma1 sma2 sma3
## 0.9289 -0.7894 0.9905 -0.9135 -0.1630 0.1131
## s.e. 0.0840 0.1307 0.0416 0.1244 0.1065 0.0880
##
## sigma^2 = 0.2175: log likelihood = -104.18
## AIC=222.37 AICc=223.1 BIC=243.89
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.05115671 0.4561007 0.3004523 0.04545039 0.2756045 0.1628142
## ACF1
## Training set 0.07731549
modelo_estimado3 %>% autoplot(type="both")+theme_solarized()

modelo_estimado3 %>% check_res(lag.max = 36)
## Warning: Ignoring 36 observations
## Warning: Ignoring 34 observations
## Warning: Ignoring 4 observations
Yt_Sarima3<-modelo_estimado3$fitted
Yt_HW3<-PronosticosHW3$fitted
grafico_comparativo3<-cbind(Yt3,Yt_Sarima3,Yt_HW3)
ts_plot(grafico_comparativo3)
library(tsibble)
library(feasts)
library(fable)
library(fabletools)
library(tidyr)
library(dplyr)
a3<-Yt3 %>% as_tsibble() %>%
model(arima_original3=ARIMA(value ~ pdq(1, 1, 1) + PDQ(1, 0, 3)),
arima_010_0113 = ARIMA(value ~ pdq(0, 1, 0) + PDQ(0, 1, 3)),
arima_010_1103 = ARIMA(value ~ pdq(0, 1, 0) + PDQ(1, 1, 2)),
arima_automatico3=ARIMA(value,ic="bic",stepwise = FALSE)
)
print(a3)
## # A mable: 1 x 4
## arima_original3 arima_010_0113
## <model> <model>
## 1 <ARIMA(1,1,1)(1,0,3)[12] w/ drift> <ARIMA(0,1,0)(0,1,3)[12]>
## # ... with 2 more variables: arima_010_1103 <model>, arima_automatico3 <model>
a3 %>% pivot_longer(everything(), names_to = "Model name",
values_to = "Orders") %>% glance() %>%
arrange(AICc) ->tabla3
tabla3
## # A tibble: 4 x 9
## `Model name` .model sigma2 log_lik AIC AICc BIC ar_roots ma_roots
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <list> <list>
## 1 arima_original3 Orders 0.221 -103. 222. 223. 246. <cpl [13]> <cpl>
## 2 arima_automatico3 Orders 0.225 -105. 223. 224. 241. <cpl [27]> <cpl [0]>
## 3 arima_010_0113 Orders 0.225 -114. 235. 236. 247. <cpl [0]> <cpl>
## 4 arima_010_1103 Orders 0.230 -114. 236. 236. 248. <cpl [12]> <cpl>
library(forecast)
ma2_123 <- ma(data.ipc.ts, 12, centre = TRUE)
library(magrittr)
Yt3 <- data.ipc.ts
Tt3 <- ma2_123
SI3 <- Yt3 - Tt3
St3 <- tapply(SI3, cycle(SI3), mean, na.rm = TRUE)
#Los factores estacionales deben sumar "0" en el modelo aditivo
St3 <- St3 - sum(St3) / 12
#Generar la serie de factores para cada valor de la serie original
St3 <-
rep(St3, len = length(Yt3)) %>% ts(start = c(2009, 1), frequency = 12)
It3<-Yt3-Tt3-St3
library(tsibble)
library(feasts)
library(ggplot2)
Yt3 %>% as_tsibble() %>%
model(
classical_decomposition(value, type = "additive")
) %>%
components() %>%
autoplot() +
labs(title = "Descomposición Clásica Aditiva, IVAE")+xlab("Años/Meses")
## Warning: Removed 6 row(s) containing missing values (geom_path).

library(forecast)
library(dplyr)
library(tsibble)
library(fable)
library(fabletools)
Yt3<-Yt3 %>% as_tsibble() %>% rename(IPC=value)
data.cross.validation3<-Yt3 %>%
as_tsibble() %>%
stretch_tsibble(.init = 60,.step = 1)
TSCV3<-data.cross.validation3 %>%
model(ARIMA(IPC ~ pdq(0, 1, 0) + PDQ(0, 1, 0))) %>%
forecast(h=12) %>% accuracy(Yt3)
## Warning: The future dataset is incomplete, incomplete out-of-sample data will be treated as missing.
## 12 observations are missing between 2022 jun. and 2023 may.
print(TSCV3)
## # A tibble: 1 x 10
## .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ARIMA(IPC ~ pdq(0, 1, 0~ Test 0.415 1.89 1.35 0.345 1.19 0.732 0.695 0.881
#El MAPE es de 1.19%, quiere decir que de cada 100 valores pronósticados, la distancia o el error cometido es de 1.19%
HIDROCARBUROS
hidro <- read_excel("C:/Users/erick/Desktop/hidrocarburos.xlsx",
col_types=c("skip", "numeric"))
data.hidro.ts<- ts(data=hidro, start = c(2017,1), frequency=12)
library(forecast)
descompocicion_aditiva4<-decompose(data.hidro.ts,type = "additive")
Yt4<-descompocicion_aditiva4$x
TC4<-descompocicion_aditiva4$trend
library(forecast)
#Estimar el modelo
ModeloHW4<-HoltWinters(x = Yt4,
seasonal = "multiplicative",
optim.start = c(0.9,0.9,0.9))
ModeloHW4
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component.
##
## Call:
## HoltWinters(x = Yt4, seasonal = "multiplicative", optim.start = c(0.9, 0.9, 0.9))
##
## Smoothing parameters:
## alpha: 0.1273406
## beta : 0
## gamma: 0.4793705
##
## Coefficients:
## [,1]
## a 2.465101e+05
## b 1.239453e+03
## s1 9.247101e-01
## s2 8.984179e-01
## s3 8.791852e-01
## s4 8.941624e-01
## s5 9.460044e-01
## s6 1.049825e+00
## s7 9.469010e-01
## s8 9.667736e-01
## s9 9.762889e-01
## s10 1.117116e+00
## s11 9.509380e-01
## s12 8.557828e-01
#Generar el pronóstico:
PronosticosHW4<-forecast(object = ModeloHW4,h = 12,level = c(0.95))
PronosticosHW4
## Point Forecast Lo 95 Hi 95
## Jun 2022 229096.5 185614.4 272578.5
## Jul 2022 223696.1 179110.4 268281.8
## Aug 2022 219997.1 174364.1 265630.2
## Sep 2022 224853.1 177997.3 271708.9
## Oct 2022 239062.2 190615.5 287508.9
## Nov 2022 266599.7 215810.4 317389.1
## Dec 2022 241636.1 191288.5 291983.7
## Jan 2023 247905.6 196238.0 299573.1
## Feb 2023 251555.6 198735.7 304375.5
## Mar 2023 289226.4 232632.2 345820.6
## Apr 2023 247380.9 193379.5 301382.3
## May 2023 223687.5 193456.8 253918.2
#Gráfico de la serie original y del pronóstico.
PronosticosHW4 %>% autoplot()

library(TSstudio)
library(forecast)
ts_plot(Yt4,Xtitle = "Años/Meses")
library(kableExtra)
library(magrittr)
d4<-ndiffs(Yt4)
D4<-nsdiffs(Yt4)
ordenes_integracion4<-c(d4,D4)
names(ordenes_integracion4)<-c("d4","D4")
ordenes_integracion4 %>% kable(caption = "Ordenes de Integración") %>% kable_material()
Ordenes de Integración
|
|
x
|
|
d4
|
0
|
|
D4
|
0
|
#Gráfico de la serie diferenciada
Yt4 %>%
diff(lag = 12,diffences=D4) %>%
diff(diffences=d4) %>%
ts_plot(title = "Yt estacionaria")
Yt4 %>%
diff(lag = 12,diffences=D4) %>%
diff(diffences=d4) %>%
ts_cor(lag.max = 36)
library(forecast)
library(ggthemes)
modelo_estimado4 <- Yt4 %>%
Arima(order = c(1, 0, 1),
seasonal = c(1, 0, 0))
summary(modelo_estimado4)
## Series: .
## ARIMA(1,0,1)(1,0,0)[12] with non-zero mean
##
## Coefficients:
## ar1 ma1 sar1 mean
## 0.6883 -0.5363 -0.2097 215368.837
## s.e. 0.2890 0.3277 0.1494 4910.911
##
## sigma^2 = 1.058e+09: log likelihood = -765.8
## AIC=1541.6 AICc=1542.62 BIC=1552.48
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -237.9014 31510 25506.37 -2.377165 12.31299 0.6275001 -0.02020648
modelo_estimado4 %>% autoplot(type="both")+theme_solarized()

modelo_estimado4 %>% check_res(lag.max = 36)
## Warning: Ignoring 36 observations
## Warning: Ignoring 34 observations
## Warning: Ignoring 4 observations
Yt_Sarima4<-modelo_estimado4$fitted
Yt_HW4<-PronosticosHW4$fitted
grafico_comparativo4<-cbind(Yt4,Yt_Sarima4,Yt_HW4)
ts_plot(grafico_comparativo4)
library(tsibble)
library(feasts)
library(fable)
library(fabletools)
library(tidyr)
library(dplyr)
a4<-Yt4 %>% as_tsibble() %>%
model(arima_original4=ARIMA(value ~ pdq(1, 0, 1) + PDQ(1, 0, 0)),
arima_010_0114 = ARIMA(value ~ pdq(1, 0, 1) + PDQ(0, 0, 0)),
arima_010_1104 = ARIMA(value ~ pdq(1, 0, 1) + PDQ(1, 0, 0)),
arima_automatico4=ARIMA(value,ic="bic",stepwise = FALSE)
)
print(a4)
## # A mable: 1 x 4
## arima_original4 arima_010_0114
## <model> <model>
## 1 <ARIMA(1,0,1)(1,0,0)[12] w/ mean> <ARIMA(1,0,1) w/ mean>
## # ... with 2 more variables: arima_010_1104 <model>, arima_automatico4 <model>
a4 %>% pivot_longer(everything(), names_to = "Model name",
values_to = "Orders") %>% glance() %>%
arrange(AICc) ->tabla4
tabla4
## # A tibble: 4 x 9
## `Model name` .model sigma2 log_lik AIC AICc BIC ar_roots ma_roots
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <list> <list>
## 1 arima_automatico4 Orders 1.11e9 -769. 1541. 1541. 1545. <cpl> <cpl>
## 2 arima_original4 Orders 1.06e9 -766. 1542. 1543. 1552. <cpl> <cpl>
## 3 arima_010_1104 Orders 1.06e9 -766. 1542. 1543. 1552. <cpl> <cpl>
## 4 arima_010_0114 Orders 1.11e9 -768. 1543. 1544. 1552. <cpl> <cpl>
library(forecast)
ma2_124 <- ma(data.hidro.ts, 12, centre = TRUE)
library(magrittr)
Yt4 <- data.hidro.ts
Tt4 <- ma2_124
SI4 <- Yt4 - Tt4
St4 <- tapply(SI4, cycle(SI4), mean, na.rm = TRUE)
#Los factores estacionales deben sumar "0" en el modelo aditivo
St4 <- St4 - sum(St4) / 12
#Generar la serie de factores para cada valor de la serie original
St4 <-
rep(St4, len = length(Yt4)) %>% ts(start = c(2017, 1), frequency = 12)
It4<-Yt4-Tt4-St4
library(tsibble)
library(feasts)
library(ggplot2)
Yt4 %>% as_tsibble() %>%
model(
classical_decomposition(value, type = "additive")
) %>%
components() %>%
autoplot() +
labs(title = "Descomposición Clásica Aditiva, IVAE")+xlab("Años/Meses")
## Warning: Removed 6 row(s) containing missing values (geom_path).

library(forecast)
library(dplyr)
library(tsibble)
library(fable)
library(fabletools)
Yt4<-Yt4 %>% as_tsibble() %>% rename(HIDRO=value)
data.cross.validation4<-Yt4 %>%
as_tsibble() %>%
stretch_tsibble(.init = 60,.step = 1)
TSCV4<-data.cross.validation4 %>%
model(ARIMA(HIDRO ~ pdq(1, 0, 1) + PDQ(1, 0, 0))) %>%
forecast(h=12) %>% accuracy(Yt4)
## Warning: The future dataset is incomplete, incomplete out-of-sample data will be treated as missing.
## 12 observations are missing between 2022 jun. and 2023 may.
print(TSCV4)
## # A tibble: 1 x 10
## .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ARIMA(HIDRO ~ pdq(1,~ Test 15649. 49078. 40075. 3.09 16.8 0.986 0.990 0.234
#El MAPE es de 16.78%, quiere decir que de cada 100 valores pronósticados, la distancia o el error cometido es de 16.78%