Dado un proceso temporal \(\{y_t\}\) que sigue un modelo
\[ \text{ARIMA}(0,1,1)\times(0,1,1)_{12}, \]
se pide:
Se supone que \(\{\varepsilon_t\}\) es un ruido blanco con media cero y varianza constante \(\sigma^2\).
Partimos del modelo
\[ (1-B)(1-B^{12})\,y_t=(1+\theta B)(1+\Theta B^{12})\,\varepsilon_t, \]
donde \(\{\varepsilon_t\}\) es ruido blanco con \(\mathbb{E}(\varepsilon_t)=0\) y \(\operatorname{Var}(\varepsilon_t)=\sigma^2\).
Definimos el proceso diferenciado regular y estacionalmente como
\[ z_t := (1-B)(1-B^{12})\,y_t. \]
Sustituyendo en la ecuación del modelo se obtiene
\[ z_t=(1+\theta B)(1+\Theta B^{12})\,\varepsilon_t. \]
Desarrollando el producto:
\[ (1+\theta B)(1+\Theta B^{12}) =1+\theta B+\Theta B^{12}+\theta\Theta B^{13}. \]
Por tanto,
\[ z_t=\varepsilon_t+\theta\,\varepsilon_{t-1} +\Theta\,\varepsilon_{t-12} +\theta\Theta\,\varepsilon_{t-13}. \]
Los únicos coeficientes MA no nulos son
\[ \psi_0=1,\qquad \psi_1=\theta,\qquad \psi_{12}=\Theta,\qquad \psi_{13}=\theta\Theta. \]
Para un proceso MA con coeficientes \(\{\psi_j\}\),
\[ \gamma_k=\operatorname{Cov}(z_t,z_{t-k}) =\sigma^2\sum_{j\in\mathbb{Z}}\psi_j\,\psi_{j+k}, \qquad k\in\mathbb{Z}, \] y se cumple la simetría \(\gamma_{-k}=\gamma_k\).
Como los coeficientes MA solo aparecen en los retardos \(\{0,1,12,13\}\), las autocovarianzas solo pueden ser no nulas cuando \(k\) coincide con alguna diferencia entre dichos retardos, es decir,
\[ k\in\{0,\pm1,\pm11,\pm12,\pm13\}. \]
Para cualquier otro retardo, \(\gamma_k=0\).
Varianza (\(k=0\)) \[ \gamma_0 =\sigma^2\left(1+\theta^2+\Theta^2+\theta^2\Theta^2\right) =\sigma^2(1+\theta^2)(1+\Theta^2). \]
Retardo \(k=1\) \[ \gamma_1 =\sigma^2(\psi_0\psi_1+\psi_{12}\psi_{13}) =\sigma^2\,\theta(1+\Theta^2). \]
Retardo \(k=11\) \[ \gamma_{11} =\sigma^2(\psi_1\psi_{12}) =\sigma^2\,\theta\Theta. \]
Retardo \(k=12\) \[ \gamma_{12} =\sigma^2(\psi_0\psi_{12}+\psi_1\psi_{13}) =\sigma^2\,\Theta(1+\theta^2). \]
Retardo \(k=13\) \[ \gamma_{13} =\sigma^2(\psi_0\psi_{13}) =\sigma^2\,\theta\Theta. \]
Por simetría, \[ \gamma_{-k}=\gamma_k. \]
\[ \gamma_k= \begin{cases} \sigma^2(1+\theta^2)(1+\Theta^2), & k=0,\\[4pt] \sigma^2\,\theta(1+\Theta^2), & |k|=1,\\[4pt] \sigma^2\,\theta\Theta, & |k|=11\ \text{o}\ |k|=13,\\[4pt] \sigma^2\,\Theta(1+\theta^2), & |k|=12,\\[4pt] 0, & \text{en otro caso}. \end{cases} \]
(Si se desean las autocorrelaciones teóricas, basta dividir por \(\gamma_0\): \(\rho_k=\gamma_k/\gamma_0\)).
El proceso estacionario obtenido tras diferenciar es
\[ z_t = \varepsilon_t + \theta\,\varepsilon_{t-1} + \Theta\,\varepsilon_{t-12} + \theta\Theta\,\varepsilon_{t-13}, \]
donde \(\{\varepsilon_t\}\) es ruido blanco, con
La autocovarianza en el retardo \(k\) se define como
\[ \gamma_k=\operatorname{Cov}(z_t,z_{t-k}). \]
Sustituyendo las expresiones de \(z_t\) y \(z_{t-k}\):
\[ z_t = \sum_{j\in\{0,1,12,13\}} \psi_j\,\varepsilon_{t-j}, \qquad z_{t-k} = \sum_{i\in\{0,1,12,13\}} \psi_i\,\varepsilon_{t-k-i}. \]
Sustituyendo las expresiones de \(z_t\) y \(z_{t-k}\) en la definición de la autocovarianza se tiene:
\[ \gamma_k = \operatorname{Cov}(z_t, z_{t-k}) = \operatorname{Cov}\!\left( \sum_{j\in\{0,1,12,13\}} \psi_j\,\varepsilon_{t-j}, \sum_{i\in\{0,1,12,13\}} \psi_i\,\varepsilon_{t-k-i} \right). \]
Utilizando la bilinealidad de la covarianza, es decir,
\[ \operatorname{Cov}\!\left(\sum_j a_j X_j,\sum_i b_i Y_i\right) = \sum_j\sum_i a_j b_i\,\operatorname{Cov}(X_j,Y_i), \]
se obtiene la expresión:
\[ \gamma_k = \sum_{j\in\{0,1,12,13\}} \sum_{i\in\{0,1,12,13\}} \psi_j\,\psi_i\, \operatorname{Cov}(\varepsilon_{t-j},\varepsilon_{t-k-i}). \]
Esta doble suma recoge todas las posibles covarianzas cruzadas entre las innovaciones que intervienen en \(z_t\) y las que intervienen en \(z_{t-k}\), ponderadas por los correspondientes coeficientes del proceso de medias móviles.
Dado que \(\{\varepsilon_t\}\) es un ruido blanco, las innovaciones en instantes distintos no están correlacionadas, por lo que
\[ \operatorname{Cov}(\varepsilon_{t-j},\varepsilon_{t-k-i}) = 0 \quad \text{si} \quad t-j \neq t-k-i. \]
En consecuencia, en la doble suma solo sobreviven aquellos términos para los que ambas innovaciones coinciden en el mismo instante temporal, es decir, cuando
\[ t-j = t-k-i \quad \Longleftrightarrow \quad k = j - i. \]
Este razonamiento explica por qué la autocovarianza \(\gamma_k\) únicamente puede ser no nula para aquellos retardos \(k\) que pueden escribirse como la diferencia entre dos retardos presentes en el proceso de medias móviles.
Dado que el ruido blanco no presenta correlación temporal,
\[ \operatorname{Cov}(\varepsilon_{t-j},\varepsilon_{t-k-i}) \neq 0 \quad \text{solo si} \quad t-j = t-k-i. \]
Esta igualdad implica
\[ k = j - i. \]
Por tanto, la autocovarianza \(\gamma_k\) solo puede ser no nula si el retardo \(k\) puede escribirse como la diferencia entre dos retardos presentes en el MA.
En este caso, los retardos no nulos del proceso son
\[ \{0,1,12,13\}. \]
Las diferencias posibles entre ellos generan el conjunto
\[ k\in\{0,\pm1,\pm11,\pm12,\pm13\}. \]
Para cualquier otro valor del retardo \(k\), no existe ninguna pareja de términos en \(z_t\) y \(z_{t-k}\) que compartan la misma innovación, por lo que todas las covarianzas parciales son nulas y se tiene
\[ \gamma_k = 0. \]
Interpretación:
la autocovarianza solo aparece cuando \(z_t\) y \(z_{t-k}\) contienen al menos una innovación
común. En los retardos restantes, los términos involucran innovaciones
en instantes distintos y, al tratarse de ruido blanco, no covarían.
Partimos de la expresión del proceso estacionario:
\[ z_t=\varepsilon_t+\theta\,\varepsilon_{t-1} +\Theta\,\varepsilon_{t-12} +\theta\Theta\,\varepsilon_{t-13}, \]
y del proceso retrasado \(k\) periodos:
\[ z_{t-k}=\varepsilon_{t-k} +\theta\,\varepsilon_{t-k-1} +\Theta\,\varepsilon_{t-k-12} +\theta\Theta\,\varepsilon_{t-k-13}. \]
En todos los cálculos se utiliza que \(\{\varepsilon_t\}\) es ruido blanco, es decir,
\[ \operatorname{Cov}(\varepsilon_s,\varepsilon_r)=0 \ \text{si}\ s\neq r, \qquad \operatorname{Var}(\varepsilon_s)=\sigma^2. \]
\[ \gamma_0=\operatorname{Var}(z_t). \]
Al expandir:
\[ \begin{aligned} \gamma_0 &=\operatorname{Var}(\varepsilon_t) +\theta^2\operatorname{Var}(\varepsilon_{t-1}) +\Theta^2\operatorname{Var}(\varepsilon_{t-12}) +(\theta\Theta)^2\operatorname{Var}(\varepsilon_{t-13}) \\ &=\sigma^2+\theta^2\sigma^2+\Theta^2\sigma^2+\theta^2\Theta^2\sigma^2 \\ &=\sigma^2\left(1+\theta^2+\Theta^2+\theta^2\Theta^2\right) =\sigma^2(1+\theta^2)(1+\Theta^2). \end{aligned} \]
Escribimos:
\[ z_{t-1} =\varepsilon_{t-1} +\theta\,\varepsilon_{t-2} +\Theta\,\varepsilon_{t-13} +\theta\Theta\,\varepsilon_{t-14}. \]
La autocovarianza es:
\[ \gamma_1=\operatorname{Cov}(z_t,z_{t-1}). \]
Los únicos instantes comunes son \(\varepsilon_{t-1}\) y \(\varepsilon_{t-13}\):
\[ \begin{aligned} \gamma_1 &=\operatorname{Cov}(\theta\varepsilon_{t-1},\varepsilon_{t-1}) +\operatorname{Cov}(\theta\Theta\varepsilon_{t-13},\Theta\varepsilon_{t-13}) \\ &=\theta\sigma^2+\theta\Theta^2\sigma^2 \\ &=\sigma^2\,\theta(1+\Theta^2). \end{aligned} \]
\[ z_{t-11} =\varepsilon_{t-11} +\theta\,\varepsilon_{t-12} +\Theta\,\varepsilon_{t-23} +\theta\Theta\,\varepsilon_{t-24}. \]
El único instante común con \(z_t\) es \(\varepsilon_{t-12}\):
\[ \gamma_{11} =\operatorname{Cov}(\Theta\varepsilon_{t-12},\theta\varepsilon_{t-12}) =\theta\Theta\,\sigma^2. \]
\[ z_{t-12} =\varepsilon_{t-12} +\theta\,\varepsilon_{t-13} +\Theta\,\varepsilon_{t-24} +\theta\Theta\,\varepsilon_{t-25}. \]
Hay dos instantes comunes con \(z_t\):
\(\varepsilon_{t-12}\): \[ \operatorname{Cov}(\Theta\varepsilon_{t-12},\varepsilon_{t-12}) =\Theta\sigma^2. \]
\(\varepsilon_{t-13}\): \[ \operatorname{Cov}(\theta\Theta\varepsilon_{t-13},\theta\varepsilon_{t-13}) =\theta^2\Theta\sigma^2. \]
Sumando ambas contribuciones:
\[ \gamma_{12} =\Theta\sigma^2+\theta^2\Theta\sigma^2 =\sigma^2\,\Theta(1+\theta^2). \]
\[ z_{t-13} =\varepsilon_{t-13} +\theta\,\varepsilon_{t-14} +\Theta\,\varepsilon_{t-25} +\theta\Theta\,\varepsilon_{t-26}. \]
El único instante común con \(z_t\) es \(\varepsilon_{t-13}\):
\[ \gamma_{13} =\operatorname{Cov}(\theta\Theta\varepsilon_{t-13},\varepsilon_{t-13}) =\theta\Theta\,\sigma^2. \]
Enunciado.
Demostrar que el operador de diferencia estacional (con estacionalidad
de \(s\) periodos) se obtiene como
producto del operador de diferencia regular con el operador de suma del
presente y los \(s-1\) últimos términos
de la serie temporal: \[
(1 - B^s) = (1 - B)\,(1 + B + B^2 + B^3 + \cdots + B^{s-1}).
\]
Sea \(\{y_t\}\) una serie temporal y \(B\) el operador de retardo, definido como: \[ B\,y_t = y_{t-1}, \qquad B^k y_t = y_{t-k}. \]
Entonces: - La diferencia regular viene dada por \[ (1 - B)y_t = y_t - y_{t-1}. \] - La diferencia estacional de periodo \(s\) se define como \[ (1 - B^s)y_t = y_t - y_{t-s}. \]
El objetivo es probar una identidad algebraica entre operadores polinómicos en \(B\).
Consideremos el producto: \[ (1 - B)(1 + B + B^2 + \cdots + B^{s-1}). \]
Distribuyendo: \[ (1 - B)(1 + B + \cdots + B^{s-1}) = (1 + B + \cdots + B^{s-1}) - B(1 + B + \cdots + B^{s-1}). \]
El segundo término es: \[ B(1 + B + \cdots + B^{s-1}) = B + B^2 + \cdots + B^s. \]
Por tanto, el producto se convierte en: \[ (1 + B + \cdots + B^{s-1}) - (B + B^2 + \cdots + B^s). \]
Todos los términos intermedios se cancelan de forma telescópica, quedando: \[ 1 - B^s. \]
Luego: \[ (1 - B)(1 + B + B^2 + \cdots + B^{s-1}) = 1 - B^s. \]
Aplicando el operador factorizado a la serie \(\{y_t\}\): \[ (1 - B^s)y_t = (1 - B)(1 + B + \cdots + B^{s-1})y_t. \]
Primero: \[ (1 + B + \cdots + B^{s-1})y_t = y_t + y_{t-1} + \cdots + y_{t-(s-1)}. \]
Después aplicamos la diferencia regular: \[ \begin{aligned} (1 - B)\big(y_t + y_{t-1} + \cdots + y_{t-(s-1)}\big) &= \big(y_t + y_{t-1} + \cdots + y_{t-(s-1)}\big) \\ &\quad - \big(y_{t-1} + y_{t-2} + \cdots + y_{t-s}\big). \end{aligned} \]
Todos los términos se cancelan salvo los extremos, obteniéndose: \[ y_t - y_{t-s}. \]
Esto coincide exactamente con: \[ (1 - B^s)y_t. \]
El operador de diferencia estacional de periodo \(s\) puede escribirse como: \[ \boxed{1 - B^s = (1 - B)(1 + B + B^2 + \cdots + B^{s-1})}. \]
Es decir, la diferencia estacional equivale a aplicar primero un operador de suma de los \(s\) últimos términos y después una diferencia regular.
Obtener con R todas las raíces del operador de diferencia estacional para series trimestrales. Representarlas en el plano complejo.
Para una serie trimestral, con periodicidad \(s = 4\), el operador de diferencia estacional es:
\[ \nabla_4 = 1 - B^4 \]
Las raíces de este operador se obtienen resolviendo la ecuación característica:
\[ 1 - z^4 = 0 \quad \Longleftrightarrow \quad z^4 = 1 \]
Las soluciones de la ecuación \(z^4 = 1\) son las cuatro raíces cuartas de la unidad:
\[ z_k = \exp\!\left(\frac{2\pi i k}{4}\right), \quad k = 0,1,2,3 \]
Explícitamente, estas raíces son:
\[ z_0 = 1, \quad z_1 = i, \quad z_2 = -1, \quad z_3 = -i \]
Todas ellas se sitúan sobre la circunferencia unidad del plano complejo.
El polinomio asociado al operador \(1 - z^4\) tiene como coeficientes:
\[ (1,\;0,\;0,\;0,\;-1) \]
## [1] -6.046735e-17+1.000000e+00i -1.000000e+00-3.863424e-17i
## [3] -1.276794e-16-1.000000e+00i 1.000000e+00+2.220446e-16i
La representación en el plano complejo se realiza graficando la parte real frente a la parte imaginaria de cada raíz y superponiendo la circunferencia unidad para verificar que todas las raíces se encuentran sobre ella.
plot(Re(raices), Im(raices),
xlim = c(-1.5, 1.5),
ylim = c(-1.5, 1.5),
xlab = "Parte real",
ylab = "Parte imaginaria",
main = "Raíces del operador de diferencia estacional trimestral",
pch = 19)
t <- seq(0, 2*pi, length.out = 200)
lines(cos(t), sin(t), lty = 2)
abline(h = 0, v = 0, lty = 3)En el gráfico resultante aparecen cuatro puntos situados en:
\[ (1, \;0) (0, \;1) (−1, \;0) (0, \;−1) \]
todos ellos sobre la circunferencia unidad, que representan las raíces del operador de diferencia estacional trimestral.
La presencia de raíces en la circunferencia unidad indica que el
operador 1 − B^4 introduce una no estacionariedad estacional.
Por este motivo, es necesario aplicar una diferencia estacional de orden
1 para eliminar una estacionalidad trimestral determinista y obtener un
proceso estacionario.
Volver La expresión
\[ z^4 = 1 \]
aparece al buscar las raíces del operador de diferencia estacional. Para resolverla se utiliza la representación exponencial de los números complejos.
El número complejo \(1\) puede escribirse en forma exponencial como:
\[ 1 = \exp(2\pi i m), \quad m \in \mathbb{Z} \]
ya que sumar múltiplos enteros de \(2\pi\) al argumento no altera el valor del número complejo.
Si \(z^4 = 1\), entonces puede escribirse:
\[ z^4 = \exp(2\pi i m) \]
Tomando la raíz cuarta en ambos lados se obtiene:
\[ z = \exp\!\left(\frac{2\pi i m}{4}\right) \]
Para obtener soluciones distintas basta considerar los valores:
\[ m = 0, 1, 2, 3 \]
ya que para valores mayores se repiten las soluciones.
Por tanto, las soluciones de la ecuación \(z^4 = 1\) son:
\[ z_k = \exp\!\left(\frac{2\pi i k}{4}\right), \quad k = 0,1,2,3 \]
Estas soluciones se denominan las raíces cuartas de la unidad y están igualmente espaciadas sobre la circunferencia unidad del plano complejo.
De forma explícita:
\[ z_0 = 1, \\ z_1 = i, \\ z_2 = -1, \\ z_3 = -i \\ \]
Todas ellas tienen módulo igual a uno y representan los cuatro puntos cardinales de la circunferencia unidad.
Obtener con R todas las raíces del operador de diferencia estacional para series mensuales. Representarlas en el plano complejo.
Para una serie mensual, con periodicidad \(s = 12\), el operador de diferencia estacional es:
\[ \nabla_{12} = 1 - B^{12} \]
Las raíces de este operador se obtienen resolviendo la ecuación característica:
\[ 1 - z^{12} = 0 \quad \Longleftrightarrow \quad z^{12} = 1 \]
Las soluciones de la ecuación \(z^{12} = 1\) son las doce raíces duodécimas de la unidad:
\[ z_k = \exp\!\left(\frac{2\pi i k}{12}\right), \quad k = 0,1,2,\ldots,11 \]
Todas ellas se sitúan sobre la circunferencia unidad del plano complejo, igualmente espaciadas (separadas por un ángulo de \(2\pi/12 = \pi/6\)).
El polinomio asociado al operador \(1 - z^{12}\) tiene como coeficientes:
\[ (1,\;0,\;0,\;0,\;0,\;0,\;0,\;0,\;0,\;0,\;0,\;0,\;-1) \]
## [1] 5.000000e-01+8.660254e-01i -8.660254e-01+5.000000e-01i
## [3] -5.000000e-01-8.660254e-01i 8.660254e-01-5.000000e-01i
## [5] 1.097852e-16+1.000000e+00i -1.000000e+00-1.237692e-14i
## [7] 1.303521e-14-1.000000e+00i 1.000000e+00+1.086042e-14i
## [9] -5.000000e-01+8.660254e-01i -8.660254e-01-5.000000e-01i
## [11] 5.000000e-01-8.660254e-01i 8.660254e-01+5.000000e-01i
La representación en el plano complejo se realiza graficando la parte real frente a la parte imaginaria de cada raíz y superponiendo la circunferencia unidad para verificar que todas las raíces se encuentran sobre ella.
plot(Re(raices), Im(raices),
xlim = c(-1.5, 1.5),
ylim = c(-1.5, 1.5),
xlab = "Parte real",
ylab = "Parte imaginaria",
main = "Raíces del operador de diferencia estacional mensual",
pch = 19)
t <- seq(0, 2*pi, length.out = 400)
lines(cos(t), sin(t), lty = 2)
abline(h = 0, v = 0, lty = 3)En el gráfico resultante aparecen doce puntos sobre la circunferencia unidad, correspondientes a:
\[ \left(\cos\left(\frac{2\pi k}{12}\right),\; \sin\left(\frac{2\pi k}{12}\right)\right), \quad k = 0,1,\ldots,11 \]
Estos puntos representan las raíces del operador de diferencia estacional mensual y están distribuidos uniformemente cada \(30^\circ\).
La presencia de raíces en la circunferencia unidad indica que el
operador \(1 - B^{12}\) introduce una
no estacionariedad estacional.
Por ello, aplicar una diferencia estacional de orden 1 (\(D = 1\)) es el mecanismo estándar para
eliminar una estacionalidad mensual determinista y trabajar con un
proceso estacionario.
La afirmación
“La presencia de raíces en la circunferencia unidad indica que el operador \(1 - B^{12}\) introduce una no estacionariedad estacional”
se entiende a partir de la relación entre raíces del operador, memoria infinita y estacionariedad.
En modelos de series temporales, un proceso es estacionario si los efectos de perturbaciones pasadas se van debilitando con el tiempo.
Matemáticamente, esto ocurre cuando todas las raíces del polinomio autorregresivo están fuera de la circunferencia unidad.
Cuando una raíz está exactamente en módulo 1, el efecto de un shock no se disipa, sino que permanece indefinidamente.
Eso es precisamente una no estacionariedad.
El operador
\[ 1 - B^{12} \]
compara el valor actual de la serie con el valor observado doce periodos antes:
\[ (1 - B^{12}) y_t = y_t - y_{t-12} \]
Si una serie cumple aproximadamente:
\[ y_t \approx y_{t-12} \]
entonces tiene una estructura estacional persistente, es decir, lo que ocurre en un mes se repite año tras año sin amortiguarse.
Esto es una forma clara de no estacionariedad estacional.
Las raíces del operador se obtienen resolviendo:
\[ 1 - z^{12} = 0 \quad \Longleftrightarrow \quad z^{12} = 1 \]
Las doce soluciones tienen módulo:
\[ |z_k| = 1 \]
Esto significa que el operador tiene doce raíces exactamente sobre la circunferencia unidad.
Cada una de esas raíces corresponde a una oscilación periódica que no se atenúa en el tiempo.
Por eso el proceso no es estacionario desde el punto de vista estacional.
Aplicar una diferencia estacional de orden 1 consiste en trabajar con:
\[ z_t = (1 - B^{12}) y_t = y_t - y_{t-12} \]
Esta transformación elimina las componentes que se repiten exactamente cada 12 periodos.
Es decir, elimina la raíz unitaria estacional.
Una vez eliminadas esas raíces en módulo 1, el proceso resultante puede ser estacionario (si el resto de la estructura lo permite).
– Raíz en módulo 1 → la memoria no se apaga
– Memoria que no se apaga → no estacionariedad
– Raíz en módulo 1 asociada a periodicidad 12 → no estacionariedad
estacional
– Aplicar \(1 - B^{12}\) → se cancela
esa periodicidad
– Resultado → proceso estacionario
“Un operador de diferencia estacional introduce no estacionariedad porque sus raíces están en la circunferencia unidad. La aplicación de una diferencia estacional de orden uno elimina dichas raíces unitarias y permite obtener un proceso estacionario.”
Para entender esto mejor ver el ejercicio 2
Analizar los datos de empleo de la carpeta W9.
Estos datos corresponden a una serie temporal mensual
del empleo de varones en Estados Unidos, observada
desde enero de 1971 hasta diciembre de 1981.
La serie es mensual, por lo que se considera una posible estacionalidad anual con periodicidad \(s = 12\).
Se trata de una serie macroeconómica agregada, en la que cabe esperar tendencia, estacionalidad y fuerte dependencia temporal.
empleo <- scan("../Dia01/Datos/W9/W9.txt")
empleo_ts <- ts(empleo, start = c(1971, 1), frequency = 12)
plot(empleo_ts,
main = "Empleo mensual de varones en EE.UU. (1971–1981)",
ylab = "Empleo",
xlab = "Año")A partir del gráfico se aprecia un comportamiento no estacionario, con cambios en el nivel medio y una posible estacionalidad, lo que sugiere la necesidad de diferenciación regular y, en su caso, estacional.
boxplot(empleo_ts ~ cycle(empleo_ts),
xlab = "Mes",
ylab = "Empleo",
main = "Distribución mensual del empleo")La función de autocorrelación (ACF) mide la dependencia lineal entre \(y_t\) y sus retardos \(y_{t-k}\). En una serie estacionaria, la ACF debe:
Por el contrario, en la serie original se observa que la ACF:
El decaimiento lento es característico de series no estacionarias en media, típicamente asociadas a la presencia de una raíz unitaria o tendencia estocástica. Esto indica que los choques tienen efectos persistentes en el tiempo y justifica la necesidad de aplicar diferenciación regular para eliminar dicha tendencia.
Además, la presencia de picos periódicos en la ACF y la forma oscilante o “sinusoidal” de su envolvente son indicativos de una componente estacional, en este caso con periodicidad anual (\(s = 12\)), propia de una serie mensual. Esta dependencia periódica no desaparece con la diferenciación regular, por lo que resulta necesario aplicar también diferenciación estacional.
La función de autocorrelación parcial (PACF) mide la correlación entre \(y_t\) y \(y_{t-k}\) eliminando el efecto de los retardos intermedios. En series estacionarias simples:
En la serie original, la PACF:
En conjunto, el comportamiento observado de la ACF y la PACF indica que la serie:
Por ello, se recomienda aplicar diferenciación regular (\(d = 1\)) para eliminar la tendencia estocástica y diferenciación estacional (\(D = 1\), \(s = 12\)) para eliminar la dependencia periódica, como paso previo al ajuste de un modelo SARIMA sobre una serie aproximadamente estacionaria.
Se aplica una diferenciación regular y una estacional:
empleo_diff <- diff(diff(empleo_ts), lag = 12)
plot(empleo_diff,
main = "Serie diferenciada regular y estacionalmente",
ylab = "Empleo diferenciado",
xlab = "Año")Tras la diferenciación, la serie oscila alrededor de una media constante.
Nota. La transformación aplicada corresponde al operador \[ (1 - B)(1 - B^{12}), \] resultado de combinar una diferenciación regular y una diferenciación estacional de periodo 12. Esta operación elimina simultáneamente la tendencia estocástica y la componente estacional anual de la serie.
La estructura de autocorrelación sugiere un componente MA tanto regular como estacional.
La ACF de la serie diferenciada muestra un pico significativo en el retardo estacional 12, mientras que el resto de autocorrelaciones, incluidos los retardos bajos, son pequeñas y se mantienen dentro de las bandas de confianza. La PACF no presenta un patrón de corte claro. Este comportamiento es característico de un proceso con componentes MA tanto regular como estacional.
modelo <- arima(empleo_ts,
order = c(0, 1, 1),
seasonal = list(order = c(0, 1, 1), period = 12))
modelo##
## Call:
## arima(x = empleo_ts, order = c(0, 1, 1), seasonal = list(order = c(0, 1, 1),
## period = 12))
##
## Coefficients:
## ma1 sma1
## -0.3106 -1.000
## s.e. 0.0976 0.128
##
## sigma^2 estimated as 2353: log likelihood = -645.18, aic = 1296.35
El modelo propuesto es un ARIMA(0,1,1)×(0,1,1)\(_{12}\).
Nota. Aunque el modelo incluye dos diferenciaciones (\(d=1\) y \(D=1\)), estas actúan sobre componentes distintas de la serie. La diferenciación regular elimina la tendencia estocástica, mientras que la diferenciación estacional elimina la estacionalidad anual persistente. La combinación \((1-B)(1-B^{12})\) es necesaria para alcanzar estacionariedad y no equivale a una doble diferenciación regular.
El modelo ajustado es un ARIMA(0,1,1)×(0,1,1)\(_{12}\), que puede escribirse como:
\[ (1 - B)(1 - B^{12})\,y_t = (1 + \theta B)(1 + \Theta B^{12})\,\varepsilon_t, \]
donde:
A partir del ajuste realizado en R se obtiene:
\[ (1 - B)(1 - B^{12})\,y_t = (1 - 0.3106\,B)(1 - 1.000\,B^{12})\,\varepsilon_t, \]
con errores estándar:
El valor estimado del coeficiente MA estacional cercano a \(-1\) indica una dependencia estacional muy marcada, coherente con el patrón observado previamente en la ACF de la serie diferenciada.
residuos <- residuals(modelo)
par(mfrow = c(2,2))
plot(residuos, main = "Residuos del modelo", ylab = "Residuo", xlab = "Tiempo")
acf(residuos, main = "ACF de residuos")
pacf(residuos, main = "PACF de residuos")
qqnorm(residuos)
qqline(residuos)##
## Box-Ljung test
##
## data: residuos
## X-squared = 23.087, df = 24, p-value = 0.5146
Los residuos oscilan alrededor de cero y no muestran estructura temporal apreciable. La ACF y la PACF de los residuos no presentan autocorrelaciones significativas, y el contraste de Ljung–Box no rechaza la hipótesis de independencia hasta el retardo 24 (p-valor = 0.51). El QQ-plot sugiere una aproximación razonable a la normalidad. En conjunto, los residuos pueden considerarse compatibles con ruido blanco.
La serie mensual de empleo de varones en EE.UU. presenta tendencia y
estacionalidad anual.
Tras aplicar diferenciación regular y estacional, un modelo
ARIMA(0,1,1)×(0,1,1)\(_{12}\) describe adecuadamente su
dinámica y supera los contrastes de diagnóstico habituales.
A continuación se comenta la solución propuesta por el profesor. La idea general es:
TesRes).seasonal (X-13ARIMA-SEATS /
X-11).# ============================================================
# EJERCICIO 5 — Empleo mensual (varones, EE.UU., 1971–1981)
# Objetivo: analizar tendencia/estacionalidad, transformar para
# estacionarizar, proponer y validar un modelo SARIMA.
# ============================================================
# -----------------------------
# 0) Carga función de diagnosis
# -----------------------------
source("../Dia01/Programas/TesRes.R")
# -----------------------------
# 1) Carga de datos y serie ts
# -----------------------------
# y0: vector numérico con las observaciones mensuales
y0 <- scan("../Dia01/Datos/W9/W9.txt")
# y: serie temporal mensual (frequency = 12) desde enero de 1971
y <- ts(y0, frequency = 12, start = c(1971, 1))
# -------------------------------------------
# 2) Periodograma suavizado (kernel Daniell)
# -------------------------------------------
# kernel(): define el filtro de suavizado para el periodograma.
# "modified.daniell" con m=c(2,2) aplica un suavizado moderado
# para resaltar picos de frecuencia (por ejemplo estacionales).
k2 <- kernel("modified.daniell", m = c(2, 2))
# Para ver varias salidas en una misma ventana
par(mfrow = c(2, 2))
# ------------------------------------------------
# 3) Exploración inicial: serie original (nivel)
# ------------------------------------------------
# Gráfico de la serie: ayuda a detectar tendencia y cambios de nivel
plot.ts(y)
# spec.pgram(): periodograma (dominio frecuencia)
# - log='yes': escala logarítmica para visualizar picos relativos
# - taper=0: sin atenuación en bordes
# - detrend=FALSE: no elimina tendencia (queremos verla en el espectro)
# - demean=TRUE: centra la serie para el cálculo espectral
spec.pgram(y, k2, taper = 0, log = 'yes', detrend = FALSE, demean = TRUE)
# ACF/PACF: dependencia temporal en el dominio del tiempo
# En series ts, el eje X suele aparecer en "unidades de tiempo":
# con frequency=12, x=1 equivale a 12 meses (un año).
acf(y)
pacf(y)# ------------------------------------------------------------
# 4) Diferenciación regular: dy = (1 - B) y_t
# ------------------------------------------------------------
# Objetivo: eliminar tendencia estocástica (no estacionariedad regular)
dy <- diff(y)
# Comprobación visual y en frecuencia + ACF/PACF
plot(dy)
spec.pgram(dy, k2, taper = 0, log = 'yes', detrend = FALSE, demean = TRUE)
acf(dy)
pacf(dy)# ------------------------------------------------------------
# 5) Diferenciación estacional: d12y = (1 - B^12) y_t
# ------------------------------------------------------------
# Objetivo: eliminar estacionalidad anual persistente (periodo 12)
d12y <- diff(y, lag = 12)
# Diagnóstico tras solo diferencia estacional
plot(d12y)
spec.pgram(d12y, k2, taper = 0, log = 'yes', detrend = FALSE, demean = TRUE)
acf(d12y)
pacf(d12y)# -------------------------------------------------------------------
# 6) Diferenciación regular + estacional: ddy = (1 - B)(1 - B^12) y_t
# -------------------------------------------------------------------
# Objetivo: eliminar simultáneamente tendencia y estacionalidad
ddy <- diff(dy, lag = 12)
# Diagnóstico de la serie ya (aprox.) estacionaria
plot(ddy)
spec.pgram(ddy, k2, taper = 0, log = 'yes', detrend = FALSE, demean = TRUE)
acf(ddy)
pacf(ddy)# ------------------------------------------------------------
# 7) Ajuste de modelos SARIMA candidatos y diagnóstico residuos
# ------------------------------------------------------------
# A partir de los diagnósticos previos, se prueban modelos simples:
# - (0,1,0)x(0,1,1)[12]
# - (0,1,1)x(0,1,1)[12]
# Se evalúan residuos: ACF/PACF, espectro y posibles patrones en varianza.
par(mfrow = c(3, 2))
# --------------------------
# 7.1) Modelo SARIMA(0,1,0)x(0,1,1)[12]
# --------------------------
# Este modelo incluye solo MA estacional (captura dependencia anual residual)
mddy0001 <- arima(y, order = c(0, 1, 0), seasonal = c(0, 1, 1))
# Residuos: deben parecer ruido blanco (sin estructura temporal)
plot(mddy0001$residuals)
# Periodograma de residuos: debería ser "plano" (sin picos dominantes)
spec.pgram(mddy0001$residuals, k2, taper = 0, log = 'yes', detrend = FALSE, demean = TRUE)
# ACF/PACF de residuos: barras dentro de bandas -> independencia temporal
acf(mddy0001$residuals); pacf(mddy0001$residuals)
# ACF/PACF de residuos^2: detecta heterocedasticidad condicional (tipo ARCH)
acf(mddy0001$residuals^2); pacf(mddy0001$residuals^2)# TesRes(): función auxiliar (si está definida en vuestro entorno)
# Normalmente devuelve estadísticos de diagnóstico (p.ej. Ljung-Box en varios lags).
Temddy0001 <- TesRes(mddy0001, 1)
Temddy0001[6:8]## [[1]]
## Resumen VM
## 1 0.140832659 pvalLjungBox
## 2 0.950933437 pvalMcLeodLi
## 3 0.007702685 pvalShapiroWilk
## 4 0.451615583 pvalLjungEsta
## 5 0.000000000 max(abs(Corr))
## 6 1.000000000 fila max
## 7 1.000000000 col max
##
## [[2]]
## Parametros Desv. tipicas Cocientes T p-valores
## sma1 -0.999996 0.1821091 -5.491192 3.992292e-08
##
## [[3]]
## Var. residual log-vero aic
## 1 2538.058 -649.6228 1303.246
# --------------------------
# 7.2) Modelo SARIMA(0,1,1)x(0,1,1)[12]
# --------------------------
# Añade un MA(1) regular además del MA(1) estacional:
# suele mejorar el ajuste si queda dependencia de corto plazo (lag 1, 2, ...)
mddy0101 <- arima(y, order = c(0, 1, 1), seasonal = c(0, 1, 1))
plot(mddy0101$residuals)
spec.pgram(mddy0101$residuals, k2, taper = 0, log = 'yes', detrend = FALSE, demean = TRUE)
acf(mddy0101$residuals); pacf(mddy0101$residuals)
acf(mddy0101$residuals^2); pacf(mddy0101$residuals^2)## [[1]]
## Resumen VM
## 1 3.968110e-01 pvalLjungBox
## 2 9.588875e-01 pvalMcLeodLi
## 3 7.113236e-03 pvalShapiroWilk
## 4 1.762821e-01 pvalLjungEsta
## 5 1.221582e-05 max(abs(Corr))
## 6 1.000000e+00 fila max
## 7 2.000000e+00 col max
##
## [[2]]
## Parametros Desv. tipicas Cocientes T p-valores
## ma1 -0.3105852 0.0975969 -3.182326 1.460972e-03
## sma1 -0.9999913 0.1280259 -7.810853 5.680208e-15
##
## [[3]]
## Var. residual log-vero aic
## 1 2353.294 -645.1761 1296.352
# --------------------------
# 7.3) Mismo modelo estimado con CSS
# --------------------------
# method="CSS" (Conditional Sum of Squares) puede ayudar en convergencia
# o dar una solución alternativa (a veces útil comparar).
mddy0101b <- arima(y, order = c(0, 1, 1), seasonal = c(0, 1, 1), method = "CSS")
plot(mddy0101b$residuals)
spec.pgram(mddy0101b$residuals, k2, taper = 0, log = 'yes', detrend = FALSE, demean = TRUE)
acf(mddy0101b$residuals); pacf(mddy0101b$residuals)
acf(mddy0101b$residuals^2); pacf(mddy0101b$residuals^2)## [[1]]
## Resumen VM
## 1 0.42024037 pvalLjungBox
## 2 0.95159744 pvalMcLeodLi
## 3 0.03526324 pvalShapiroWilk
## 4 0.66291028 pvalLjungEsta
## 5 0.18659321 max(abs(Corr))
## 6 2.00000000 fila max
## 7 1.00000000 col max
##
## [[2]]
## Parametros Desv. tipicas Cocientes T p-valores
## ma1 -0.3348697 0.10042937 -3.334381 8.548959e-04
## sma1 -0.8154588 0.05482525 -14.873782 4.877815e-50
##
## [[3]]
## Var. residual log-vero aic
## 1 3081.149 -646.8206 NA
# ------------------------------------------------------------
# 8) Análisis automático (X-13ARIMA-SEATS / X-11) con seasonal
# ------------------------------------------------------------
# Esto NO sustituye al análisis manual, pero sirve como contraste:
# el paquete seasonal llama a X-13ARIMA-SEATS para ajustar/regresar
# y descomponer la serie, y permite forzar X-11.
par(mfrow = c(2, 1))
library(seasonal)## Warning: package 'seasonal' was built under R version 4.5.2
# Ajuste automático por defecto (X-13ARIMA-SEATS)
mody <- seas(y)
summary(mody) # resumen: modelo, diagnósticos, estacionalidad, etc.##
## Call:
## seas(x = y)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## LS1980.May 179.94676 44.62893 4.032 5.53e-05 ***
## MA-Nonseasonal-01 0.35616 0.07697 4.627 3.70e-06 ***
## MA-Seasonal-12 0.99965 0.07089 14.101 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## SEATS adj. ARIMA: (0 1 1)(0 1 1) Obs.: 132 Transform: none
## AICc: 1284, BIC: 1294 QS (no seasonality in final): 0
## Box-Ljung (no autocorr.): 29.17 Shapiro (normality): 0.9902
plot(mody) # descomposición y gráficos estándar
# Forzar descomposición X-11
modyx11 <- seas(y, x11 = "")
plot(modyx11)##
## Call:
## seas(x = y, x11 = "")
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## LS1980.May 179.94676 44.62893 4.032 5.53e-05 ***
## MA-Nonseasonal-01 0.35616 0.07697 4.627 3.70e-06 ***
## MA-Seasonal-12 0.99965 0.07089 14.101 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## X11 adj. ARIMA: (0 1 1)(0 1 1) Obs.: 132 Transform: none
## AICc: 1284, BIC: 1294 QS (no seasonality in final):0.05827
## Box-Ljung (no autocorr.): 29.17 Shapiro (normality): 0.9902
Se carga el fichero y se construye una ts mensual con
inicio en 1971(1):
frequency = 12 fija periodicidad anual.start = c(1971,1) sitúa enero de 1971 como primera
observación.Se define un kernel Daniell modificado con dos ventanas
m=c(2,2) y se usa spec.pgram con:
log='yes' para ver mejor picos relativos,taper=0 para no atenuar extremos,detrend=FALSE y demean=TRUE (se centra,
pero no se elimina tendencia).Interpretación esperada:
Por eso se calculan también acf(y) y
pacf(y).
Se calcula dy <- diff(y) y se repite el bloque de
diagnóstico (gráfico, periodograma, ACF/PACF).
Objetivo:
Se calcula d12y <- diff(y, lag=12) y se vuelve a
analizar.
Objetivo:
Se calcula ddy <- diff(dy, lag=12) (equivalente a
aplicar \(d=1\) y \(D=1\)) y se repite:
Esta es la transformación típica cuando se sospecha que la serie es integrada tanto en parte regular como estacional, es decir, un esquema SARIMA con:
Después de explorar ddy, el profesor propone ajustar
directamente sobre y modelos SARIMA con:
y diagnosticar residuos.
mddy0001 <- arima(y, order=c(0,1,0), seasonal=c(0,1,1))
Interpretación:
Diagnóstico aplicado:
plot(residuals): inspección visual.spec.pgram(residuals, ...): comprobar si quedan
frecuencias dominantes (estacionalidad residual).acf/pacf(residuals): detectar autocorrelación
remanente.acf/pacf(residuals^2): buscar heterocedasticidad
condicional (patrones tipo ARCH).TesRes(mddy0001,1); Temddy0001[6:8]: extraer medidas de
diagnóstico (típicamente incluyen Ljung–Box y/o p-valores en ciertos
lags). La selección [6:8] indica que el profesor se fija en
un subconjunto concreto de estadísticos/p-valores.Si aparecen autocorrelaciones residuales claras (o p-valores pequeños), el modelo se considera insuficiente.
mddy0101 <- arima(y, order=c(0,1,1), seasonal=c(0,1,1))
Interpretación:
Se repite exactamente el mismo diagnóstico de residuos.
mddy0101b <- arima(y, order=c(0,1,1), seasonal=c(0,1,1), method="CSS")
Interpretación:
CSS (Conditional Sum of Squares) es un método
alternativo de estimación.De nuevo, se valida con periodograma/ACF/PACF de residuos y
TesRes.
Criterio final típico: se elige el modelo con residuos “más blancos” (sin autocorrelación significativa) y mejores estadísticos de diagnóstico (p-valores altos en Ljung–Box), además de buena parsimonia.
seasonal (X-13ARIMA-SEATS y
X-11)La parte final:
mody <- seas(y) ajusta automáticamente un modelo con
X-13ARIMA-SEATS:
modyx11 <- seas(y, x11="") fuerza el uso de
X-11 (descomposición por filtros móviles).Luego se inspeccionan:
summary(mody) y summary(modyx11) para ver:
plot(mody) y plot(modyx11) para ver la
descomposición.Esta parte sirve como “contraste” automático frente al análisis manual SARIMA.
La solución del profesor implementa un flujo completo:
Si quieres, te lo adapto a “solución de examen” con: - qué se observa en cada ACF/PACF y cada periodograma, - qué retardo/frecuencia concreta apunta a estacionalidad anual, - y una frase final tipo “modelo recomendado”.