Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Facultad de Ciencias
> library(astsa)
> library(forecast)
> library(nortest)
> library(stats)
11
10
0 50 100 150
Time
Al observar la gráfica se puede decir que no tiene tendencia y/o estacionalidad al tener cambios
constantes, es decir, no se repite ningun patrón en cierto periodo de tiempo; además, no presenta
1
una tendencia creciente o decreciente en el tiempo.
Un aspecto importante es que la serie de tiempo sea estacionaria, es decir, que la media y varianza
sean constantes en el tiempo, y esto se refleja gráficamente tomando en cuenta que los valores de la
serie tienden a oscilar alrededor de una media constante y la variabilidad con respecto a esa media
también permanece constante en el tiempo.
Series ventas
1.0
0.8
0.6
ACF
0.4
0.2
0.0
−0.2
0 5 10 15 20
Lag
2
Observando la gráfica se puede decir que la serie no es estacionaria, ya que presenta una tendencia
aparentemente lineal en el tiempo que decrece y por los valores que salen de las bandas de confianza.
0
−2
−4
0 50 100 150
Time
Observando la gráfica se puede decir que no presenta alguna tendencia y que la varianza es constante.
En este caso, nuevamente se grafica el correlograma
> acf(ventas_2)
3
Series ventas_2
1.0
0.5
ACF
0.0
−0.5
0 5 10 15 20
Lag
De la gráfica se puede observar que se encuentran valores dentro de las bandas de confianza, además
de ya no presentar una tendencia lineal; es por ello que, por las gráficas, se puede decir que la serie
de tiempo ya es estacionaria, pero para poder corroborar este hecho se puede aplicar la prueba de
autocorrelación y la prueba de estacionalidad de library(tseries) o library(stats) tomando un nivel
de significancia del 95% de la siguiente manera:
Prueba de autocorrelacion
Tomando:
Se aplica la prueba.
> Box.test(ventas_2,type="Ljung-Box")
Box-Ljung test
4
data: ventas_2
X-squared = 99.756, df = 1, p-value < 2.2e-16
En este caso, se tiene que el p − value es cercano a cero, es decir, se rechaza la hipótesis nula,
y, de esa manera, las autocorrelaciones son independientes y la serie de tiempo es estacionaria.
Prueba de estacionalidad
Tomando:
Se aplica la prueba.
> PP.test(ventas_2)
data: ventas_2
Dickey-Fuller = -90.165, Truncation lag parameter = 4, p-value = 0.01
Como el p − value < 0.05 se rechaza la hipótesis nula, por lo que, la serie de tiempo es
estacionaria.
Por las gráficas y las pruebas realizadas se puede concluir que la serie de tiempo es estacionaria.
Como la serie de tiempo es estacionaria se puede ajustar un modelo ARM A(p, q), en este caso, lo
primero que se debe hacer es encontrar los parámetros del modelo; esto se puede hacer a partir de
las gráficas de la función de autocorrelación y la función de autocorrelación parcial de la siguiente
manera:
Función de autocorrelación
Se grafica la función
> acf(ventas_2)
5
Series ventas_2
1.0
0.5
ACF
0.0
−0.5
0 5 10 15 20
Lag
A partir de la gráfica se toman como parámetros los valores o lineas que salen de las bandas de
confianza, en este caso son 9, por lo que q = 9 que corresponde a un modelo M A(9), además
se toma como el valor máximo para este parámetro.
6
Series ventas_2
0.2
0.0
−0.2
Partial ACF
−0.4
−0.6
−0.8
5 10 15 20
Lag
A partir de la gráfica se toman como parámetros los valores o lineas que salen de las
bandas de confianza, en este caso son 4, por lo que p = 4 que corresponde a un modelo
AR(4), además se toma como el valor máximo para este parámetro.
– ARM A(4, 9)
Se obtiene el AIC
> m1 <- arima(ventas_2, order=c(4,0,9))
> m1
Call:
arima(x = ventas_2, order = c(4, 0, 9))
Coefficients:
7
ar1 ar2 ar3 ar4 ma1 ma2 ma3 ma4
-1.2288 -0.6056 -0.0161 0.138 -2.1246 0.6974 0.7072 0.1958
s.e. NaN NaN 0.1139 NaN NaN NaN 0.2142 NaN
ma5 ma6 ma7 ma8 ma9 intercept
-0.4343 -0.2701 0.0973 0.2588 -0.1266 0e+00
s.e. NaN NaN NaN NaN NaN 1e-04
– ARM A(4, 4)
Se obtiene el AIC
> m2 <- arima(ventas_2, order=c(4,0,4))
> m2
Call:
arima(x = ventas_2, order = c(4, 0, 4))
Coefficients:
ar1 ar2 ar3 ar4 ma1 ma2 ma3 ma4
-1.0952 -0.5898 -0.3106 -0.0555 -2.2869 1.1907 0.4981 -0.4013
s.e. NaN 0.1046 0.1306 0.0860 0.0598 0.1425 0.2040 0.1031
intercept
0e+00
s.e. 1e-04
– ARM A(2, 9)
Se obtiene el AIC
> m3 <- arima(ventas_2, order=c(2,0,9))
> m3
Call:
arima(x = ventas_2, order = c(2, 0, 9))
Coefficients:
ar1 ar2 ma1 ma2 ma3 ma4 ma5 ma6
-1.4291 -0.7511 -1.9716 0.2534 1.1021 0.3960 -1.3691 0.7700
s.e. NaN 0.0673 0.1544 NaN 0.1562 0.3077 0.2150 0.2445
ma7 ma8 ma9 intercept
-0.3316 0.2668 -0.1160 0e+00
s.e. 0.2342 0.2496 0.1093 1e-04
8
En este caso AIC = 103.61.
– ARM A(2, 4)
Se obtiene el AIC
> m4 <- arima(ventas_2, order=c(2,0,4))
> m4
Call:
arima(x = ventas_2, order = c(2, 0, 4))
Coefficients:
ar1 ar2 ma1 ma2 ma3 ma4 intercept
-1.0958 -0.2943 -2.1987 0.837 0.9487 -0.5866 0e+00
s.e. NaN 0.0740 NaN NaN NaN NaN 1e-04
Por los resultados obtenidos se elige el modelo ARM A(4, 4) como el mejor, al tener el menor
AIC con valor 101.73. Ahora, al tener el mejor modelo se puede obtener la predicción, en este
caso se va a obtener para 24 periodos y se va a graficar junto con la serie de tiempo de la
siguiente manera:
9
4
2
Xt
0
−2
−4
tiempo
En este caso, se puede ver que la predicción sigue la misma tendencia que la serie de tiempo y
se puede decir que las ventas no presentarán cambios.
Otro análisis que se puede realizar es el análisis de residuales, esto a partir del mejor modelo
obtenido ARM A(4, 4), para realizarlo se grafican los residuales y el correlograma de la siguiente
manera:
> plot(m2$residuals)
10
0.5
m2$residuals
0.0
−0.5
0 50 100 150
Time
> acf(m2$residuals)
11
Series m2$residuals
1.0
0.8
0.6
ACF
0.4
0.2
0.0
−0.2
0 5 10 15 20
Lag
Se puede ver que se comportan como un ruido blanco, es decir, como estacionarios; en cuanto
al correlograma se puede decir que los errores no están correlacionados entre si.
Ahora, lo que se va a probar es si distribuyen N (0, 1), esto se puede hacer a partir de un
histograma y el cálculo del qqplot que considera los cuartiles de una distribución estandar vs
los cuantiles muestrales.
> hist(m2$residuals)
12
Histogram of m2$residuals
40
30
Frequency
20
10
0
m2$residuals
13
Normal Q−Q Plot
0.5
Sample Quantiles
0.0
−0.5
−2 −1 0 1 2
Theoretical Quantiles
En cuanto al histograma se puede observar que tiene parecido con la distribución normal, para
el qqplot se tiene que la mayorı́a de los puntos están sobre la linea, aunque en los extremos hay
algunos que se alejan, sin embargo se puede decir que si pueden distribuir como normal.
De la siguiente manera:
> ad.test(m2$residuals)
data: m2$residuals
A = 0.19401, p-value = 0.8915
14
Tomando un nivel de significancia de 95%, se tiene que el p − value > 0.05 y ,de esa manera,
no se rechaza H0 y se concluye que los residuales distribuyen N (0, 1). Tomando en cuenta que
los residuales distribuyen N (0.1) se pueden obtener los intervalos de confianza:
Y se grafican:
0
−2
−4
15