library(tseries)
## Warning: package 'tseries' was built under R version 4.5.1
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(forecast)
## Warning: package 'forecast' was built under R version 4.5.1
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.1
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.1
library(TTR)
## Warning: package 'TTR' was built under R version 4.5.1
url="https://raw.githubusercontent.com/vmoprojs/DataLectures/master/pib_ec_const.csv"
impor=read.delim(url,sep=";")
impors=impor$IMPOR/1000000
impors_s=ts(impors,start = c(2000,1),frequency = 4)
plot(impors_s)
El comportamiento de los datos es de forma aditiva y tiene tendencia creciente.
impors_sl=log(impors_s)
plot(impors_sl)
No vemos un cambio no muy significativo al utilizar logaritmo por tal se procede a utilizar la serie normal.
plot(impors_s,xlab="Años",ylab="Importaciones de bienes y servicios",col="Purple")
Interpretacion: El gráfico muestra la evolución de las importaciones de bienes y servicios entre los años 2000 y 2020, que refleja los valores observados de la serie temporal; se aprecia una tendencia general de crecimiento, pasando de niveles cercanos a 2 hasta superar el valor de 5, aunque con fluctuaciones intermedias que evidencian variaciones cíclicas o irregulares, incluyendo un descenso alrededor de 2015 y una recuperación posterior hacia 2020, lo que indica un comportamiento dinámico pero con un claro patrón ascendente a lo largo del período analizado.
impors_sc=decompose(impors_s)
plot(impors_sc)
impors_hw=HoltWinters(impors_s, beta=TRUE, gamma=FALSE)
impors_hwf=predict(impors_hw,3)
impors_hwf
## Qtr1 Qtr2 Qtr3
## 2021 5.267120 5.654315 6.041510
plot(impors_hw,impors_hwf)
Interpretacion: El gráfico muestra el ajuste del modelo de suavizamiento exponencial de Holt-Winters aplicando a la serie temporal de importaciones entre 2000 y 2020, donde la línea negra representa los valores observados y la línea roja los valores ajustados por el modelo; se aprecia una tendencia ascendente sostenida, pasando de valores cercanos a 2 hasta superar el nivel de 5, con fluctuaciones periódicas que reflejan variaciones cíclicas moderadas, mientras que hacia el final de la serie (2019–2020) se observa un aumento abrupto difícil de seguir con exactitud por el modelo; la cercanía entre ambas curvas indica un buen ajuste, y en la parte superior se muestran los valores proyectados para 2021 (alrededor de 5.65, con un rango estimado entre 5.27 y 6.04).Por lo cual el método describe correctamente la tendencia de crecimiento.
impors_sw=HoltWinters(impors_s)
impors_sp=predict(impors_sw,3)
impors_sp
## Qtr1 Qtr2 Qtr3
## 2021 5.177510 5.046085 5.074954
adf.test(impors_s)
##
## Augmented Dickey-Fuller Test
##
## data: impors_s
## Dickey-Fuller = -2.0268, Lag order = 4, p-value = 0.5649
## alternative hypothesis: stationary
la serie no es estacionaria por que el p-valor es mayor a alfa.
impors_sd=diff(impors_s)
adf.test(impors_sd)
## Warning in adf.test(impors_sd): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: impors_sd
## Dickey-Fuller = -5.2456, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
impors_sds=diff(impors_sd,4)
adf.test(impors_sds)
## Warning in adf.test(impors_sds): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: impors_sds
## Dickey-Fuller = -4.9193, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
el p-valor es menor que alfa. Por lo cual se procede a realizar el modelo de mejor ajuste. La prueba de Dickey Fuller de la serie en diferencia regular y estacional es estacionario, porque el p-valor es menor que alfa.
acf(impors_sds,main="función de autocorrelación")
Se observa en la función de autocorrelación que hay un resago no muy significativo en la parte regular (MA(1)).
pacf(impors_sds,main="función de autocorrelación parcial")
En la función de autocorrelación parcial no se observa ningun resago significativo en la parte regular (AR(0))
mod1 = arima(impors_s, order=c(0,1,0), seasonal=list(order=c(0,1,0), period=4))
mod1
##
## Call:
## arima(x = impors_s, order = c(0, 1, 0), seasonal = list(order = c(0, 1, 0),
## period = 4))
##
##
## sigma^2 estimated as 0.07901: log likelihood = -11.84, aic = 25.67
Box.test(impors_s,lag = 4,type = "Ljung-Box")
##
## Box-Ljung test
##
## data: impors_s
## X-squared = 268.34, df = 4, p-value < 2.2e-16
mod1
##
## Call:
## arima(x = impors_s, order = c(0, 1, 0), seasonal = list(order = c(0, 1, 0),
## period = 4))
##
##
## sigma^2 estimated as 0.07901: log likelihood = -11.84, aic = 25.67
#Modelos SARIMA candidatos
mod2 = arima(impors_s, order = c(0,1,0), seasonal = list(order=c(0,1,0), period=4))
mod3 = arima(impors_s, order = c(0,1,1), seasonal = list(order=c(0,1,0), period=4))
mod4 = arima(impors_s, order = c(1,1,1), seasonal = list(order=c(0,1,0), period=4))
mod5 = arima(impors_s, order = c(1,1,0), seasonal = list(order=c(0,1,0), period=4))
#comparamos aic
mod1$aic
## [1] 25.67414
Box.test(mod1$residuals)
##
## Box-Pierce test
##
## data: mod1$residuals
## X-squared = 8.1221, df = 1, p-value = 0.004373
mod2$aic
## [1] 25.67414
Box.test(mod2$residuals)
##
## Box-Pierce test
##
## data: mod2$residuals
## X-squared = 8.1221, df = 1, p-value = 0.004373
mod3$aic
## [1] 18.85984
Box.test(mod3$residuals)
##
## Box-Pierce test
##
## data: mod3$residuals
## X-squared = 0.035691, df = 1, p-value = 0.8502
mod4$aic
## [1] 20.59163
Box.test(mod4$residuals)
##
## Box-Pierce test
##
## data: mod4$residuals
## X-squared = 0.0058138, df = 1, p-value = 0.9392
mod5$aic
## [1] 19.11342
Box.test(mod5$residuals)
##
## Box-Pierce test
##
## data: mod5$residuals
## X-squared = 0.15396, df = 1, p-value = 0.6948