library(readxl)
pasta <- read_excel("pasta.xlsx")
View(pasta)
st<- ts(pasta, start = c(1, 1), frequency = 52)
plot(st, main= "Gràfico de serie temporal", xlab= "Tiempo", ylab= "ventas")
La hipótesis nula (H0) de la prueba de Dickey-Fuller es que la serie temporal tiene una raíz unitaria, es decir, que la serie no es estacionaria.
library(tseries)
adf.test(st)
##
## Augmented Dickey-Fuller Test
##
## data: st
## Dickey-Fuller = -0.74961, Lag order = 4, p-value = 0.9627
## alternative hypothesis: stationary
como el p-valor nos dio un valor de 0.9627 mayor a 0.05 se acepta la Ho y decimos que la serie no es estacionaria.
Restar el valor anterior del valor actual puede ayudar a eliminar tendencias de estacionariedad.
serie_diferenciada <- diff(st)
serie_diferenciada
## Time Series:
## Start = c(1, 2)
## End = c(2, 38)
## Frequency = 52
## ventas
## [1,] 4.000
## [2,] 5.090
## [3,] 8.641
## [4,] 11.646
## [5,] 13.557
## [6,] 8.753
## [7,] 8.942
## [8,] 14.815
## [9,] 14.668
## [10,] 11.179
## [11,] 8.168
## [12,] 10.940
## [13,] 12.292
## [14,] 16.312
## [15,] 14.039
## [16,] 14.927
## [17,] 9.932
## [18,] 12.059
## [19,] 10.893
## [20,] 10.076
## [21,] 9.655
## [22,] 12.310
## [23,] 13.514
## [24,] 16.304
## [25,] 9.525
## [26,] 7.112
## [27,] 7.755
## [28,] 5.993
## [29,] 6.851
## [30,] 6.977
## [31,] 6.004
## [32,] 6.356
## [33,] 7.879
## [34,] 10.762
## [35,] 12.369
## [36,] 11.733
## [37,] 10.513
## [38,] 5.400
## [39,] 10.495
## [40,] 13.935
## [41,] 10.859
## [42,] 12.547
## [43,] 14.680
## [44,] 5.535
## [45,] 2.565
## [46,] 7.118
## [47,] 12.035
## [48,] 13.803
## [49,] 9.916
## [50,] 6.774
## [51,] 8.024
## [52,] 13.038
## [53,] 13.587
## [54,] 13.218
## [55,] 14.774
## [56,] 9.278
## [57,] 7.783
## [58,] 7.758
## [59,] 8.937
## [60,] 7.362
## [61,] 6.868
## [62,] 7.010
## [63,] 10.235
## [64,] 6.717
## [65,] 3.351
## [66,] 3.083
## [67,] 5.982
## [68,] 4.758
## [69,] 6.322
## [70,] 11.850
## [71,] 9.373
## [72,] 8.275
## [73,] 10.520
## [74,] 8.999
## [75,] 2.068
## [76,] 7.669
## [77,] 8.058
## [78,] 4.377
## [79,] 4.931
## [80,] 0.194
## [81,] 1.903
## [82,] 3.429
## [83,] 2.899
## [84,] 5.517
## [85,] 4.941
## [86,] 6.809
## [87,] 7.220
## [88,] 8.100
## [89,] 11.060
plot.ts(serie_diferenciada, main="Serie de Tiempo Diferenciada")
verificamos nuevamente la estacionariedad
adf.test(serie_diferenciada)
##
## Augmented Dickey-Fuller Test
##
## data: serie_diferenciada
## Dickey-Fuller = -3.3837, Lag order = 4, p-value = 0.06285
## alternative hypothesis: stationary
Esto nos da un p-valor de 0.06285 mayor a 0.05, por tanto se acepta la Ho y decimos que la serie no es estacionaria. Lo que hacemos es volver a doferenciar la serie.
serie_diferenciada2<- diff(serie_diferenciada)
serie_diferenciada2
## Time Series:
## Start = c(1, 3)
## End = c(2, 38)
## Frequency = 52
## ventas
## [1,] 1.090
## [2,] 3.551
## [3,] 3.005
## [4,] 1.911
## [5,] -4.804
## [6,] 0.189
## [7,] 5.873
## [8,] -0.147
## [9,] -3.489
## [10,] -3.011
## [11,] 2.772
## [12,] 1.352
## [13,] 4.020
## [14,] -2.273
## [15,] 0.888
## [16,] -4.995
## [17,] 2.127
## [18,] -1.166
## [19,] -0.817
## [20,] -0.421
## [21,] 2.655
## [22,] 1.204
## [23,] 2.790
## [24,] -6.779
## [25,] -2.413
## [26,] 0.643
## [27,] -1.762
## [28,] 0.858
## [29,] 0.126
## [30,] -0.973
## [31,] 0.352
## [32,] 1.523
## [33,] 2.883
## [34,] 1.607
## [35,] -0.636
## [36,] -1.220
## [37,] -5.113
## [38,] 5.095
## [39,] 3.440
## [40,] -3.076
## [41,] 1.688
## [42,] 2.133
## [43,] -9.145
## [44,] -2.970
## [45,] 4.553
## [46,] 4.917
## [47,] 1.768
## [48,] -3.887
## [49,] -3.142
## [50,] 1.250
## [51,] 5.014
## [52,] 0.549
## [53,] -0.369
## [54,] 1.556
## [55,] -5.496
## [56,] -1.495
## [57,] -0.025
## [58,] 1.179
## [59,] -1.575
## [60,] -0.494
## [61,] 0.142
## [62,] 3.225
## [63,] -3.518
## [64,] -3.366
## [65,] -0.268
## [66,] 2.899
## [67,] -1.224
## [68,] 1.564
## [69,] 5.528
## [70,] -2.477
## [71,] -1.098
## [72,] 2.245
## [73,] -1.521
## [74,] -6.931
## [75,] 5.601
## [76,] 0.389
## [77,] -3.681
## [78,] 0.554
## [79,] -4.737
## [80,] 1.709
## [81,] 1.526
## [82,] -0.530
## [83,] 2.618
## [84,] -0.576
## [85,] 1.868
## [86,] 0.411
## [87,] 0.880
## [88,] 2.960
plot(serie_diferenciada2, main= "serie diferenciada 2")
verificamos nuevamente la estacionariedad
adf.test(serie_diferenciada2)
##
## Augmented Dickey-Fuller Test
##
## data: serie_diferenciada2
## Dickey-Fuller = -6.0598, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
como el p-valor nos da 0.01 menor a 0.05 rechazamos la Ho y decimos que la serie es estacionaria
acf(serie_diferenciada2, main="Función de Autocorrelación (ACF)")
pacf(serie_diferenciada2, main="Función de Autocorrelación Parcial (PACF)")
De acuerdo a ACF Y PACF el mejor modelo seria el siguiente
modelo_arima <- arima(st, order=c(1,2,1))
modelo_arima
##
## Call:
## arima(x = st, order = c(1, 2, 1))
##
## Coefficients:
## ar1 ma1
## 0.6106 -0.9561
## s.e. 0.1103 0.0441
##
## sigma^2 estimated as 7.725: log likelihood = -215.41, aic = 436.82
div<- modelo_arima$coef/sqrt(diag(modelo_arima$var.coef))
div
## ar1 ma1
## 5.537012 -21.671286
como el valor de los parametros es mayor y menor a 2 entonces el modelo es significativo
La prueba Jum-Box evalúa la hipótesis nula de que no hay autocorrelación en los residuos de un modelo ARIMA
Box.test(residuals(modelo_arima), lag = 12, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: residuals(modelo_arima)
## X-squared = 8.7904, df = 12, p-value = 0.7207
Como el p-valor es 0.07207 y es mayor a 0.05 entonces aceptamos la Ho y concluimos que no hay presencia de autocorrelaciòn en los residuos, lo que nos indica que es buen modelo.
plot(modelo_arima$residuals, type = "l", col = "blue", main = "Gráfica de Residuos del Modelo ARIMA")
library(forecast)
pronosticos2<- forecast(modelo_arima, h=12)
pronosticos2
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2.730769 1039.155 1035.593 1042.717 1033.707 1044.603
## 2.750000 1047.984 1041.098 1054.871 1037.452 1058.516
## 2.769231 1056.297 1046.134 1066.460 1040.755 1071.839
## 2.788462 1064.294 1050.984 1077.604 1043.938 1084.650
## 2.807692 1072.099 1055.784 1088.415 1047.146 1097.052
## 2.826923 1079.786 1060.594 1098.979 1050.434 1109.139
## 2.846154 1087.402 1065.442 1109.362 1053.817 1120.987
## 2.865385 1094.973 1070.334 1119.613 1057.291 1132.656
## 2.884615 1102.518 1075.269 1129.768 1060.844 1144.192
## 2.903846 1110.047 1080.242 1139.852 1064.464 1155.630
## 2.923077 1117.565 1085.245 1149.886 1068.135 1166.995
## 2.942308 1125.078 1090.272 1159.883 1071.847 1178.309
plot(pronosticos2)