Composición y Descomposición de una Serie

El objetivo principal de hacer análisis de series temporales es estudiar a una variable para conocer y entender su pasado, a partir de eso poder hacer predicciones del futuro en base a dicha variable. El análisis de series de tiempo es frecuente en policy makers, ya que este permite hacer una toma de decisiones más acertada. Una serie de tiempo es una secuencia de casos u observaciones en intervalos de tiempo que sigue una estructura regular. Existen diversos ejemplos de series de tiempo, como los siguientes:

• Las tasas de productividad de una empresa durante los últimos 5 años.

• La producción mensual de azúcar en toneladas de cierta región del país, de Enero de1995 hasta diciembre de 1997.

• La tasa de crecimiento del Producto Interno Bruto de Perú en la década de 1980.

R provee diversas herramientas para analizar datos de series de tiempo, la función ts() ayuda a convertir un vector o una variable de un conjunto de datos en datos de series de tiempo, es decir declara a R que dicha variable tiene una secuencia en el tiempo que se indique.

El formato es ts(vector, start=, end=, frequency= ), donde start y end son los periodos de la primera y la última observación, respectivamente; frequency indica la frecuencia por unidad de tiempo (1= anual, 4=trimestral, 12=mensual, etc.).

Los valores de la serie quedarán deifnidos en el objeto creado de nombre gnp.ts:

##        Qtr1   Qtr2   Qtr3   Qtr4
## 1967 3631.6 3644.5 3672.0 3703.1
## 1968 3757.5 3818.3 3841.6 3861.8
## 1969 3906.8 3915.0 3937.8 3922.9
## 1970 3922.0 3922.3 3961.3 3931.0
## 1971 4027.3 4042.0 4064.7 4072.9
## 1972 4149.8 4232.5 4272.8 4343.9
## 1973 4439.6 4475.9 4471.4 4495.1
## 1974 4475.4 4492.4 4442.4 4430.2
## 1975 4361.7 4403.2 4471.7 4531.8
## 1976 4620.6 4655.6 4677.0 4720.7
## 1977 4791.9 4852.2 4924.3 4922.2
## 1978 4958.8 5107.7 5155.2 5227.4
## 1979 5236.7 5244.9 5280.1 5296.6
## 1980 5310.0 5190.1 5179.2 5253.7
## 1981 5330.3 5306.6 5341.8 5286.2
## 1982 5206.1 5236.8 5212.8 5221.7
## 1983 5255.0 5365.6 5448.3 5540.5
## 1984 5641.4 5707.5 5749.5 5787.3
## 1985 5818.1 5870.3 5954.9 5996.7
## 1986 6038.3 6042.6 6097.5 6126.0
## 1987 6157.2 6221.0 6266.3 6372.0
## 1988 6423.8 6485.4 6504.8 6581.0
## 1989 6668.0 6691.3 6727.1 6748.5
## 1990 6830.4 6853.2 6837.5 6804.6
## 1991 6747.1 6766.9 6781.2 6821.0
## 1992 6883.4 6937.5 6980.2 7067.7
## 1993 7065.9 7096.8 7118.6 7213.0
## 1994 7278.2 7369.2 7403.2 7494.8
## 1995 7519.0 7531.4 7572.7 7645.4
## 1996 7703.3 7819.6 7853.8 7948.2
## 1997 8024.3 8148.8 8233.2 8289.6
## 1998 8432.1 8476.3 8560.0 8731.6
## 1999 8843.8 8910.8 9031.1 9204.7
## 2000 9273.2 9421.8 9438.8 9482.5
## 2001 9462.8 9436.4 9405.7 9538.0
## 2002 9659.0 9678.4

Se podrá observar que la serie creada, tal y como se indicó en la sintaxis de dicha función, empieza en el primer trimestre de 1967 y termina en el segundo del año 2002.

Gráficos de Series de Tiempo

Una forma de ver la evolución de datos de series de tiempo es generando un gráfico de series de tiempo, en este se puede ver la tendencia que ha ido siguiendo cierta variable a través del tiempo. La función plot() permite hacer gráficos para variables de series de tiempo en R.

Componentes de una Serie de Tiempo

Una serie de tiempo es un dato que se registra a través del tiempo. Este tipo de datos tiene a su vez componentes propios, suponiendo que son 4 componentes que actúan al mismo tiempo, son los que contribuyen a formar las características de dicha serie, estos cuatro componentes son la tendencia, la estacionalidad, la ciclicidad y la variación irregular o aleatoriedad.

Tendencia

La tendencia de largo plazo es el resultado de factores a largo plazo de la misma. Esta tendencia muestra al patrón que sigue la evolución de los datos a través del tiempo de análisis. Este componente constituye la base del incremento o decremento de la serie de tiempo. Por ejemplo, una serie que representa a la producción de cierto producto en una empresa, tiene una tendencia que estará afectada por diversos factores.

Estacionalidad

Este componente representa la variación de los datos en la serie debido a influencias estacionales. Por ejemplo, la variación de una serie año a año durante los mismos trimestres que ocurre con la misma fuerza. Un ejemplo más claro puede ser el de una empresa de venta de helados sabe que durante los meses de invierno las ventas de sus productos caerán debido al clima en dicha estación.

Ciclicidad

Este componente hace referencia a las secuencias o patrones de crecimiento y decrecimiento en la línea de tendencia que duran más de un año. Este componente es el conjunto de ciclos, de más de un año de duración que se producen por diversos factores.

Aleatoriedad o Variación Irregular

Este componente se debe a factores de corto plazo, que no pueden preverse y que afectan a la serie. A su vez explica la variabilidad irregular del comportamiento de la serie y es impredecible.

Descomposición de Series de Tiempo

Antes de hablar de descomposición de una serie de tiempo se debe entender que existen modelos que explican el comportamiento de una serie de tiempo.

Modelos

Como se pudo ver en la gráfica generada, muchas series están dominadas por efectos estacionales y de tendencia. La descomposición aditiva está dada por lo siguiente:

\[ x_t = m_t + s_t + z_t \] Donde \(t\) es el tiempo, \(x_t\) es la variable observada, \(m_t\) es la tendencia, \(s_t\) es el efecto estacional y \(z_t\) es el término del error. Si el efecto estacional tiende a incrementarse cuando se incrementa la tendencia, un modelo multiplicativo puede ser más apropiado para explicar la serie, este vendrá dado por:

\[ x_t = m_t*s_t + z_t \] Si la variación irregular está modelada por un factor multiplicativo y es positivo, un modelo de descomposición aditivo para loga(𝑥𝑡 ) puede ser utilizado:

\[ log(x_t) = m_t + s_t + z_t \] ## Descomposición en R

En R, la función decompose() estima los efectos de tendencia y estacional usando el método de los promedios móviles. Sumado a la función plot(), esta produce una figura mostrando la serie original \(x_t\) y las series de tendencia \(m_t\), estacionalidad \(s_t\)y variación irregular \(z_t\). Asumiendo que la serie sigue un modelo multiplicativo, se tendrá lo siguiente:

Esto generará un objeto con cada uno de los componentes de la serie, y también se podrán generar vectores que contengan a cada uno de estos objetos:

Se podrá también hacer un gráfico de dicha descomposición haciendo uso de la función plot():

En este ejemplo, el modelo multiplicativo parecería ser más apropiado que el modelo aditivo, ya que se puede observar un incremento en la serie original y la tendencia. La serie random obtenida de la función decompose no es precisamente la realización del proceso aleatorio, sino más bien es una estimación de ese proceso.

Procesos Estocásticos

Existen diversas formas de modelar datos de series de tiempo asumiendo que la serie sigue cierta estructura. Dependiente de la estructura se abordarán temas respecto a los modelos estocásticos básicos, como pueden ser los procesos de ruido blanco y random walk. Se verá también la introducción a los procesos autorregresivos y el análisis de correlograma para series de tiempo haciendo uso de R.

Procesos Estocásticos Estacionarios

Sea la serie \(W_t\). La estacionariedad sirve para limitar o restringir lavheterogeneidad a través del tiempo de un proceso estocástico.

  1. De forma estricta la estacionariedad hace referencia a que las funciones de distribución conjunta de subconjuntos de un número cualquiera 𝑛 de una variable no varía por traslaciones en el tiempo para cualquier horizonte ℎ:

\[ f(w_{t1}, w_{t2},...,w_{tn})=f(w_{t1+h},w_{t2+h},...,w_{tn+h}) \forall n,h \]

  1. En un sentido más amplio un proceso es estacionario si cumple las siguientes condiciones:
  • \(E(w_t) = \mu, \forall t\)
  • \(0 < Var(W_t) = \sigma^2 < \infty, \forall t\)
  • \(Cov(W_t, W_{t+k}) = \gamma (k),k = \pm1, \pm2,..., \forall t\)

Cuando el proceso de análisis tiene una distribución normal, la estacionariedad en sentido estricto coincidirá con la de sentido amplio. La estacionariedad se obtiene diferenciando la serie y aplicando logaritmos (Trasformación Box-Cox). A partir de las correlaciones se va a poder tomar decisiones sobre cuál es el tipo de modelo estadístico más adecuado para dicha serie de tiempo. Cuando se impone la estacionariedad, se reduce número de parámetros, pero todavía queda un número elevado de parámetros por \(\gamma_k\), se necesitará una condición más, que es la ergodicidad (consistencia). Cuando se quiere hacer pruebas de hipótesis y análisis de los parámetros, se va a dar con que a medida que aumenta el número de observaciones, aumentará el número de parámetros desconocidos. La condición de ergodicidad será la siguiente: La correlación serial entre variables de una serie disminuye a medida que nos alejamos en el tiempo. \[ \lim_{x\rightarrow\infty} \gamma_k = 0 \]

Proceso de Ruido Blanco

Un proceso de ruido blanco o White noise, es el modelo más simple de series temporales. Este modelo trata de una serie puramente aleatoria y se representa por 𝑎𝑡 .Una serie será de ruido blanco cuando:

  • La esperanza es constante, , es igual a cero.
  • \(Cov(a_t, a_{t+k})= 0 \text{ para todo } k \neq 0\)

Este proceso se trata básicamente de uno en el cual todas sus variables son independientes. Un ejemplo de un proceso de ruido blanco son los números de una lotería:

• Cada número es independiente del anterior. • No hay dependencia entre el pasado y el futuro.

Es decir, la variable tiempo no influye, ya que no hay dependencia, esto es totalmente impredecible. Un modelo de series temporales adopta la siguiente expresión: \[ y_t=f(pasado) + a_t = f(y_{t-1},t_{t-2},...) + a_t \] En 𝑡 − 1 la función es conocida, pero 𝑎𝑡 será desconocida, ya que es una variable aleatoria que no se puede predecir.

Simulación en R

Un proceso de ruido blanco puede ser usado en datos simulados. Las series de tiempo simuladas son llamadas series sintéticas para distinguirlas de las series históricas observadas. La simulación es útil por muchas razones, esta puede ser usada para generar escenarios futuros y construir intervalos de confianza para parámetros del modelo. En R, la simulación es un procedimiento sencillo, la mayoría de las distribuciones estadísticas son simuladas usando una función que tiene el nombre abreviado de la distribución con un prefijo ‘r’ (de “random”). Por ejemplo, rnorm(100) es usada para simular 100 valores con distribución normal, que es equivalente a simular un serie de ruido blanco Gaussiano de longitud (100). La sintaxis para hacer simulaciones es la siguiente:

Podemos visualizar la serie haciendo graficándola:

La función set.seed es usada para dar un punto de salida (o seed) en simulaciones, que garantiza así la reproducción de la simulaciones. Si esta función no es indicada, una muestra diferente de datos será simulada, y las propiedades estadísticas cambiarán.

Proceso Random Walk

El proceso random walk viene dado por la siguiente expresión: \[ y_t = y_{t-1} + a_t \] Donde \(a_t\) es un proceso de ruido blanco, es decir, entra en el proceso como shock aleatorio que se incorpora en cada momento. Este proceso tiene raíz unitaria, (coeficiente de \(y_{t-1}\)), por lo tanto, la serie muestra un perfil o una tendencia evolutiva, por lo que se entenderá que no es estacionaria. Como ejemplo de este tipo de procesos, podemos notar a diferentes variables económicas en mercado eficientes, en este tipo de mercados se entiende que con un elevado número de agentes con información completa los valores presentes de las series se adaptarán a la información disponible, es decir el precio de cierto bien en el periodo \(t-1\) será el mismo que el de futuro.

Simulación en R

Ya se ha visto en el punto anterior que es muy útil el uso de simulaciones en series de tiempo. Estas simulaciones permiten observar las características principales del modelo en gráficas, como la data histórica tiene propiedades similares, el modelo puede ser seleccionado como un candidato potencial. Los siguientes comandos pueden ser usados para modelar un proceso aleatorio en una serie de nombre y:

Esta primera línea de comandos indica que se quiere crear dos series con 1000 observaciones, que siguen una distribución normal, la primera serie es la serie en sí, y w es el término que representa al ruido blanco.

Esto indica que la serie tendrá la forma que se especificó para un proceso random walk.Se puede hacer el gráfico de dicha serie, al igual que con el ruido blanco se usará la función plot().

Este es el gráfico generado por el proceso simulado de random walk o paseo aleatorio. Exhibe una tendencia a la baja, sin embargo, esto es puramente estocástico debido a la alta correlación serial.

La Autocorrelación

Función Autocovarianza

Es un proceso gaussiano estacionario donde la media y la varianza son independientes y la covarianza de dos variables dependerá del desfase temporal de \(k\).

  • \(Cov(y_t, y_{t+k} = \gamma (k) + \gamma_k \text{ para } k = 1,2,3,..., \text{ para todo t}\)
  • \(\gamma_k = E[(y_t - \mu)(y_{t+k}+\mu)]\)

La función (k) es llamada la función de autocovarianzas del proceso. Y tiene las siguientes propiedades:

  • \(\gamma_0 > 0 ya que es la varianza\)
  • \(y_k = y_{-k}\) es decir la covarianza entre una variable y otra que presenta n desfase de \(k\) períodos, ya sea hacia el pasado o hacia el futuro.
  • \(|y_k| \leq y_0\)

Función de Autocorrelación

La función de autocovarianzas va a depender de la unidad de medida empleada. La correlación estará definida por la siguiente expresión:

\[ Cor(y_t, y_{t+k})= p(k) = \frac{\gamma_k}{\gamma_o}, \text{ para } k = 1,\pm2, \pm3,... \text{ para todo } t \]

La función \(p(k)\)se denomina función de autocorrelación, es una función ibre de las unidades de medida de las variables, esta función mide la dependencia lineal existente entre las variables. Esta función tiene las siguientes propiedades:

  • \(p_0\) = 1
  • \(p_k = p_{-k}\) es decir, la correlación entre una variable y otra que presenta un desfase de k periodos, ya sea hacia el pasado o futuro.
  • \(|p_k| \leq 1\)

En un proceso estacionario gaussiano toda la dependencia entre las variables viene recogida por la FAC (Función de autocorrelación). La función de autocovarianza y la de autocorrelació puede ser estimada de una serie de tiempo por sus equivalentes muestrales, ese estimador de la función de autocovarianza, \(c_k\), es el siguiente: \[ c_k = \frac{1}{k} \sum_{t=1}^{n-k} (y_t- \bar{y})(y_{t+k}-\bar{y}) \] Se debe notar que la autocovarianza en el rezago 0, es la varianza calculada con denominador \(n\). El estimador de la función de autocorrelación stá definido por: \[ r_k=\frac{c_k}{c_0} \] #### Cálculo en R

La autocorrelación e la variable y se almacenan en el vector acf(y)$asf, con el rezago \(k\) localizado en acf(x)$acf[k+1]. Por ejemplo, de acuerdo a la base de datos de lo trabajador anteriormente, la autocorrelación el rezago 1 para gnp.ts es:

## [1] 0.9759739

El primer valor , acf(x)$acf[k+1], es \(r_0\) y es igual a 1. Para obtener as autocovarianzas se debe añadir un argumento a la función acf(), a autocovarianza para el rezago 1 está dado por:

## [1] 2799951

El Correlograma

Por defecto, a función acf(), produce gráfico de \(r_k\) contra \(k\) que es llamada correlograma. Por ejemplo, si escribimos la sintaxis acf(gnp.ts)obtendremos el correlograma para dicha serie.

De este gráfico se puede entender que:

El eje \(x\) da el rezago \(k\) y el eje \(y\) da la autocorrelación \(r_k\) en cada rezago. Si \(p_k = 0\), la distribución muestral de \(r_k\) es aproximadamente normalm con una media de \(-1/n\) y una varianza de \(1/n\). Las líneas del correlogama se grafican en: \[ -\frac{1}{n}\pm\frac{2}{\sqrt{n}} \] Si \(r_k\) cae afuera de esas líneas, se tiene evidencia contra la hipótesis nula \(p_k = 0\)al 5% de significancia. Sin embargo se debe tener cuidado al interpretar la hipótesis nula. En primer lugar, si \(p_k\) es igual a 0 en el rezago \(k\) , se espera que el 5% de los estimados caiga fuera de las líneas. En segundo lugar, os \(r_k\) están correlacionados, por lo tanto, si uno cae fuera de las líneas, los coeficientes cercanos están más probables a ser estadísticamente singificativos.

Correlograma de un ruido blanco

El correlograma para un proceso de ruido blanco tiene la siguiente figura:

Correlograma

Correlograma

Correlograma para un proceso de random walk

El correlograma para un proceso de paseo aleatorio o random walk tiene la siguiente forma:

Correlograma de un Ruido Blanco

Correlograma de un Ruido Blanco

Modelos Autoregresivos

Una serie \(y_t\) es un proceso autoregresivo de orden \(p\), abreviado como \(AR(P)\), si:

\[ y_t = \alpha_1 y_{t-1} + \alpha_2 y_{y-2} + ... + \alpha_p y_{t-p} + W_t \] Donde \(W_t\) es el ruido blanco y \(\alpha_i\) son los parámetros del modelo con \(\alpha_p \neq 0\) para un proceso de orden \(p\). La ecuación anterior puede ser expresada como un polinomio de orden \(p\) en término del operador de rezago:

\[ \theta_p(B)y_t = (1-\alpha_1B-\alpha_2B^2-...-\alpha_pB^p)y_t = W_t \] Donde se debe notar lo siguiente:

  • El proceso de random walk es un caso especial de un modelo autoregresivo AR(1) con \(\alpha_1 = 1\).
  • El modelo es una regresión de \(y_t\) en sus términos pasados de la misma serie, de ahí el nombre de “autoregesivo”.
  • La predicción en el tiempo \(t\) está dada por: \(\bar{y_t}=\alpha_1y_{t-1}+\alpha_2y_{t-2}+...+\alpha_p y_{t-p}\)
  • Los parámetros del modelo pueden ser estimados por medio de la minimización de la suma de los cuadrados de los errores (MCO).

Correlogama de un Proceso AR(1)

La función de autocorrelación de un proceso AR(1) viene dada por:

\[ p_k=\alpha^k (k\geq0) \] Donde \(|\alpha| < 1\). Así, el correlograma decrece a 0 o más rápidamente para los \(\alpha\) pequeños. El siguiente ejemplo muestra dos correlogramas para valores positivos y negativos de \(\alpha\), respectivamente. La sintaxis siguiente mostrará el siguiente gráfico:

Se puede ver que hay decaimiento rápido hacia 0.

Autocorrelación Parcial

La autocorrelación parcial en el rezago \(k\) es la correlación que resulta de quitar el efecto de cualquier correlación debido a los términos de los rezagos más cortos. Por ejemplo, la autocorrelación parcial de un proceso *AR(1) será 0 para todos los rezagos más grande que 1. En general, la autocorrelación parcial en el rezago \(k\) es el \(k\)vo coeficiente de un modelo AR(k), si el proceso subyacente es un AR(p)**, entonces los coeficientes \(\alpha_k\) serán cero para todo \(k > p\).

Simulación en R

Un AR(1) puede ser simulado en R se la siguiente manera:

Este gráfico es un proceso AR(1), que es \(y_t = 0.7y_{t-1} + w_t\). Nótese que en la autocorrelación parcial solo el primer rezago es significativo, que es usualmente caso cuando el proceso subyacente es un AR(1).

Modelación de un AR(1) en R

UnAR(p) puede ser estimado en R haciendo uso de la función ar(). De acuerdo a la serie simulada anteriormente, es estimará el modelo AR(1) de la siguiente manera:

La sintaxis indica que se quiere estimar un modelo autorregresivo para el objeto y usando el método de estimación de mínimos cuadrados, aunque esto puede variar, ya que esta función también ofrece la estimación por máxima verosimilutd. Se puede observar el orden del modelo autorregresivo para dar razón que es de orden 1:

## [1] 1

Para conocer el término autorregresivo se debe seguir la siguiente especificación:

## , , 1
## 
##           [,1]
## [1,] 0.6015796

Regresión en Series de Tiempo

Las tendencias en series de tiempo se clasifican como estocásticas o determinísticas. Se puede considerar a una tendencia como estocástica cuando muestra cambios inexplicables en su dirección, y se atribuye las tendencias transitorias aparentes a la alta correlación serial con el término de error. En contraste a esto, una tendencia será aleatoria cuando se tiene un modelo con explicación aceptable de la tendencia de dicha serie.

Modelos Lineales

Un modelo para una serie de tiempo \((x_t:t = 1,...,n)\) es lineal si se puede expresar como: \[ x_t = \alpha_0+\alpha_1\mu_{1,t}+\alpha_2\mu_{2,t}+...+\alpha_m\mu_{m,t}+Z_t \] Donde 𝑢𝑖,𝑡 es el valor de la i-ésima variable predictora en el tiempo 𝑡, 𝑧𝑡 es el error en el tiempo 𝑡, y 𝛼0, 𝛼1, … , 𝛼𝑚 son parámetros del modelo, que pueden ser estimados por mínimos cuadrados. Un ejemplo del modelo lineal es la función polinomial de 𝑡 de orden 𝑝: \[ x_t = \alpha_0+\alpha_1t+\alpha_2t^2+...+\alpha_pt^p+Z_t \] Las variables predictoras pueden ser escritas como 𝑢𝑖,𝑡 = 𝑡𝑖 (𝑖 = 1, … , 𝑝). El término lineal es una referencia de la sumatoria de los parámetros del modelo, cada una por la variable predictora.

Estacionariedad

Los modelos lineales para series de tiempo son estacionarios cuando incluyen funciones de tiempo. La diferenciación puede transformar series no estacionarias con tendencia determinística en series estacionarias. Por ejemplo, si la serie de tiempo 𝑥𝑡 esta dada por una función de línea recta más el ruido blanco \(x_t = \alpha_0 + \alpha_1t + Z_t\), entonces la diferencia de primer orden estará dada por: \[ \bigtriangledown X_t = X_t - X_{t-1} = Z_t - Z_{t-1} + \alpha_1 \] Asumiendo que la serie del término de error \(Z_t\) es estacionaria, la serie \(\bigtriangledown X_t\) es estacionaria ya que no es una función de \(t\).

Simulación

En regresiones de series de tiempo, es común que la serie de error \(Z_t\) esté autocorrelacionada. En el siguiente código se simulará y se graficará una serie con tendencia de línea recta (50 + 3𝑡) con errores autocorrelacionados.El código indica que se creará un modelo del siguiente tipo \(x_t = 50 + 3t + Z_t\) donde \(Z_t\) sigue un proceso \(AR(1)Z_t = 0.8Z_{t-1}+W_t\) y \(W_t\) es el término de ruido blanco con desviación estándar igual a 20.

Ajuste del Modelo

Los modelos lineales se suelen ajustar usualmente minimizando la suma de los cuadrados del error \(\sum Z_t^2 = \sum(x_t-\alpha_0-\alpha_1\mu_1-...-\alpha_m\mu_{m,t})^2\), que puede ser estimado en R con la función lm.

## (Intercept)        Time 
##   58.551218    3.063275
## (Intercept)        Time 
##  4.88006278  0.08389621

En la sintaxis indicada, se extraen los parámetros del modelo estimado con la función coef(). Se debe notar, como se esperaba, que los valores estimados son cercanos a los parámetros especificados, 50 para el intercepto y 3 para el coeficiente. Los errores estándar se extraen sacando la raíz cuadrada a los elementos de la diagonal de la matriz de varianzas y covarianzas (vcov). Después de ajustar el modelo de regresión, se deben considerar diversos gráficos de diagnóstico. En el caso de la regresión de series de tiempo, un diagnostico importante es el gráfico de correlograma de los residuos, haciendo uso de la función de autocorrelación y la función de autocorrelación parcial, de la siguiente manera:

Como se esperaba, la serie de tiempo del residuo está autocorrelacionada, la figura de la autocorrelación parcial muestra que sólo en el primer rezago la autocorrelación parcial es significativa, lo que sugiere que la serie del residuo sigue un proceso 𝐴𝑅(1).

Modelos Lineales con Variables Estacionales

Ya que las series de tiempo son observaciones medidas de forma secuencial en el tiempo, suelen presentarse efectos estacionales en los datos.

Variables aditivas de indicadores estacionales

Suponga que una serie de tiempo contiene \(s\) estaciones. Por ejemplo, para una serie de tiempo medida para cada mes del calendario, \(s=12\), así como las series semestrales, con \(s=2\). Un modelo con indicador estacional para una serie de tiempo \((x_t:t=1,...,n)\) que contiene \(s\) estaciones y una tendencia \(m_t\) está dada por: \[ x_t = m_t + s_t + z_t \] Donde \(s_t=\beta_i\) cuando \(t\) cae en la i-ésima estación (t=1,…,n ; i = 1,…,s) y \(z_t\) es el error residual de la serie, que puede estar autocorrelacionada . Este modelo toma la misma forma que un modelo de descomposición aditivo. La ecuación anterior no muestra en \(m_t\) un término constante, es decir \(m_t\) puede ser un polinomio de orden \(p\) con parámetros \(\alpha_1,...,\alpha_p\). Esta ecuación es entonces equivalente a una tendencia polinómica en donde al término constante depende de la estación, por lo tanto, los parámetros \(\beta_1,...,\beta_s\) corresponden a los \(s\) posibles términos constantes. La ecuación puede ser escriba como: \[ x_t = m_t + \beta_{1+(t-1)mod \text{ s }} + Z_t \] Por ejemplo, con una serie de tiempo observada para cada mes del calendario comenzando con \(t=1\) como enero, un indicador estacional con tendencia de línea recta está dado por:

Ecuación

Ecuación

Los parámetros del modelo en esta ecuación pueden ser estimados por MCO o Mínimos Cuadrados Generalizados, tratando al término estacional \(S_t\) como un factor. En R, la función factor() puede ser aplicada para los índices estacionales extraídos usando la función cycle(). Con la base de datos de sesiones pasadas sobre el producto nacional bruto trimestral, se puede estimar el modelo de regresión estacional de la siguiente manera:

Se está indicando la extracción de una parte de la base total, que será desde 1990, luego se deben extraer los índices estacionales con la función cycle() y el tiempo con la función time(); luego de eso se hará la regresión del modelo indicando que los índices estacionales son una variable de factor, haciendo uso de la función del mismo nombre (factor).

Los coeficientes se observarán usando la función coef(), los ceros usados en la fórmula indica que el modelo no tiene intercepto.

##          Time factor(Seas)1 factor(Seas)2 factor(Seas)3 factor(Seas)4 
##      268.6879  -528322.4276  -528333.8611  -528366.4147  -528348.1618

Modelos No Lineales

Los modelos lineales son aplicables en cierto rango. Sin embargo, para algunas series de tiempo puede ser más apropiado ajustar modelos no lineales de forma directa en lugar de usar logaritmos o usar aproximaciones polinómicas. Por ejemplo, si se conoce que una serie está derivada de un proceso no lineal, puede que esté basada en una ley determinística en la ciencia, es por eso que será mejor usar esta información en la formulación del modelo y ajustar un modelo no lineal directamente a los datos. Para estimar modelo no lineales en R, se debe hacer usar la función nls(), que hace referencia a la estimación por mínimos cuadrados no lineales. Se ha visto que se puede estabilizar la varianza aplicando logaritmos naturales a una serie. Sin embargo, usar logaritmos puede presentar dificultades cuando la serie presenta valores negativos, ya que el logaritmo de un valor negativo no está definido. Una manera de evitar dicho problema es añadiendo una constante a todos los términos de la serie, entonces, si \(X_t\) es una serie que contiene valores negativos, añadiendo \(c_o\) tal que \(c_o > max(x_t)\) y tomando los logaritmos se produce una serie transformada \((log(c_o+x_t))\) que está definida para todo \(t\). Un modelo lineal puede entonces ser ajustado para producir el modelo: \[ x_t = -c_o + e^{\alpha_0+\alpha_1t+z_t} \] Donde \(\alpha_0\) y \(\alpha_1\) son parámetros del modelo y \(Z_t\) es una serie residual que puede estar autocorrelacionada. La principal dificultad de la ecuación es que \(c_o\) debe ser estimado como otro parámetro del modelo, mientras que en la práctica el investigador suele elegir un valor arbitrario que satisface la condición \((c_o > max(-x_t))\). El modelo puede ser estimado por mínimos cuadrados no lineales, de la siguiente manera: \[ x_t = -c_o + e^{\alpha_0+\alpha_1t}+Z_t \] ## Simulación y ajuste de series no lineales

Como los modelos no lineales son generalmente ajustados cuando se conoce la función no lineal subyacente, se simulará una serie basada en la última ecuación, con \(c_o=0\) y se compararán los parámetros de la estimación usando la función nls().

El dibujo de la serie muestra un aparente crecimiento con tendencia exponencial que contiene valores negativos, por eso la transformación en logaritmos de la serie no puede ser usada y se necesita la especificación de un modelo no lineal. En R, un modelo no lineal es ajustado especificando una formula con los parámetros y los valores de entrada contenidos con la función list:

##        Estimate   Std. Error  t value     Pr(>|t|)
## alp0 1.17640120 0.0742954447 15.83410 9.204055e-29
## alp1 0.04828424 0.0008188462 58.96619 2.347543e-78

Los valores estimados de \(\alpha_0\) y \(\alpha_1\) están cerca a los valores subyacentes que se usaron para simular la data.

Pronósticos para Regresiones

Un pronóstico es una predicción para el futuro. En el contexto de regresión de series de tiempo, un pronóstico implica la extrapolación del modelo ajustado evaluando en él la función para nuevas series de tiempo. El problema principal con esta aproximación es que las tendencias que se presentan en las series ajustadas pueden cambiar en el futuro. Por lo tanto, es mejor pensar en un pronóstico de una regresión como un valor condicional esperado en tendencias pasadas que continúan en el futuro.

Predicción en R

La función genérica para hacer predicciones en R es predict(). Esta función toma esencialmente un modelo ajustado y datos nuevos como parámetros. La clave para usar esta función con un modelo de regresión es asegurarse que la nueva data está debidamente definida y etiquetada en un data.frame.

La función Forecast

El número de valores para los periodos siguientes que se desea generar es 8 en este caso. El modelo creado con tslm contiene la tendencia y el factor estacional.

## Warning: package 'forecast' was built under R version 4.0.2
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo

Viendo los valores creados y los límites superiores e inferiores de confianza.

##         Point Forecast    Lo 80     Hi 80    Lo 95    Hi 95
## 2002 Q3       9681.138 9407.565  9954.712 9257.500 10104.78
## 2002 Q4       9766.563 9492.990 10040.137 9342.924 10190.20
## 2003 Q1       9859.469 9585.423 10133.516 9435.098 10283.84
## 2003 Q2       9915.208 9641.161 10189.254 9490.837 10339.58
## 2003 Q3       9949.826 9673.699 10225.953 9522.233 10377.42
## 2003 Q4      10035.251 9759.124 10311.378 9607.658 10462.84
## 2004 Q1      10128.157 9851.380 10404.934 9699.558 10556.76
## 2004 Q2      10183.896 9907.119 10460.673 9755.296 10612.50

Y la gráfica del mismo:

Ejemplos

Ejemplo 1: Gráficos de Series de Tiempo

Se tiene la base de datos adjunta, que representa a la producción mensual de leche en libras por vaca, desde enero de 1962 hasta diciembre de 1975. En el siguiente ejemplo se verá cómo se declara cierta variable como serie de tiempo y cómo será el gráfico de la misma haciendo uso de R.

Luego de eso se deber declarar a R que la variable es de series de tiempo, para eso antes se modificarán los nombres de dichas variables.

Se declara a la variable milk como serie de tiempo:

Una vez que se declara dicha variable indicando la frecuencia de la misma, se procede a hacer el gráfico de dicha serie de tiempo, para eso se usará la función plot().

Esta sintaxis le indicará a R que se quiere un gráfico de serie de tiempo donde el título será “Producción mensual de leche”, haciendo uso de la variable que se declaró como serie de tiempo.

Ejemplo 2: Descomposición de una serie de tiempo

Se tiene la base de datos adjunta, que representa al Producto Interno Bruto en millones de soles, desde el primer trimestre del año 2000 hasta el último del año 2015. En el siguiente ejemplo se realizará la descomposición de dicha serie para extraer sus componentes.

Luego de importar declaramos la variable como serie de tiempo:

Esto le habrá indicado a R que la variable pbi en la base de datos sigue una estructura de serie de tiempo que es trimestral. Una vez que se declara dicha variable indicando la frecuencia de la misma, se procede a hacer el gráfico de dicha serie de tiempo, para eso se usará la función plot(). Esta sintaxis le indicará a R que se quiere un gráfico de serie de tiempo donde el título será “Producto Interno Bruto (en millones de soles)”, haciendo uso de la variable que se declaró como serie de tiempo, también indicará que se quiere hacer un gráfico con líneas azules (opción col).

Una vez que se tiene el gráfico de la serie, se podrá observar cierto patrón de estacionalidad, para observar a más detalle los componentes de esta serie se deberá hacer la descomposición de la misma. Para eso se usará la función decompose(). Se asumirá que el modelo de esta serie es multiplicativo.

Esto creará un objeto que contendrá a cada uno de los componentes de la serie temporal. Se puede graficar cada uno de los componentes haciendo uso de la función plot().

Esta sintaxis indica a R que se quiere crear un gráfico del objeto que representa a la descomposición de la serie, se especifica el color de las líneas en el gráfico, que será marrón.

Ejemplo 4: Pronósticos de Series

El objetivo principal del ejemplo es mostrar el uso de la función predict(), que servirá para comparar el modelo estimado y los valores observados de la serie.

Primero declaramos a la serie cargada como una serie de tiempo:

## Warning: package 'tseries' was built under R version 4.0.3

Podemos hacer un gráfico de líneas de la serie en cuestión:

Podemos observar que esta serie ha tenido un crecimiento exponencial, esto entonces puede ser explicado por un modelo no lineal, donde se deberá utilizar la estimación de mínimos cuadrados no lineales para encontrar los parámetros estimados. La forma del modelo a estimarse en R será la siguiente:

\[ const_t = e^{\alpha_0+\alpha_1t}+Z_t \] Se entiende que 𝑐0 = 0, y la sintaxis para estimar este tipo de modelos en R será la siguiente:

En la sintaxis se indica la forma del modelo y los valores de entrada, los parámetros podrán observarse haciendo de la función summary():

##        Estimate   Std. Error   t value     Pr(>|t|)
## alp0 9.32364737 0.0406931731 229.12068 9.927974e-89
## alp1 0.02698092 0.0008582745  31.43623 1.498490e-38

Los resultados muestran que ambos parámetros estimados son estadísticamente significativos. Para estimar los pronósticos del modelo se debe crear una nueva estructura de datos, luego de esto creará una serie de tiempo con la variable pronósticos y finalmente se graficará los pronósticos.

Bibliografía

  • Cowpertwait, P. S., & Metcalfe, A. V. (2009). Introductory time series with R. Springer Science & Business Media.

  • Shumway, R. H., & Stoffer, D. S. (2010). Time series analysis and its applications: with R examples. Springer Science & Business Media.