You are on page 1of 30

1

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO.
Facultad de Ciencias.
Chávez Del Arco Diego Arturo.
Series de tiempo: LakeHuron.

I. Introducción
Históricamente los científicos han utilizado la región de los Grandes Lagos de Norte América
como un indicador
1
del daño ambiental a largo plazo en el continente americano. En este trabajo,
echamos un vistazo a los niveles del Lago Hurón (LakeHuron)
2
, los cuales son registrados
anualmente, en pies, entre los años 1875-1972. El nivel máximo se registra en el año de 1876 con
581.86 pies y el nivel mínimo se registró en 1964 con 575.96 pies.
En la Figura 1. se muestra la gráfica de la serie de tiempo. Nuestra meta principal es ajustar un
modelo apropiado a los datos con el objetivo de determinar si esta tendencia es estadísticamente
significante y posteriormente, realizar un pronóstico a 10 años.
Figura 1. Gráfica de los datos de la serie de tiempo LakeHuron contra el tiempo. El código es el siguiente:
plot(LakeHuron,type="o",col="blue",xlab="Tiempo (en años)",ylab="Nivel del lago en pies", main="Nivel del
lago Huron 1875-1972")
A simple vista, notamos una tendencia a la baja principalmente marcada al inicio de la mitad de
nuestra serie. Sin embargo, es prudente que hagamos un análisis primeramente descriptivo con el
objetivo de reajustar la serie o bien, continuar con ella con el fin de encontrar un modelo ARIMA o
cualquier derivado que describa adecuadamente a los datos.

1
IJC Priority Assessment of Progress towards Restoring the Great Lakes. (2014) GREAT LAKES ECOSYSTEM
INDICATOR PROJECT REPORT. Revisado el 6 de Octubre de 2014 de:
http://www.ijc.org/files/publications/Ecosystem%20Indicators%20-Final.pdf
2
Esta serie de tiempo está integrada en el conjunto de datos de R. Solo debemos escribir data(LakeHuron) o
bien LakeHuron para acceder a ella; el paquete estadístico R, reconoce a LakeHuron como una serie de
tiempo, por lo que no es necesario aplicar la función ts a los datos.

2

Ahora bien, procedemos a realizar un análisis descriptivo con la finalidad de conocer que tan
sesgados están nuestros datos:

Aspectos descriptivos:

Primero calculamos el rango de nuestra serie ‘LakeHuron’, donde el valor mínimo de la altura del
lago es 575.96 pies y el valor máximo, es 581.86 pies, en otras palabras, la serie no es tan volátil, ya
que si realizamos la diferencia (diff(range(LakeHuron)) ) entre estos dos valores, tenemos 5.9 pies.
No podemos considerar datos atípicos en nuestra serie de tiempo, pues no tenemos un rango tan
grande.
Ahora bien, si calculamos el rango intercuantil (IQR)
3
, nos arroja un valor de 1.74, lo cual significa
que los datos no tienen una alta variabilidad entre el cuantil 0.75 y el 0.25. En cuanto a la media,
nos arroja un valor de 579.0041 y si lo comparamos con la mediana que vale 579.120, nos damos
cuenta que los datos no están sesgados y podríamos considerarlos como simétricos. Esto último se
refleja en la varianza, cuyo valor es de 1.737911.
En resumen:

RANGO DIFF(RANGO) IQR MEDIA MEDIANA VARIANZA
[575.96,581.86] 5.9 1.74 579.0041 579.120 1.737911

Entonces, nos damos cuenta que no debemos realizar una re-parametrización de la serie, ya que
nuestros datos no están sesgados, lo cual se refleja en los indicadores anteriores. Entonces, es
adecuado trabajar con esta serie sin hacer modificación alguna.

II. Determinación del modelo
Regresando a la Figura 1. del inciso I de este trabajo, nos damos cuenta que aquellas medidas en
pies, de la altura del Lago Hurón que están muy cerca en cuanto a tiempo, en general (no siempre),
también lo están en cuanto a valores. Lo cual nos indica una cierta dependencia existente en nuestra
serie.
Para tener una evidencia visual de la dependencia hablada, es adecuado graficar los lags de la serie
únicamente como un acercamiento.


3
IQR, en inglés, Interquantile Range ie. Rango Intercuantil: calcula el rango intercuartil de una muestra
especifica, es decir, la diferencia entre el percentil 75 y el 25
3


Figura 2. Gráfica de los primeros 4 lags de la serie LakeHuron. El código es el siguiente:
lag.plot(LakeHuron, lags=4, do.lines=FALSE)

Es claro que la dispersión de los puntos en el primer lag, refleja que la dependencia entre
observaciones (mediciones) consecutivas, es lineal. En cuanto a los demás lags, nos damos cuenta
que existe un incremento en la dispersión de los datos, lo que sugiere que la dependencia es cada
vez más débil. A mayor número de lags, mayor independencia de los datos.
Resumiendo lo anterior, la graficación de los lags es una forma informal de ver la ‘autocorrelación’.
La función de autocorrelación (ACF)
4
nos ayuda a calcular las autocorrelaciones de cada lag y esta
herramienta, será una de las principales para elegir un modelo ARIMA adecuado a nuestro modelo;
se muestra en la Figura 3.
La autocorrelación en el lag 0 es, por default (por definición), el valor de 1 dado que se está
calculando la correlación entre los datos y ellos mismos. Como se vio anteriormente en la graficación
de los lags, el valor más grande de la autocorrelación se encuentra en el lag 1, no obstante, la
autocorrelación para los lags mayores a 1 es sucesivamente cada vez más pequeña.

4
ACF: En inglés, Autocorrelation Function, i.e, Función de Autocorrelación.

4


Figura 3. Gráfica de la Función de Autocorrelación (ACF) de la serie LakeHuron. El código es el siguiente:
acf(LakeHuron,xlab="Rezago",ylab="ACF",main="Función de Autocorrelación",col=1)

Otra herramienta que nos ayudará en la elección de nuestro modelo, es la autocorrelación parcial
(PACF)
5
, ya que esta mide, para un lag en particular, la fuerza de la correlación lineal entre las
observaciones separadas por ese lag; se muestra en la Figura 4.

Figura 4. Gráfica de la Función de Autocorrelación Parcial (PACF) de la serie LakeHuron. El código es el
siguiente: pacf(LakeHuron, xlab="Rezago",ylab="PACF",main="Función de Autocorrelación Parcial",col=1)

5
PACF: En inglés, Partial Autocorrelation Function, i.e, Función de Autocorrelación Parcial.
5


Resumiendo:
Figura 5. Gráfica de la ACF Y FAC de la serie LakeHuron.
Ahora bien, teniendo tanto la función de Autocorrelación (ACF) así como la función de
Autocorrelación Parcial (PACF), podemos sugerir un modelo en base a las gráficas anteriormente
obtenidas. Sin embargo, debemos tener cuidado con esta serie de tiempo (LakeHuron) pues esta
posee una tendencia i.e, no es estacionaria; para confirmar esto, utilicemos la función de R, llamada
adf.test(), la cual utiliza la prueba de raíz unitaria con el método de Dickey-Fuller (1979):
Augmented Dickey-Fuller Test
data: LakeHuron
Dickey-Fuller = -2.7796, Lag order = 4, p-value = 0.254
alternative hypothesis: stationary

Dado un nivel de significancia de 0.05, no rechazamos la hipótesis nula, entonces la serie no es
estacionaria; procedemos a volverla estacionaria mediante la diferenciación mediante la función
diff() precargado en el paquete estadístico de R y lo podemos ver gráficamente en la Figura 6.

6

Figura 6. Gráfico de la serie diferenciada a distancia uno (d=1). El código es el siguiente:
plot(diff(LakeHuron),type="o",col="blue",xlab="Tiempo (en años)",ylab="Nivel del lago en pies", main="Nivel
del lago Huron 1875-1972")
Así también, calculamos ACF y PACF, para la serie diferenciada (con d=1)

Figura 7. Gráfico de la FAC Y PACF de la serie diferenciada LakeHuron (con d=1). El código es el siguiente:
par(mfrow=c(1,2))
acf(diff(LakeHuron),lag.max=length(diff(LakeHuron))/4,main="Funcion de Autocorrelacion Estimada")
pacf(diff(LakeHuron),lag.max=length(diff(LakeHuron))/4,main="Funcion de Autocorrelacion Parcial
Estimada")

III. Propuestas del modelo.
Ahora teniendo una serie estacionaria, buscamos un modelo ARIMA que se ajuste a nuestros datos.
Considerando las Funciones de Autocorrelación (ACF y PACF), podemos sugerir un modelo AR(p),
con p=2, porque a partir del lag 2 (considerando la diferencia aplicada a la serie original), la función
de autocorrelación parcial se vuelve cero. No obstante, debemos realizar la prueba con formalidad
con el propósito de estar seguros, por lo que utilizaremos la función AR( ), predefinida en el paquete
estadístico de R, utilizando máxima verosimilitud:

> ar(diff(LakeHuron), method="mle")

Call:
ar(x = LakeHuron, method = "mle")
Coefficients:
1 2 3
0.1270 -0.1833 -0.1555

Order selected 3 sigma^2 estimated as 0.5313
7

La información anterior nos da una idea del cómo proponer una p (del modelo AR), d(el # de
diferencias) así como una q(del modelo MA) por lo que entonces, podemos proponer el siguiente
modelo únicamente como ejemplo, al cual llamaremos Modelo 1: ARIMA(1,1,0); el código es el
siguiente:
>modelo1<-arima(LakeHuron,order=c(1,1,0))
Call:
arima(x = LakeHuron, order = c(1, 1, 0))

Coefficients:
ar1
0.1362
s.e. 0.1021

sigma^2 estimated as 0.5452: log likelihood = -108.23, aic = 220.45

donde el criterio de Akaike (AIC)
6
nos da 220.45. La información de Arkaike es un criterio popular
para la elección de un modelo. Para una serie de tiempo ARIMA(p,d,q) de tamaño n ajustada, el
AIC está definido como:
AIC = -2*ln(Verosimilitud) + 2*K
donde K representa el número de parámetros del modelo; elegiremos el modelo con menor AIC.
Ahora bien, después de proponer un modelo ARIMA (p,d,q), debemos checar la significancia de los
parámetros de cada uno de estos modelos al 95% de confianza.
Lo que haremos en primer lugar, es crear una función que genere los intervalos de confianza para
los n- parámetros que tenga el modelo propuesto (con n=p+q) y que nos diga si está el cero o no en
ese intervalo, con el fin de saber si son significantes o no; es importante señalar que los parámetros
son estadísticamente significantes cuando son distintos de cero en el intervalo de confianza.
Posteriormente, lo que haremos para todos los modelos, es mandar a llamar a los estimadores, que
son, de la parte del modelo x, los coeficientes, mejor conocido como parámetros del modelo
(modelox$coef). Realizado lo anterior, se llaman a las varianzas a partir de la matriz de varianzas y
covarianzas, únicamente tomando la diagonal ([i,i))
Se generará un vector de n
7
entradas donde se calcularán el límite tanto inferior como superior para
cada uno de los parámetros:

Límite inferior= vector de estimadores[i]- (1.96)SQRT(varianzas[i,i])
Límite superior= vector de estimadores[i]+ (1.96)SQRT(varianzas[i,i])


6
Akaike Information Criterion, ie el Criterio de Akaike.
7
Debemos considerar a n=length(estimadores)-1, ya que no nos interesa realizar inferencia en el último
estimadores (es la intersección)
8

donde 1.96 es el cuantil 0.95 de la distribución normal estándar (Para mayor información, revisar el
Código anexado al final del proyecto)

Para saber si el coeficiente es no significativo (en otras palabras, que se encuentra el cero),
checamos que si el límite inferior es menor que cero y además el límite superior es mayor que cero,
si hacemos la operación lógica de igualdad para las operaciones anteriores en el paquete estadístico
de R, y nos arrojase TRUE, esto significa que contiene al cero. Por ejemplo:
Si tuviésemos un caso hipotético en el que se tuviera un ARMA(3,0,2), y aplicásemos la función
anteriormente descrita, tendríamos lo siguiente:
>signific.parametros(modelox)
[1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE
Lo cual nos indica que posee muchos parámetros no significantes aunado al hecho de que no
podemos considerar al modelo como parsimónico.
8

Proponiendo ahora distintos modelos ARIMA(p,d,q) para nuestra serie de tiempo tomando en
consideración tanto la significancia de los parámetros de cada modelo así como el AIC, tenemos el
siguiente cuadro informativo:

Modelos Sigma
cuadrada
AIC Significancia de
parámetros
¿Posee muchos
parámetros no
significativos?
¿Es un buen
modelo?
ARIMA(1,1,0)

0.5452 220.45 TRUE TRUE SI NO

ARIMA(1,2,0)

0.8681 262.95 FALSE TRUE NO NO
ARIMA(1,2,1)

0.551 225.5 TRUE SI NO
ARIMA(1,1,2)

0.4816 213.12 FALSE FALSE Ninguno. SI

ARIMA(0,1,4)

0.4819 215.18 TRUE FALSE FALSE NO SI
Tabla 1. Tabla que engloba los mejor modelos que ajustan los datos de LakeHuron con el menor AIC así
como información relativa a la significancia de los parámetros.

El modelo ARIMA(1,1,2), posee el valor más pequeño de AIC (213.12), por lo que sería bueno checar
gráficamente tanto la serie original LakeHuron como el modelo ARIMA(1,1,2) el cual ajusta de la
mejor forma a nuestra serie de tiempo.

8
El principio de parsimonia sugiere construir modelos que incluyan el menor número posible de parámetros;
entre más pequeño el modelo, más interpretable.
9

Figura 8. (PARTE SUPERIOR) Gráfico comparativo de la FAC de la serie LakeHuron y su estimación,
ARIMA(1,1,2).(PARTE INFERIOR) Gráfico comparativo de la PACF de la serie LakeHuron y su estimación
ARIMA(1,1,2).
De acuerdo al criterio de información Akaike, el mejor modelo que se ajusta a los datos
“LakeHuron” de acuerdo al criterio AIC es un modelo ARIMA(1,1,2)
9
. Sin embargo existen
otros supuestos que debe de cumplir, tal es el caso de que los residuales que no estén
correlacionados, se distribuya bajo una distribución normal. Para estas pruebas se usa la
función Box.test(), el correlograma para ACF, shapiro.test(), el gráfico de cuantiles (QQ-
Plots) e Histogramas.

IV. Validación del modelo.
A continuación, realizaremos un primer acercamiento gráfico de los residuales bajo el ajuste
ARIMA(1,1,2), con la finalidad de introducir una análisis enfocado a probar los supuestos anteriores:

9
La función auto.arima(), de la librería ‘forecast’ del paquete estadístico de R, nos indica que el mejor modelo
para nuestra serie de tiempo LakeHuron debe ser un ARIMA(0,1,4), sin embargo, hemos encontrado que el
modelo ARIMA(1,1,2) tiene menor varianza así como un AIC pequeño a comparación del propuesto por R.
10


Figura 9. (PARTE SUPERIOR) Gráfica de los residuales así como la Gráfica de los Residuales vs Valores
Ajustados. (PARTE INFERIOR) Gráfica del Histograma de los residuales así como la Función de
Autocorrelación de los residuales.
Nos damos cuenta que los residuales se encuentran alrededor del cero, aunque con un poco con el
efecto de la varianza. En adición, realizamos la gráfica de los residuales
10
versus (vs) el ajuste con el
objetivo de saber si los residuales crecen conforme el ajuste crece (i.e si ajustamos datos que son
grandes, podemos conocer si los residuales crecen o no con el objetivo de saber cómo se comporta
la varianza).
El histograma en este caso, en un poco engañoso pues pareciera que la distribución Normal está
sesgada a la izquierda, por lo que necesitaremos de pruebas formales como la prueba de Shapiro-
Francia, Lilliefors, etc. En cuanto al correlograma, vemos que los residuales no se salen de las
bandas de confianza.

Otro vistazo a las pruebas gráficas de normalidad de los residuales, bajo el modelo ARIMA(1,1,2) es
el siguiente:

10
Las diferencias entre el valor observado y el valor ajustado correspondiente es el residual

11



Figura 10. (Parte superior) Gráfico del Histograma de los residuales tomando en cuenta una distribución
Normal y Gráfico de los Residuales estandarizados.
(Parte inferior) Gráfico del Qq plot con su respectiva ‘línea de normalidad’ y Gráfico de la ACF.

Lo anterior sugiere que los residuales tienen distribución Normal, sin embargo, debemos dar un
enfoque estricto a los supuestos. Los residuales estandarizados sugieren una varianza constante.
Ahora utilizando un enfoque formal a nuestros residuales para probar los supuestos:
A) No Correlación.
Utilizamos tanto la prueba de Box-Pierce así como la prueba de Box-Ljung, utilizando información
de los residuales, así como el número de lags que nos interesa en que se realice la prueba. Con lo
anterior, nos fijamos en los p-values desplegados con el objetivo de comparar con un nivel de
significancia 1-α. Lo que buscamos es no rechazar la hipótesis nula, ie, queremos p-valores grandes.
Ho: Los residuales son no correlacionados.
Ha: Residuales no correlacionados i.e. queremos p valores grandes.

Para nuestros residuales de la serie LakeHuron, bajo un nivel de significancia α=0.05, realizamos la
prueba tanto de Box-Ljung así como la de Box-Pierce para un número de n=10 lags y si comparamos
el p-value para cada lag con un nivel de significancia α, este nos da como resultado que los p-valores
son mayores (TRUE), entonces comprobamos formalmente la no correlación de los residuales:
12


> correlaciontest.res(modelo3,10,.95)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
testBoxPierce TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
testBoxLjung TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

B) Normalidad.
Existen distintas pruebas formales para probar que un conjunto de datos se comportan como una
distribución Normal, las más conocidas son: Anderson Darling, Cramér Von Mises, Lilliefors, Pearson,
Shapiro-Francia, étc. Aplicando las pruebas anteriores para nuestros residuales, nos fijamos en los
p-values desplegados con el objetivo de comparar con un nivel de significancia α. Lo que buscamos
es no rechazar la hipótesis nula Ho, i.e. buscamos que p-value > α.
Ho: Los residuales tienen distribución Normal.
Ha: Los residuales no tienen distribución Normal.

Se muestran a continuación los p-valores que arrojan las pruebas anteriormente mencionadas:

Nombre de Prueba P-value ¿Rechazamos Ho al
nivel de significancia
0.05?
Conclusión
Anderson Darling

0.7021603

No



Los residuales
tienen una
distribución Normal

Cramér Von Mises 0.8573810 No
Lilliefors

0.7764038 No
Pearson

0.4659075 No
Shapiro 0.5930039 No

Tabla 2. Tabla que engloba 5 distintas pruebas de Normalidad sobre los residuales de la serie de tiempo
LakeHuron.






13

C) Media Cero.
Ahora chequemos si los residuales tienen media cero mediante la función t.test() del paquete
estadístico de R, donde las hipótesis son las siguientes:
H0: Los residuales tienen media cero.
Ha: Los residuales no tienen media cero.

Lo que buscamos es que el p-value de nuestros residuales de la serie LakeHuron tengan media cero,
por lo que buscamos p-value> α.
Tenemos como resultado lo siguiente:
data: r
t = -0.867, df = 97, p-value = 0.3881
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
-0.19985687 0.07832993
sample estimates:
mean of x
-0.06076347

Entonces, dado que nuestro p-value es igual a 0.3881, no rechazamos la hipótesis de que los
residuales tienen media cero, por lo que podríamos considerar que los residuales posee una µ=0.

D) Varianza constante.
Dado que no tenemos una prueba formal adecuada para probar varianza constante en series de
tiempo (sólo las hay para regresiones) en el paquete estadístico de R, optamos por realizar un
muestreo aleatorio simple sin reemplazo tomando una n (entero) de tamaño de rango del 25% al
50% de nuestros residuales, de nuestro modelo ARIMA(1,1,2) de los datos de la serie de tiempo
LakeHuron.
Después de haber realizado lo anterior, creamos muestras aleatorias simples de los residuales de
tamaño n (descrita anteriormente). En nuestro caso tomamos 4 muestras aleatorias de estos
residuales (e1,e2,e3,e4) y finalmente corremos tests de varianzas entre cada posible combinación
de las 4 muestras escogidas tomando la parte que nos interesa: los p-values
Por ejemplo: Utilizando lo anterior para nuestra serie LakeHuron, ie.
Primero calculamos las muestras aleatorias simples de tamaño n (proveniente de una muestra
aleatoria simple) sobre los residuales e1 y e2:

> e1<-sample(r,size=n,replace=FALSE)
> e2<-sample(r,size=n,replace=FALSE)

14

Teniendo lo anterior procedemos a realizar tests de varianza para cada combinación de las muestras
aleatorias de residuales con la función var.test()

> var.test(e1,e2)

F test to compare two variances

data: e1 and e2
F = 7.2188, num df = 2, denom df = 2, p-value = 0.2433
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.1850983 281.5344856
sample estimates:
ratio of variances
7.218833
.
.
. Y así para las demás combinaciones posibles de residuales.

Posteriormente tomamos los p-values de cada una de las pruebas de varianza y calculamos la
mediana debido a que es una mejor medida de tendencia central a comparación de la media, que
es sensible a datos atípicos aunado al hecho de que estamos realizando muestras aleatorias simples
para conocer estos p-valores. El resultado es el siguiente:
> varianza.res(modelo4)
[1] 0.80981058

Concluimos que la varianza es constante, pues representa el p-valor de las pruebas sobre los
residuales. Podría decirse que la varianza de toda la muestra es igual, pues se tomaron subconjuntos
aleatorios y se compararon varianzas.

Como hemos visto anteriormente, se cumplieron todos los supuestos sobre los residuales por lo que
en efecto, no debemos realizar ninguna transformación de Box-Cox para encontrar un mejor modelo
que el que tenemos: ARIMA (1,1,2). En cuanto a las características de nuestro modelo, su fortaleza
reside en el hecho de que posee una varianza pequeña (0.4816) con un AIC más pequeño a
comparación de los otros modelos propuestos, por otro lado, si quisiéramos ver una debilidad del
modelo, sería tal vez el resultante de compararlo con el modelo que provee el paquete estadístico
R, pues este último asegura que el mejor modelo es un ARIMA(0,1,4) el cual solo posee una parte
MA con q=4 y d=1, por lo que no dependería de valores anteriores como es lo que sucede en la parte
auto regresiva, sin embargo el modelo de medias móviles posee tanto una varianza y un AIC más
grande que nuestro modelo.

Finalmente, podemos dar pie al pronóstico de la altura, en pies, de los próximos 10 años del Lago
Hurón.
15

V. Pronóstico
Ahora bien, dado que ya tenemos un modelo estacionario, cuyos parámetros son
significativos y además se comprueba que los residuos no están correlacionados, se
distribuyen independientes y bajo una distribución normal, podemos realizar el pronóstico
con ayuda del paquete estadístico R.
Se pronostica la altura del Lago Hurón para 10 años futuros (1972 a 1982) con la función
forecast() con un intervalo de confianza del 95%. Los datos pronosticados se muestran en la
Figura 11. con los límites de predicción del 95%, además se muestra el gráfico con que nos
ilustra los datos predichos y el límite de predicción.

Figura 11. Pronóstico de la altura, en pies, del Lago Hurón para el intervalo de años de 1972 a 1982.

Recopilando la información en cuanto a los intervalos de confianza del 95% para cada valor
pronosticado, vamos a tener lo siguiente:
Año
pronosticado
Valor Pronosticado (en
pies)
Límite inferior (en
pies)
Límite superior (en
pies)
1973 579.5848 578.2247 580.9450
1974 579.2943 577.3084 581.2802
1975 579.1061 576.8563 581.3559
1976 578.9843 576.5949 581.3737
1977 578.9054 576.4314 581.3794
1978 578.8543 576.3230 581.3856
1979 578.8212 576.2471 581.3953
1980 578.7998 576.191 581.4083
1981 578.7859 576.1478 581.4240
1982 578.7769 576.1122 581.4416
Tabla 3. Tabla con los pronósticos de la altura, en pies, del Lago Huron a partir de 1973 a 1982.
16

VI. Comprobación
Ahora cortaremos una parte de nuestra serie y pronosticaremos los datos siguientes para ver qué
tan parecidos o diferentes son a los datos con los que ya contamos; utilizaremos distintos niveles
de confianza (95% y 99%)
Entonces, procedemos a quitar los últimos 10 datos de nuestra serie de tiempo, los cuales
corresponden al periodo de 1963 a 1972. A esta serie, la llamaremos LakeHuronModificada. Por
consiguiente, utilizaremos la función forecast() del paquete estadístico de R utilizando el mejor
modelo para nuestra serie: ARIMA(1,1,2), utilizando primeramente un nivel de confianza del 95%.
Tenemos la siguiente gráfica del nuevo pronóstico:

Figura 12. Pronóstico de la altura, en pies, del Lago Hurón para el intervalo de años de 1963 a 1972.

La función forecast() nos indica los siguientes valores para el periodo de 1963 a 1972, bajo un nivel
de confianza del 95%:
Año
pronosticado
Valor Pronosticado
(en pies)
Límite inferior (en pies) Límite superior (en pies)
1963 578.1878 576.8486 579.5270
1964 578.3209 576.3662 580.2757
1965 578.3944 576.2144 580.5744
1966 578.4349 576.1416 580.7282
1967 578.4572 576.0936 580.8209
1968 578.4696 576.0546 580.8845
1969 578.4764 576.0193 580.9334
1970 578.4801 575.9859 580.9744
1971 578.4822 575.9534 581.0110
1972 578.4833 575.9217 581.0450
Tabla 4. Tabla con los pronósticos de la altura, en pies, de la serie de tiempo LakeHuronModificada, de
1963 a 1972, a un nivel de confianza del 95%.

17

Ahora, lo que debemos realizar es comparar los datos que hemos pronosticado versus (vs) los datos
que habíamos obtenido anteriormente:

DATOS
ORIGINALES
PRONÓSTICO CON SERIE RECORTADA (95% de
confianza)
Año
pronosticado
Altura (en pies) Valor
Pronosticado
(en pies)
Límite inferior
(en pies)
Límite superior (en
pies)
1963 576.89 578.1878 576.8486 579.5270
1964 575.96 578.3209 576.3662 580.2757
1965 576.8 578.3944 576.2144 580.5744
1966 577.68 578.4349 576.1416 580.7282
1967 578.38 578.4572 576.0936 580.8209
1968 578.52 578.4696 576.0546 580.8845
1969 579.74 578.4764 576.0193 580.9334
1970 579.31 578.4801 575.9859 580.9744
1971 579.89 578.4822 575.9534 581.0110
1972 579.96 578.4833 575.9217 581.0450
Tabla 5. Tabla con los pronósticos de la altura, en pies, de la serie de tiempo LakeHuronModificada, de
1963 a 1972 vs los datos originales de la serie LakeHuron.

Entonces si checamos los datos pronosticados bajo la estimación proporcionada por el ARIMA(1,1,2)
y comparamos con los datos originales, vemos que estos últimos entran en las bandas confianza del
pronóstico salvo en el año 1964, ya que en este año el dato original indica que el lago tiene una
altura de 575.96 pies y la banda de confianza pronosticada para ese año, estima que la altura del
lago estará entre 576.3662 y 580.2757

Probemos ahora para un nivel de confianza del 99%, y veamos lo que nos despliega el paquete
estadístico R.

Año
pronosticado
Valor Pronosticado (en
pies)
Límite inferior (en
pies)
Límite superior (en
pies)
1963 578.1878 576.4278 579.9479
1964 578.3209 575.7520 580.8899
1965 578.3944 575.5294 581.2594
1966 578.4349 575.4210 581.4488
1967 578.4572 575.3509 581.5636
1968 578.4696 575.2958 581.6434
1969 578.4764 575.2473 581.7055
1970 578.4801 575.2021 581.7581
1971 578.4822 575.1588 581.8056
1972 578.4833 575.1167 581.8499
Tabla 6. Tabla con los pronósticos de la altura, en pies, de la serie de tiempo LakeHuronModificada, de
1963 a 1972 vs los datos originales de la serie LakeHuron, a un nivel de confianza del 99%

18

En efecto, para un nivel de confianza del 99%, checamos que los valores originales de la serie de
tiempo del Lago Hurón, entran en las bandas de confianza de los valores pronosticados para los años
que van desde 1963 a 1972, lo cual es muy bueno.
Finalmente, después de haber realizado el proceso de Box-Jenkins en nuestro trabajo, hemos
comprobado que el modelo ARIMA(1,1,2) es el mejor modelo que ajusta a la serie de tiempo
LakeHuron, permitiéndonos realizar predicciones muy buenas tanto para un nivel de confianza del
95% como de 99%.


Figura 13. Procedimiento Box-Jenkins para generar un ARIMA(p,d,q) y generar pronósticos.











19

Código:

################################# I N I C I O ####################################################
install.packages(tseries)
install.packages(forecast)
install.packages(agricolae)
library(tseries)
library(forecast)
library(agricolae)

win.graph(width=11,height=5,pointsize=8) #Creación de una ventana de 5x11.
plot(LakeHuron,type="o",col="blue",xlab="Tiempo (en años)",ylab="Nivel del lago en pies", main="Nivel del lago
Huron 1875-1972") #Gráfica de la serie de tiempo

##### E X P L O R A C I O N D E L A S E R I E##### P A R T E 1 #############################################
data(LakeHuron)
serie<-LakeHuron
serie #Guardamos la serie LakeHuron en el vector 'serie'.
range(serie) #Calcula rango de la serie.
diff(range(serie)) #Calcula la diferencia del rango de la serie.
IQR(serie) #Calcula el rango intercuantil de la serie.
mean(serie) #Calcula la media de la serie.
quantile(serie, probs = c(0.25,0.5, 0.75)) #Calcula el 1er,3er cuartil y la mediana.
var(serie) #Calcula la varianza de la serie.
sd(serie) #Calcula la desviación estándar de la serie.
plot(serie) #Gráfica de la serie de tiempo.

lag.plot(LakeHuron, lags=4, do.lines=FALSE) #Gráfica de los lags de la serie.
acf(LakeHuron,xlab="Rezago",ylab="ACF",main="Función de Autocorrelación",col=1)#Gráfica de ACF
pacf(LakeHuron, xlab="Rezago",ylab="PACF",main="Función de Autocorrelación Parcial",col=1) #Gráfica de PACF

##### D E T E R M I N A C I O N D E L M O D E L O##### P A R T E 2 ########################################
determ.modelo<-function(x){
par(mfrow=c(1,2)) #Partición del espacio gráfico en una matriz de 1x2
acf(x,lag.max=20,main="Funcion de Autocorrelacion Estimada") #Cálculo de la ACF de la serie, tomando en
consideración un número de 20 lags en la graficación
pacf(x,lag.max=20,main="Funcion de Autocorrelacion Parcial Estimada") #Cálculo de la PACF de la serie, tomando
en consideración un número de 20 lags en la graficación
}
determ.modelo(serie)
#Calcula la ACF y PACF de la serie, con el objetivo de proponer un modelo.


##### P R O P U E S T A S D E M O D E L O S##### P A R T E 3 #########################################
adf.test(serie) #Checamos si la serie es estacionaria mediante la prueba de Dickey-Fuller.
var(serie) #Calculo de la varianza de la serie.
var(diff(serie)) #Cálculo de la varianza de la diferencia de la serie.
var(diff(diff(serie))) #Cálcilo de la varianza de la serie diferenciada 2 veces.
#El aumento en la varianza sugiere la estacionariedad de la serie, después de la primera diferenciación.
plot(diff(LakeHuron),type="o",col="blue",xlab="Tiempo (en años)",ylab="Nivel del lago en pies", main="Nivel del
lago Huron 1875-1972") #Diferenciamos la serie de tiempo con el objetivo de volverla estacionaria
20

par(mfrow=c(1,2)) #Partimos el especio gráfico en una matriz de 1x2.
acf(diff(LakeHuron),lag.max=length(diff(LakeHuron))/4,main="Funcion de Autocorrelacion Estimada")
#Calculamos ACF para la serie diferenciada.
pacf(diff(LakeHuron),lag.max=length(diff(LakeHuron))/4,main="Funcion de Autocorrelacion Parcial Estimada")
#Calculamos PACF para la serie diferenciada.

#Consideremos un modelo ARIMA(1,1,0) como una primera propuesta de modelo.
modelo1<-arima(serie,order=c(1,1,0))

sifnific.parametros<-function(x){ #<-----LA EXPLICACIÓN SE ENCUENTRA EN LA PARTE DE ABAJO
estimadores<-x$coef
varianzas<- vcov(x)
n=length(estimadores)-1
li<-1:n
for(i in 1:n)
{
li[i]<-estimadores[i]-1.96*sqrt(varianzas[i,i])
}
ls<-1:n
for(i in 1:n)
{
ls[i]<-estimadores[i]+1.96*sqrt(varianzas[i,i])
}
c1<-li<=0
c2<-ls>=0
resultado<-c1==c2
resultado
}

########Lo que se hace en primer lugar, es crear una función que genere los intervalos de confianza para los n-
parámetros que tenga el modelo propuesto (con n=tamañodelaserie-1) y que nos diga si está el cero o no en ese
intervalo, con el fin de saber si son significantes o no; es importante señalar que los parámetros son
estadísticamente significantes cuando son distintos de cero en el intervalo de confianza.#####
#Posteriormente, lo que haremos para todos los modelos, es mandar a llamar a los estimadores, que son, de la
parte del modelo x, los coeficientes, mejor conocido como parámetros del modelo (modelox$coef). Realizado lo
anterior, se llaman a las varianzas a partir de la matriz de varianzas y covarianzas, únicamente tomando la diagonal
([i,i)) ####
#Se generará un vector de n entradas donde se calcularán el límite tanto inferior como superior para cada uno de
los parámetros:
#
#
#Límite inferior= vector de estimadores[i]- (1.96)SQRT(varianzas[i,i])
#Límite superior= vector de estimadores[i]+ (1.96)SQRT(varianzas[i,i])
#
#donde 1.96 es el cuantil 0.95 de la distribución normal estándar.
#
#Para saber si el coeficiente es no significativo (en otras palabras, que se encuentra el cero), checamos que si el
límite inferior es menor que cero y además el límite superior es mayor que cero, si hacemos la operación lógica de
igualdad para las operaciones anteriores en el paquete estadístico de R, y nos arrojase TRUE, esto significa que
contiene al cero.
#############################################################################################
#############################################################################################
21

#############################################################################################
#############################################################################################
################ C O N T I N U A N D O ###########################################################

#PROPONEMOS 5 MODELOS
modelo1<-arima(serie,order=c(1,1,0)) #ARIMA(1,1,0)
modelo2<-arima(serie,order=c(1,2,0)) #ARIMA(1,2,0)
modelo3<-arima(serie,order=c(1,2,1)) #ARIMA(1,2,1)
modelo4<-arima(serie,order=c(1,1,2)) #ARIMA(1,1,2)
modelo5<-arima(serie,order=c(0,1,4)) #ARIMA(0,1,4)
#La información de Arkaike es menor en el modelo 4, por lo tanto trabajamos sobre él.
#Ahora, analizamos gráficamente el mejor modelo: ARIMA(1,1,2) así como los datos originales.
explor.ajuste<-function(x,y)
{par(mfrow=c(2,2)) #Partición del espacio gráfico en una matriz de 2x2
acf(x,lag.max=length(x)/2,main="Autocorrelación Estimada de la Serie 'LakeHuron'",xlab="Rezago") #Cálculo de la
ACF de la serie, tomando en consideración un tamaño de lags equivalente a la mitad de la serie, en la graficación
acf(fitted(y),lag.max=length(fitted(y))/2, main="Autocorrelación Estimada del Ajuste",xlab="Rezago") #Cálculo de
la ACF del modelo, tomando en consideración un tamaño de lags equivalente a la mitad de la serie, en la graficación
pacf(x,lag.max=length(x)/2,main="Autocorrelación Parcial Estimada de la Serie 'LakeHuron'",xlab="Rezago")
#Cálculo de la PACF de la serie, tomando en consideración un tamaño de lags equivalente a la mitad de la serie, en
la graficación
pacf(fitted(y),lag.max=length(fitted(y))/2, main="Autocorrelación Parcial Estimada del Ajuste",xlab="Rezago")
#Cálculo de la PACF del modelo, tomando en consideración un tamaño de lags equivalente a la mitad de la serie,
en la graficación
}
explor.ajuste(serie,modelo4)

##### V A L I D A C I Ó N D E L M O D E L O ##### P A R T E 4 #######################################
#ANALISIS EXPLORATIVO.
analisis.res<-function(x){
par(mfrow=c(2,2)) #Partición del espacio gráfico en una matriz de 2x2.
r<-x$residuals #Cálculo de los residuales del modelo que se introduzca.
plot(r,main="Residuales") #Gráfica de los residuales.
Residuales<-as.numeric(r) #Residuales tomados como un vector numérico.
Ajuste<-as.numeric(fitted(x)) #Valores ajustados tomados del modelo.
plot(Residuales,Ajuste,type = "p",main="Residuales vs Valores ajustados") #Gráfica de los residuales versus los
Valores Ajustados.
hist(Residuales,main="Histograma Residuales") #Gráfica del Histograma de los Residuales.
acf(r,lag.max=trunc(length(r)/2),main="Correlograma Residuales") #Gráfica de la Función de Autocorrelación.
}
analisis.res(modelo4)

#Otro análisis gráfico para checar los supuestos sobres los residuales.
par(mfrow=c(2,2)) #Partición del espacio gráfico en una matriz de 2x2.
histograma<-hist(residuals(modelo4), main=paste("Prueba de Normalidad para los residuos"),col="green")
#Gráfica de los residuales mediante histograma.
normal.freq(histograma,col="red", lty=5,lwd=2)
qqnorm(residuals(modelo4)) # Prueba de normalidad mediante grafico.
qqline(residuals(modelo4)) # Línea del grafico de normalidad.
R<-residuals(modelo4)/modelo4$sigma #Hacemos la división entre los residuales y su división entre la
desviación estándar.
22

plot(R,ylab="Residuos estandarizados",main="Residuales estandarizados",type="o")#Gráfica de los residuales
estandarizados
abline(0,0, lty=2)
acf(residuals(modelo4),xlab="h",ylab="ACF", main="Funcion de Autocorrelación de los residuales") #Gráfica de
ACF de los residuales.

#Se comprueban los supuestos.
#NO CORRELACION
tsdiag(modelo4)
correlaciontest.res<-function(y,n,a){
r<-y$residuals #Calcula los residuales del modelo
BoxPierce<-1:n #Se crea un vector de 1 a n, al cual llamaremos Box-Pierce
BoxLjung<-1:n #Se crea un vector de 1 a n, al cual llamaremos Box-Ljung
for( i in 1:n){ #Corremos desde i=1 hasta i=n
BoxPierce[i]<-(Box.test(r,lag=i,type = "Box-Pierce"))$p.value #Se aplica la prueba de Box-Pierce a los residuales, y
se toma solamente los p-valores para un i de lags determinados.
BoxLjung[i]<-(Box.test(r,lag=i,type = "Ljung-Box"))$p.value #Se aplica la prueba de Box-Ljung a los residuales, y se
toma solamente los p-valores para un i de las determinados.
}
testBoxPierce<- BoxPierce>1-a #Se compara el p-valor si es mayor a uno menos alfa, en el caso de la prueba
de Box-Pierce.
testBoxLjung<- BoxLjung>1-a #Se compara el p-valor si es mayor a uno menos alfa, en el caso de la prueba
de Box-Ljung.
test<-rbind(testBoxPierce,testBoxLjung) #Se toman ahora en columas las columnas de las pruebas anteriores.
test
}
correlaciontest.res(modelo4,5,.95) #Probamos la correlación para un número de 5 lags, a un nivel de
confianza del 95%
correlaciontest.res(modelo4,10,.95) #Probamos la correlación para un número de 10 lags, a un nivel de
confianza del 95%


#NORMALIDAD
library(nortest)
normalidadtest.res<-function(y){ #Creación de una función que calcula las siguientes pruebas:
r<-y$residuals #Asignamos a r, los residuales del modelo en cuestión.
AndersonDarling<-(ad.test(r)$p.value) #Calcula prueba de Anderson Darling a los residuales, tomando
unicamente los p-valores
CramervonMises<-(cvm.test(r)$p.value) #Calcula prueba de Cramér Von Mises a los residuales, tomando
unicamente los p-valores
Lilliefors<-(lillie.test(r)$p.value) #Calcula prueba de Lilliefors a los residuales, tomando unicamente los p-valores
Pearson<-(pearson.test(r)$p.value) #Calcula prueba de Pearson a los residuales, tomando unicamente los p-
valores
Shapiro<-(sf.test(r)$p.value) #Calcula prueba de Shapiro-Francia a los residuales, tomando unicamente los
p-valores
nor<-rbind(AndersonDarling,CramervonMises,Lilliefors,Pearson,Shapiro)
nor
}
normalidadtest.res(modelo4)



23

#MEDIA CERO
t.test(r,mu=0) #Prueba formal para checar si media de la serie es cero.

#VARIANZA CONSTANTE


varianza.res<-function(y){
r<-as.numeric(y$residuals) #Se asigna al vector r, los residuales del modelo, como un vector numérico.
tamañodemuestra<-length(fitted(y)) #Se toma el tamaño de la muestra del número de valores ajustados del
modelo, el cual es igual al modelo original.
n<-sample(trunc(0.25*tamañodemuestra):trunc(0.5*tamañodemuestra),size=1) #Se toma una muestra aleatoria
sin reemplazo del tamaño entre el 25% y el 50% de los datos.
e1<-sample(r,size=n,replace=FALSE) #SE TOMAN 4 MUESTRAS ALEATORIAS; 1ERA MUESTRA.
e2<-sample(r,size=n,replace=FALSE) #2DA MUESTRA.
e3<-sample(r,size=n,replace=FALSE) #3ERA MUESTRA.
e4<-sample(r,size=n,replace=FALSE) #4TA MUESTRA.
p1<-var.test(e1,e2)$p.value #Se hace pruebas de varianza entre cada posible combinación de estas
muestras de residuales; se comparan los p-valores con el objetivo de rechazar o no rechazar la hipótesis nula.
p2<-var.test(e1,e3)$p.value
p3<-var.test(e1,e4)$p.value
p4<-var.test(e2,e3)$p.value
p5<-var.test(e2,e4)$p.value
p6<-var.test(e3,e4)$p.value
test<-cbind(p1,p2,p3,p4,p5,p6)
median(test) #Se calcula la mediana de los p-valores
}
varianza.res(modelo4) #Se introduce el modelo escogido

##### P R O N Ó S T I C O ##### P A R T E 5 #########################################################
win.graph(width=11,height=5,pointsize=8) #Creación de una ventana de 5x11.
graf.pronostic<-function(x,y,n,a) { #Función al cual se le inroduce la serie original, el modelo que proponemos, y
el nivel de confianza que queremos.
plot(forecast(y,n,a),ylim=c(min(x),max(x)), main="Serie 'LakeHuron', Ajuste y Predicción",col="blue",xlab="Tiempo
(En años)",ylab="Altura (en pies)")
points(fitted(y), ylim=c(min(x),max(x)), col="red",type="o", pch=12)
}
graf.pronostic(serie,modelo4,10,0.95) #Gráfica del pronóstico.
forecast(modelo4,10,.95) #Nos arroja los valores del pronóstico.

###### C O M P R O B A C I Ó N D E L M O D E L O ##### P A R T E 6 ###################################
#COMPROBACIÓN DE PRONOSTICO DE LA SERIE DE TIEMPO LAKEHURON
#RECORTAMOS LOS ULTIMOS 10 DATOS DE LA SERIE LAKE HURON
read.table (file = "LakeHuron.txt", header = TRUE) ####Lee el archivo .txt donde hemos recortado los datos.
LakeHuronModificada1<-read.table (file = "LakeHuron.txt", header = TRUE) #Asignamos la operación a
LakeHuronModificada1
is.ts(LakeHuronModificada1) #Preguntamos si es una serie de tiempo
LakeHuronModificada<-ts(LakeHuronModificada,start=c(1875,1),frequency=1) #Creamos la serie de tiempo
correspondiente, comenzando en 1875
is.ts(LakeHuronModificada) #Preguntamos si es una serie de tiempo; por supuesto que lo es.
LakeHuronModificada
plot(LakeHuronModificada)

24

#PRONÓSTICO DE LA SERIE RECORTADA
#GRAFICA DEL PRONÓSTICO
library(forecast) #Corremos la librería forecast
win.graph(width=11,height=5,pointsize=8) #Creamos una ventana de 5x11
graf.pronostic<-function(x,y,n,a) { #Creamos una función que nos pida la serie, nuestro modelo, el número de
datos a pronosticar y un nivel de confianza)
plot(forecast(y,n,a),ylim=c(min(x),max(x)), main="Serie 'LakeHuronModificada', Ajuste y
Predicción",col="blue",xlab="Tiempo (En años)",ylab="Altura (en pies)") #Graficamos la serie de tiempo
points(fitted(y), ylim=c(min(x),max(x)), col="red",type="o", pch=12)
}
graf.pronostic(LakeHuronModificada,modelo4,10,0.95) #Realiza la grafica

forecast(modelo4,10,.95) #Nos arroja la predicción de 10 datos para nuestro modelo 4 al 95% de confianza.







































25

Enfoque Clásico

Una serie tiempo es una secuencia de observaciones, medidos en determinados
momentos del tiempo, ordenados cronológicamente y, espaciados entre sí de manera
uniforme, así los datos usualmente son dependientes entre sí. El principal objetivo de una serie
de tiempo es su análisis para hacer pronóstico.

Componentes de una serie temporal:

El análisis clásico de las series temporales se basa en la suposición de que los valores que toma
la variable de observación es la consecuencia de tres componentes, cuya actuación conjunta da
como resultado los valores medidos, estos componentes son:

 Componente tendencia.- Se puede definir como un cambio a largo plazo que se produce
en la relación al nivel medio, o el cambio a largo plazo de la media. La tendencia se
identifica con un movimiento suave de la serie a largo plazo.


 Componente estacional.- Muchas series temporales presentan cierta periodicidad o
dicho de otro modo, variación de cierto período (semestral, mensual, etc.). Estos
efectos son fáciles de entender y se pueden medir explícitamente o incluso se pueden
eliminar de la serie de datos, a este proceso se le llama desestacionalización de la serie.


 Componente aleatoria.- Esta componente no responde a ningún patrón de
comportamiento, sino que es el resultado de factores fortuitos o aleatorios que inciden
de forma aislada en una serie de tiempo.

En este trabajo, echamos un vistazo a los niveles del Lago Hurón (Lake Huron), los cuales fueron
registrados anualmente, entre los años 1875-1972. Históricamente los científicos han utilizado
la región de los Grandes Lagos de Norte América como un indicador del daño ambiental a largo
plazo en el continente americano. El nivel máximo se registra en el año de 1876 con 581.86
unidades y el nivel mínimo se registró en 1964 con 575.96 unidades.





26

Realizando la gráfica de los datos originales así como el de nuestro ajuste clásico:

Figura 1. Gráfica de los datos de LakeHuron y su respectivo ajuste cuadrático.

Series1 nos nuestra la gráfica de los datos obtenidos del Lago, a esta se le ajustaron líneas de
tendencia y observamos según las R
2
que la polinómica de grado 2 es la que mejor explica el
comportamiento de nuestros datos, esto nos servirá para hacer una comparación entre los Errores
Cuadráticos Medios de los datos ajustados con la serie polinómica y las medias móviles.

ECM= 1.029413 ECM= 0.3448222

Los anteriores son los datos obtenidos en Excel, el primer ECM pertenece a los datos obtenidos con
la serie polinómica de grado 2, mientras que el segundo pertenece a los datos obtenidos mediante
Medias Móviles. Así al buscar minimizar distancias tomamos el menor, es decir el de la Medias
Móviles.
Lo siguiente es ver que método usaremos el aditivo o el multiplicativo, para esto obtenemos los
residuos según cada método, para el aditivo la diferencia entre los datos originales y los datos
obtenidos por medias móviles y para el método multiplicativo la razón entre los datos originales y
los datos obtenidos por Medias Móviles, ya con los residuos, procedemos a obtener los coeficientes
de variación de los residuos por periodo.

Los primera fila de coeficientes de variación pertenecen a los residuos obtenidos con el método
aditivo, los segundos a los residuos obtenidos con el método multiplicativo. Evidentemente los
menores pertenecen al método multiplicativo, por lo tanto nos quedamos con este método.

y = 0.0007x
2
- 0.0911x + 581.32
R² = 0.4083
572
574
576
578
580
582
584
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97
Series1
Poly. (Series1)
27

Una vez eligiendo el metodo podemos obtener la parte estacional de la siguiente manera:
() = − ( −)
Donde:
Rt: Residuos promedio del periodo t.
RT: Residuos promedio totales.

Obteniendo lo siguiente para nuestros 6 periodos (Estacionalidad Estimada):

E(1) 1.00020309
E(2) 1.000420831
E(3) 0.999993516
E(4) 0.999750257
E(5) 0.999782962
E(6) 0.999880463

Una vez obtenida la parte estacional podemos quitársela a nuestra serie, al haber elegido el modelo
multiplicativo lo que hicimos fue tomar los datos correspondientes al periodo 1 y dividir cada uno
por la parte estacional correspondiente al periodo 1, los datos correspondientes al periodo 2 y
dividirlos por la parte estacional correspondiente al periodo 2, y así hasta llegar a nuestro periodo
6, los datos resultado de este proceso formaran parte de nuestra tendencia real:

Figura 2. Gráfica de la tendencia real y los datos originales.

Basados en la Tendencia Real, haremos nuevas estimaciones, probaremos una lineal, una cuadrática
y una cúbica. Obtenemos los Errores Cuadráticos Medios y elegimos el menor.
ECM= 1.251519876 1.017910332 1.01789379

572
574
576
578
580
582
584
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94 97
Tendencia Real
Xt Tendencia Real
28

Vemos que nuevamente entre la función cuadrática y la cúbica la diferencia es mínima.
Tomamos la función cúbica:
2.29333E-07X
3
+ 0.00062978X
2
+ -0.08856058X+ 581.279025

Nuestro último dato fue el 98, queremos estimar los 6 siguientes es decir los datos 99, 100, 101,
102, 103, 104, estos serán los valores de nuestras X´s a sustituir en la ecuación, obtenidos los datos
los multiplicamos por la parte estacional que les corresponda, es importante notar que el dato 98
quedo en un periodo dos, por lo que al dato 99 le corresponderá la parte estacional de un periodo
3.
Los datos resultantes de este proceso son ya nuestro pronóstico.

Figura 3. Esta gráfica nos muestra el comportamiento de nuestros datos reales y nuestros datos
pronosticados, separados por la línea vertical.

Podemos observar que nuestros datos pronosticados se encuentran dentro del rango de nuestros
datos reales, y el comportamiento es acorde a estos.


572
574
576
578
580
582
584
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 101
Lago Hurón
Xt
29

Por último tomaremos una parte de nuestra serie y pronosticaremos los datos siguientes para ver
qué tan parecidos o diferentes son a los datos con los que ya contamos.

Peridodo Xt
1 1 580.38
2 2 581.86
3 3 580.97
4 4 580.8
5 5 579.79
6 6 580.39
7 1 580.42
8 2 580.82
9 3 581.4
10 4 581.32
11 5 581.44
12 6 581.68
13 1 581.17
14 2 580.53
15 3 580.01
16 4 579.91
17 5 579.14
18 6 579.16 Pronóstico
19 1 579.55 579.943054
20 2 579.67 580.005541
21 3 578.44 579.695351
22 4 578.24 579.493187
23 5 579.1 579.452285
24 6 579.09 579.45022

Los datos de este nuevo pronóstico fueron obtenidos de la misma manera que los de nuestro
anterior pronóstico.

Es posible ver que los valores obtenidos son muy similares a los datos con los que ya contábamos,
por lo que podemos concluir que nuestro modelo obtenido con el enfoque clásico podría estimar
bien los datos futuros para esta serie. El rango en el que se mueven nuestros datos es de hecho
muy pequeño, son sólo dos unidades.
577
578
579
580
581
1 2 3 4 5 6
Xt
Pronóstico
30

Bibliografía.

1. Peter J. Brockwell and Richard A. Davis, Introduction to Time Series and Forecasting,
2
nd
Edition, Springer New York, 2002.

2. Wei,William W.S. Time Series Analysis: Univariate and Multivariate Methods, 2
nd

Edition, Pearson, 2006.

3. Chris Chatfield, Time-Series Forecasting, 1
st
Edition, Chapman and Hall/CRC, 2000.

4. Cryer Jonathan D., Chan, Kung-Sik, Time Series Analysis. With Applications in R, 2
nd

Edition, Springer Texts in Statistics, 2008.
















”Por mi raza hablará el espíritu.”