##IMPORTANDO MOEDELO descomposicion de series temporales (enfoque tradicional)
library(readxl)
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
#Aqui se carga los datos del archivo
serie.ivae<-read_excel("C:/doc R/IVAE_SLV_A.xlsx",col_types = c("skip","numeric"),skip = 5)
#objeto de serie temporal
serie.ivae.ts<-ts(data = serie.ivae,start = c(2009,1),frequency = 12)
#Grafica de la serie temporal
serie.ivae.ts%>%
autoplot(main="IVAE, El Salvador 2009-2021[marzo]",
xlab = "Años/Meses",
ylab = "Indice")
##MODELO ADITIVO Yt=Tt+Ct+St+It
###Componente de Tendendia Tt (Componente TCt)
#construimos un promedio movil centrado (la linea roja)
ma2_12<- ma(serie.ivae.ts,12,centre = TRUE)
autoplot(serie.ivae.ts,main = "IVAE, El Salvador 2009-2021[marzo]",
xlab = "Años/meses",
ylab = "Indice")+
autolayer(ma2_12,series = "Tt")
## Warning: Removed 12 row(s) containing missing values (geom_path).
library(magrittr)
#cambiamos nombres para darle consistencia teorica
Yt<-serie.ivae.ts #serie original
Tt<-ma2_12 #Media movil centrada (2x12-MA) como componente de Tendencia Ciclo
#insumo paara obtener el componente estacional
SI<-Yt-Tt #Diferencia que contiene componentes Estacional e irregular (combinacion de componente estacional e irregular)
St<-tapply(SI,cycle(SI),mean, na.rm=TRUE) #promediando los resultados de cada mes
#Los factores estacionales deben sumar "0" en el modelo aditivo
St<-St-sum(St)/12 #normalizamos (>0 arriba de la tendencia)
#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)
autoplot(St,
main = "Factores Estacionales",
xlab = "Años/Meses",
ylab = "Factor Estacional")
#restamos a la serie original las tendencias
It<-Yt-Tt-St
autoplot(It,
main = "Componente irregular",
xlab = "Años/meses",
ylab = "It")
###Descomposicion aditiva (usando la libreria stats) ####nos da de una ves la serie temporal, la tendencia, el componente original y el estacional
#todo el proceso anterior de forma sencilla con "stats"
descomposicion_aditiva<-decompose(serie.ivae.ts,type = "additive")
autoplot(descomposicion_aditiva, main="Descomposicion Aditiva",xlab="Años/meses")
###Descomposicin aditiva usando libreria feasts
library(tsibble)
##
## Attaching package: 'tsibble'
## The following objects are masked from 'package:base':
##
## intersect, setdiff, union
library(feasts)
## Loading required package: fabletools
##
## Attaching package: 'fabletools'
## The following objects are masked from 'package:forecast':
##
## accuracy, forecast
library(ggplot2)
#transformar serie temporal a objeto tsibble
Yt%>%as_tsibble()%>%
model(
classical_decomposition(value, type = "additive")
)%>%
components()%>%
autoplot()+
labs(title = "Descomposicion clasica aditiva, IVAE")+xlab("Años/meses")
## Warning: Removed 6 row(s) containing missing values (geom_path).
##Modelo multiplicativo Yt=Tt.Ct.St.It ##misma unidad de valor pero componentes expresados como porcentaje de la tendencia
###Componente tendencia ciclo (Tt=TCt)
Tt<-ma(serie.ivae.ts,12,centre = TRUE) #promediar en funcion de la tendencia y centrar
autoplot(Tt,main = "Componente Tendencia (ciclo)",ylab = "Tt")
###Cálculo de factores estacionales(St)
SI<-Yt/Tt#Serie sin tendencia
St<-tapply(SI, cycle(SI), mean,na.rm=TRUE) #Promediando los resultados de cada mes
#los factores estacionales deben promediar "1" en el modelo muliplicativo
St<-St*12/sum(St)
#Gnerar la serie de factores para cada valor de la serie original
St<-rep(St,len=length(Yt))%>%ts(start = c(2009,1),frequency = 12)
autoplot(St,
main = "Factores estacionales",
xlab = "Años/meses",
ylab = "Factor estacional")
###Cálculo del componente irregular(It) It=Yt/Tt*St
It<-Yt/(Tt*St)
autoplot(It,
main = "Componente irregular",
xlab = "Años/meses",
ylab = "It")
###Descomposición multiplicativa (usando la libreria stats)
descomposicion_multiplicativa<-decompose(serie.ivae.ts,type = "multiplicative")
autoplot(descomposicion_multiplicativa,main="Desscomposicion multiplicativa",xlab="Años/meses")
###Descomposición multiplicativa usando libreria feasts
library(tsibble)
library(feasts)
library(ggplot2)
Yt%>%as_tsibble()%>%
model(classical_decomposition(value,type = "multiplicative")) %>%components()%>%
autoplot()+
labs(title = "Descomposicion clasica multiplicativa,IVAE")+xlab("Años/meses")
## Warning: Removed 6 row(s) containing missing values (geom_path).
#PROBELMAS CON LOS GRAFICOS SON FIJOS SOLO PARA PRESENACIONES O
IMPRESION NO INTERACTIVOS
##Descomposición usando la libreria TSstudio
library(TSstudio)
ts_decompose(Yt,type = "additive",showline = TRUE)
ts_seasonal(Yt,type = "box",title = "Análisis de valores estacionales")
#PRONOSTICO DE SERIES TEMPORALES, ENFOQUE DETERMINISTICO (CLASICO)
##Pronóstico a través del promedio histótico
library(forecast)
Xt<-c(24,13,20,19,25,20,18,18,19,15,17)
#Notese que si se omite el argumento de start, la serie temporal se genera respetando la periocidad, pero no se alude a los años
Xt<-ts(data = Xt,frequency = 12)
autoplot(Xt,
main = "Ventas de la empresa",
xlab = "meses",
ylab = "US$")
library(forecast)
Ft<-forecast::meanf(y=Xt,
level = c(75,80,95),
h=3)
autoplot(Ft,
main="Pronostico de ventas",
xlab="meses",
ylab="US$")
library(kableExtra)
library(magrittr)
Ft%>%kable()%>%kable_material()
| Point Forecast | Lo 75 | Hi 75 | Lo 80 | Hi 80 | Lo 95 | Hi 95 | |
|---|---|---|---|---|---|---|---|
| Dec 1 | 18.90909 | 14.47372 | 23.34446 | 13.92557 | 23.89261 | 10.8169 | 27.00128 |
| Jan 2 | 18.90909 | 14.47372 | 23.34446 | 13.92557 | 23.89261 | 10.8169 | 27.00128 |
| Feb 2 | 18.90909 | 14.47372 | 23.34446 | 13.92557 | 23.89261 | 10.8169 | 27.00128 |
accuracy(Ft)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -9.689909e-16 3.315379 2.46281 -3.218575 13.66254 NaN -0.1850308
#PRÓNOSTICO DE SERIES TEMPORALES, ENFOQUE MODERNO (ESTOCÁSTICO) metodología Box-Jenkins
library(TSstudio)
library(forecast)
ts_plot(log(Yt))