Capítulo 4 Procesos No Estacionarios Univariados

4.1 Definición y formas de No Estacionariedad

Hasta ahora hemos planteado una serie de técnicas de regresión (AR, MA, ARMA, ARIMA, ARIMAX, etc.) que aplican sólo a procesos o series estacionarias. Sin embargo, no hemos proporcionado una prueba estadística para determinar si una serie es estacionaria. Ese es uno de los objetivos de esta sección.

Adicionalmente, en esta sección relajaremos la definición de estacionariedad y plantearemos pruebas para determinar cuándo una serie es estacionaria bajo tres diferentes especificaciones:

  1. Estacionariedad alrededor de una tendencia determinística;

  2. Estacionariedad alrededor de una media, y

  3. Estacionariedad alrededor del cero.

A continuación, discutiremos cómo es posible que una serie sea estacionaria alrededor de una tendencia determinística. Diremos que una tendencia es determinística si ésta puede ser aproximada o modelada por un polinomio en función de \(t\), la cual incluye posibles transformaciones logarítmicas.

Bajo este enfoque, el proceso está lejos de cumplir con la definición de estacionariedad que hemos establecido en capítulos previos, pero relajaremos el supuesto y reconoceremos que una serie puede ser estacionaria en varianza bajo una tendencia determinística. Así, diremos que la serie será descrita por una ecuación dada por: \[\begin{equation} Y_t = \sum^m_{j = 0} \delta_j t^j + X_t \tag{4.1} \end{equation}\]

Donde \(X_t\) es un proceso \(ARMA(p, q)\) con media cero, que se puede ver como: \[\begin{equation} \alpha(L) X_t = \beta(L) U_t \end{equation}\]

Entonces, los momentos y varianza de la ecuación (4.1) estarán dados por: \[\begin{equation} \mathbb{E}[Y_t] = \sum^m_{j = 0} \delta_j t^j = \mu_t \tag{4.2} \end{equation}\]

Dada la ecuación (4.2) podemos plantear la siguiente ecuación de covarianzas: \[\begin{eqnarray} \mathbb{E}[(Y_t - \mu_t) \cdot (Y_{t+\tau} - \mu_{t+\tau})] & = & \mathbb{E}[X_t \cdot X_{t+\tau}] \nonumber \\ & = & \gamma_X(\tau) \tag{4.3} \end{eqnarray}\]

Utilizando el resultado de la ecuación (4.3) podemos establecer que: \[\begin{equation} \mathbb{E}[(Y_t - \mu_t)^2] = \mathbb{E}[X_t^2] = \sigma_X^2 \tag{4.4} \end{equation}\]

Así, las ecuaciones (4.2) y (4.4) significan que el proceso descrito por la ecuación (4.1) es estacionario pero en varianza. De esta forma, a partir de este momento diremos que una serie será estacionaria alrededor de una tendencia determinística si cumple con las condiciones establecidas en las ecuaciones (4.1), (4.2) y (4.4).

Dicho lo anterior, estudiaremos el concepto de raíz unitaria de un proceso estocástico o de una serie de tiempo. Partamos de plantear que un proceso AR(1) tiene raíz unitaria cuando el coeficiente \(a_1 = 1\), es decir: \[\begin{equation} Y_t = Y_{t-1} + U_t \tag{4.5} \end{equation}\]

Donde \(U_t\) es un proceso puramente aleatorio con media cero, varianza constante y autocovarianza cero (0), al cual nos referiremos simplemente como ruido blanco. Supongamos ahora que incluimos un término constante en la ecuación (4.5), de forma que tenemos: \[\begin{equation} Y_t = \delta + Y_{t-1} + U_t \tag{4.6} \end{equation}\]

Tomando a la ecuación (4.6) y suponiendo que existe un valor inicial \(Y_0\) de la serie, podemos plantear la siguiente secuencia de expresiones: \[\begin{eqnarray*} Y_1 & = & \delta + Y_0 + U_1 \\ Y_2 & = & \delta + Y_1 + U_2 \\ & = & \delta + (\delta + Y_0 + U_1) + U_2 \\ & = & 2 \times \delta + Y_0 + U_1 + U_2 \end{eqnarray*}\]

Si repitiéramos la sustitución sucesiva anterior hasta el momento \(t\) encontraríamos que la ecuación de la solución general que describe a un \(AR(1)\) con término constante que tiene raíz unitaria es de la forma: \[\begin{equation} Y_t = t \delta + Y_0 + \sum_{i=1}^t U_i \tag{4.7} \end{equation}\]

La ecuación (4.7) es equivalente a la ecuación (4.1). A la ecuación (4.7) se le conoce como proceso con drift o con término constante. El parámetro \(\delta\) es el drift: determina la pendiente de la tendencia lineal \(\mathbb{E}[Y_t] = Y_0 + \delta t\), de modo que un valor \(\delta > 0\) produce una deriva ascendente en la trayectoria esperada de la serie. La acumulación de errores \(\sum_{i=1}^t U_i\) no es consecuencia del drift sino de la raíz unitaria: cada innovación queda incorporada de forma permanente en el nivel de la serie.

Si revisamos el comportamiento de sus momentos y varianza de la ecuación (4.7) encontramos que: \[\begin{eqnarray*} \mathbb{E}[Y_t] & = & Y_0 + \delta t = \mu_t \\ Var[Y_t] & = & t \sigma^2 = \gamma(0, t) \\ Cov(Y_t, Y_{t+\tau}) & = & t \sigma^2 = \gamma(t, \tau) \end{eqnarray*}\]

De esta forma, la ecuación (4.7) no describe un proceso estacionario: tanto la media como la varianza dependen de \(t\), por lo que el proceso es no estacionario en media y en varianza. Ahora hagamos un resumen y acordemos notación que se utilizará en esta sección. Supongamos un proceso o serie de tiempo que es descrito por la siguiente ecuación: \[\begin{equation} Y_t = \delta + Y_{t-1} + X_t \tag{4.8} \end{equation}\]

Donde \(X_t\) es un \(ARMA(p, q)\) con media cero. Si definimos a \(\Delta Y_t = Y_t - Y_{t-1}\), entonces la ecuación (4.8) la podemos escribir como: \[\begin{equation} \Delta Y_t = \delta + X_t \tag{4.9} \end{equation}\]

A la ecuación (4.9) la denominaremos como un proceso estacionario en diferencias o simplemente como un proceso integrado. Así, utilizaremos la siguiente definición.

Sea un proceso estocástico \(Y\), decimos que es un proceso integrado de orden \(d\), \(I(d)\), si este puede transformarse a uno estacionario, que sea invertible, mediante la diferenciación del mismo \(d\)-veces, es decir: \[\begin{equation} (1 - L)^d Y_t = \delta + X_t \tag{4.10} \end{equation}\]

Donde \(X_t\) es un proceso \(ARMA(p, q)\). De lo cual se infiere que en la ecuación (4.10) \(Y_t\) será una \(ARIMA(p, d, q)\), el cual contiene \(d\) raíces unitarias. A estos procesos también se les conoce como procesos con tendencia estocástica.

Dada la discusión anterior, resumimos los dos tipos de procesos no estacionarios en media que estudiaremos: \[\begin{eqnarray*} Y_t & = & Y_0 + \delta t + U_t \\ Y_t & = & Y_0 + t \delta + \sum_{i = 1}^t U_i \end{eqnarray*}\]

El primer caso (tendencia determinística, TS) no es estacionario en media —la media crece como \(Y_0 + \delta t\)—, pero sí es estacionario en varianza: \(\text{Var}(Y_t) = \sigma^2\) es constante y los choques tienen un efecto transitorio. El segundo caso (tendencia estocástica, DS) tampoco es estacionario en media, pero además no lo es en varianza: \(\text{Var}(Y_t) = t\sigma^2 \to \infty\) cuando \(t \to \infty\), y los choques tienen un efecto permanente sobre el nivel de la serie.

4.2 Simulación: Caminata Aleatoria vs. Proceso Estacionario

Antes de presentar las pruebas formales, resulta útil visualizar la diferencia entre un proceso estacionario y uno con raíz unitaria. El siguiente ejemplo simula dos series de \(T = 300\) observaciones generadas con el mismo ruido blanco \(U_t \sim N(0,1)\): un \(AR(1)\) estacionario con \(\phi = 0.7\) y una caminata aleatoria (\(\phi = 1\)).

set.seed(2024)
T   <- 300
e   <- rnorm(T)

# AR(1) estacionario: phi = 0.7
x_ar <- numeric(T)
for (t in 2:T) x_ar[t] <- 0.7 * x_ar[t - 1] + e[t]

# Caminata aleatoria: phi = 1
x_rw <- numeric(T)
for (t in 2:T) x_rw[t] <- x_rw[t - 1] + e[t]

par(mfrow = c(1, 2))
plot(x_ar, type = "l", col = "darkblue",
     main = expression(paste("AR(1) estacionario (", phi, " = 0.7)")),
     ylab = expression(Y[t]), xlab = "t")
abline(h = mean(x_ar), col = "red", lty = 2)

plot(x_rw, type = "l", col = "darkred",
     main = "Caminata aleatoria (raíz unitaria)",
     ylab = expression(Y[t]), xlab = "t")
abline(h = 0, col = "red", lty = 2)
AR(1) estacionario vs. Caminata Aleatoria. Ambos procesos usan el mismo ruido blanco.

Figura 4.1: AR(1) estacionario vs. Caminata Aleatoria. Ambos procesos usan el mismo ruido blanco.

par(mfrow = c(1, 1))

La figura ilustra dos características clave. Primero, el \(AR(1)\) estacionario regresa continuamente a su media (línea roja punteada), mientras que la caminata aleatoria se aleja de ella de forma permanente. Segundo, los choques en el proceso estacionario tienen un efecto transitorio —que se disipa con el tiempo—, en tanto que los choques en la caminata aleatoria se acumulan y tienen un efecto permanente sobre el nivel de la serie.

En términos de sus momentos, la caminata aleatoria \(Y_t = Y_{t-1} + U_t\) con valor inicial \(Y_0 = 0\) satisface: \[\begin{eqnarray*} \mathbb{E}[Y_t] & = & Y_0 = 0 \\ \text{Var}(Y_t) & = & t \sigma^2 \rightarrow \infty \quad \text{cuando} \quad t \rightarrow \infty \end{eqnarray*}\]

La varianza crece con el tiempo, por lo que el proceso no es estacionario en varianza. Esta es la característica que las pruebas de raíces unitarias buscan detectar.

4.3 Pruebas de Raíces Unitarias

En esta sección plantearemos una serie de pruebas estadísticas para determinar cuándo una serie puede ser estacionaria bajo tres posibles casos:

  1. Estacionariedad alrededor de una tendencia determinística;

  2. Estacionariedad alrededor de una media, y

  3. Estacionariedad alrededor del cero.

A continuación, mostraremos como ejemplo la aplicación de las pruebas de raíces unitarias a la serie de Tipo de Cambio en forma logarítmica y de diferencias logarítmicas. Asumamos que determinamos el valor de los rezagos de la prueba con el criterio de \(p = int\{ 4 (T/100)^{1/4} \}\). En la práctica, existen otras formas de determinar el valor de \(p\), como el criterio de AIC, pero es decisión del investigador cuál usar.

library(ggplot2)
library(dplyr)
library(stats)
library(MASS)
library(strucchange)
library(zoo)
library(sandwich)
library(urca)
library(lmtest)
library(vars)

#
load("BD/Datos_Ad.RData")

#
## Conversion a series de tiempo:
Datos <- ts(Datos_Ad[7: 11], 
            start = c(2000, 1), 
            freq = 12)

LDatos <- log(Datos)

DLDatos <- diff(log(Datos, base = exp(1)), 
                lag = 1, 
                differences = 1)

DaLDatos <- diff(log(Datos, base = exp(1)), 
                 lag = 12, 
                 differences = 1)

Como primer paso, exploraremos las series en niveles (bajo una transformación logarítmica), como en la Figura 4.2, y en diferencias logarítmicas, como en la Figura 4.3. La Figura 4.4 muestra las diferencias anuales logarítmicas; finalmente, las Figuras 4.5 y 4.6 comparan las transformaciones entre sí. De dicha exploración, podemos concluir que las series parecen estacionarias en diferencias, pero no en niveles.

plot(LDatos, 
     plot.type = "m", nc = 2,
     col = c("darkgreen", "darkblue", "darkred", "orange", "purple"), 
     main = "Series en Logaritmos", 
     xlab = "Tiempo")
Series en Logaritmos

Figura 4.2: Series en Logaritmos

plot(DLDatos,
     plot.type = "m", nc = 2,
     col = c("darkgreen", "darkblue", "darkred", "orange", "purple"),
     main = "Series en Diferencias Logarítmicas",
     xlab = "Tiempo")
Series en Diferencias Logarítmicas

Figura 4.3: Series en Diferencias Logarítmicas

plot(DaLDatos,
     plot.type = "m", nc = 2,
     col = c("darkgreen", "darkblue", "darkred", "orange", "purple"),
     main = "Series en Diferencias Anuales Logarítmicas",
     xlab = "Tiempo")
Series en Diferencias Anuales Logarítmicas

Figura 4.4: Series en Diferencias Anuales Logarítmicas

plot(cbind(DLDatos, DaLDatos),
     plot.type = "m", nc = 2,
     col = c("darkgreen", "darkblue", "darkred", "orange", "purple"),
     main = "Comparación de Series en Diferencias Mensuales y Anuales",
     xlab = "Tiempo")
Comparación de Series en Diferencias Mensuales y Anuales (Logarítmicas)

Figura 4.5: Comparación de Series en Diferencias Mensuales y Anuales (Logarítmicas)

plot(cbind(LDatos, DLDatos),
     plot.type = "m", nc = 2,
     col = c("darkgreen", "darkblue", "darkred", "orange", "purple"),
     main = "Comparación de Series en Niveles y Diferencias",
     xlab = "Tiempo")
Comparación de Series en Niveles (Logaritmos) y en Diferencias Logarítmicas

Figura 4.6: Comparación de Series en Niveles (Logaritmos) y en Diferencias Logarítmicas

4.3.1 Dickey - Fuller (DF)

La prueba de Dickey y Fuller (Dickey and Fuller 1979, 1981) parte de una forma del proceso \(Y_t\) dada por: \[\begin{equation} Y_t = \sum_{j = 0}^m \delta_j t^j + X_t \tag{4.11} \end{equation}\]

Donde \(X_t\) es un \(ARMA(p, q)\) con media cero. Esta prueba asume que \(m = 1\), por lo que utilizaremos un modelo del tipo: \[\begin{equation} Y_t = \alpha + \delta t + \rho Y_{t-1} + U_t \tag{4.12} \end{equation}\]

Si, el \(AR(1)\) planteado tiene raíz unitaria, es decir, \(\rho = 1\), entonces tendríamos: \[\begin{eqnarray*} Y_t & = & \alpha + \delta t + Y_{t-1} + U_t \\ \Delta Y_t & = & \alpha + \delta t + U_t \end{eqnarray*}\]

De esta forma, para determinar si una serie tiene raíz unitaria basta con probar la hipótesis nula de que \(H_0 : \rho = 1\), junto con las diferentes combinaciones que impliquen restricciones respecto a \(\delta\) y \(\alpha\).

En resumen, la prueba DF consiste en asumir un modelo general dado por la ecuación (4.12) y probar tres especificaciones distintas que serían válidas bajo \(H_0 : \rho = 1\):

  1. Modelo A: con intercepto y tendencia: \[\begin{equation*} \Delta Y_t = \alpha + \delta t + \beta Y_{t-1} + U_t \end{equation*}\] Buscamos probar si \(H_0 : \beta = \rho - 1 = 0\) contra \(H_a : \beta < 0\), por lo que es una prueba de una cola. Otra forma de decirlo es: probamos si el proceso tiene raíz unitaria contra si el proceso es estacionario alrededor de una tendencia determinística.

  2. Modelo B: con intercepto: \[\begin{equation*} \Delta Y_t = \alpha + \beta Y_{t-1} + U_t \end{equation*}\] Buscamos probar si \(H_0 : \beta = \rho - 1 = 0\) contra \(H_a : \beta < 0\), por lo que es una prueba de una cola. Otra forma de decirlo es: probamos si el proceso tiene raíz unitaria contra si el proceso es estacionario alrededor de una constante.

  3. Modelo C: sin intercepto y tendencia: \[\begin{equation*} \Delta Y_t = \beta Y_{t-1} + U_t \end{equation*}\] Buscamos probar si \(H_0 : \beta = \rho - 1 = 0\) contra \(H_a : \beta < 0\), por lo que es una prueba de una cola. Otra forma de decirlo es: probamos si el proceso tiene raíz unitaria contra si el proceso es estacionario sin considerar una constante o una tendencia determinística, es decir, es un proceso puramente aleatorio.

Ejemplo. A continuación mostramos los resultados de aplicar las pruebas de raíces unitarias a la serie \(LTC_t\) (\(T = 282\) observaciones mensuales), considerando \(p = int \{ 4 (282/100)^{(1/4)} \} = 5\) para aquellas pruebas que requieren de rezagos: ADF, PP y KPSS. La convención es implementar las pruebas de raíces unitarias iniciando con el modelo más general hasta llegar al más restringido. Es decir, iniciar con el Modelo A, pasar al Modelo B y cerrar con el Modelo C.

Iniciaremos implementando una prueba de DF simple (o una ADF sin rezagos). En este caso obtenemos los resultados mostrados en la siguiente Tabla. En esta se reportan los resultados de la prueba para cada uno de los 3 modelos (A, B y C) y los valores críticos (CV, por sus siglas en inglés) de la prueba para los niveles 1%, 5% y 10%–estos valores son los reportados por MacKinnon (1996) para una prueba con distribución de 1 cola (izquierda). La convención es utilizar el nivel del 5% de significancia.

Los resultados se presentan en el Cuadro 4.1, donde se reportan los estadísticos \(\tau\) y los valores críticos de MacKinnon (1996) para los tres modelos, tanto en niveles (\(LTC_t\)) como en primeras diferencias (\(\Delta LTC_t\)). Rechazaremos la hipótesis nula cuando el estadístico \(t\) sea menor que el valor crítico. La serie se vuelve estacionaria en su primera diferencia.

## Dickey-Fuller — Niveles
df_nA <- ur.df(LDatos[, 2], type = "trend", lags = 0)
df_nB <- ur.df(LDatos[, 2], type = "drift", lags = 0)
df_nC <- ur.df(LDatos[, 2], type = "none",  lags = 0)

## Dickey-Fuller — Diferencias
df_dA <- ur.df(DLDatos[, 2], type = "trend", lags = 0)
df_dB <- ur.df(DLDatos[, 2], type = "drift", lags = 0)
df_dC <- ur.df(DLDatos[, 2], type = "none",  lags = 0)

urdf_fila <- function(lbl, obj) {
  data.frame(Modelo      = lbl,
             Estadistico = round(obj@teststat[1], 4),
             CV_1pct     = round(obj@cval[1, 1], 4),
             CV_5pct     = round(obj@cval[1, 2], 4),
             CV_10pct    = round(obj@cval[1, 3], 4))
}

# Con escape = FALSE el LaTeX de las celdas (p. ej. $\Delta LTC_t$) se
# renderiza como fórmula; el % de los encabezados requiere \% solo en PDF.
pct     <- if (knitr::is_latex_output()) "\\%" else "%"
cv_cols <- paste0(c("CV 1", "CV 5", "CV 10"), pct)

knitr::kable(
  rbind(urdf_fila("$LTC_t$ — A (tendencia)",        df_nA),
        urdf_fila("$LTC_t$ — B (intercepto)",       df_nB),
        urdf_fila("$LTC_t$ — C (sin det.)",         df_nC),
        urdf_fila("$\\Delta LTC_t$ — A (tendencia)",  df_dA),
        urdf_fila("$\\Delta LTC_t$ — B (intercepto)", df_dB),
        urdf_fila("$\\Delta LTC_t$ — C (sin det.)",   df_dC)),
  col.names = c("Modelo", "Estadístico $t$", cv_cols),
  caption   = "Resumen: prueba Dickey-Fuller (DF) para $LTC_t$.",
  align     = c("l", "r", "r", "r", "r"),
  booktabs  = TRUE,
  escape    = FALSE
)
Cuadro 4.1: Resumen: prueba Dickey-Fuller (DF) para \(LTC_t\).
Modelo Estadístico \(t\) CV 1% CV 5% CV 10%
\(LTC_t\) — A (tendencia) -2.0752 -3.98 -3.42 -3.13
\(LTC_t\) — B (intercepto) -1.1724 -3.44 -2.87 -2.57
\(LTC_t\) — C (sin det.) 1.1815 -2.58 -1.95 -1.62
\(\Delta LTC_t\) — A (tendencia) -12.6805 -3.98 -3.42 -3.13
\(\Delta LTC_t\) — B (intercepto) -12.6899 -3.44 -2.87 -2.57
\(\Delta LTC_t\) — C (sin det.) -12.6515 -2.58 -1.95 -1.62

4.3.2 Dickey - Fuller Aumentada (ADF)

La prueba ADF (Dickey and Fuller 1981) extiende la prueba DF al caso de un AR(p). A diferencia de un modelo AR(1) para el caso de una prueba DF como en la ecuación (4.12), en una prueba ADF se asume que el proceso es un AR(p) de la forma (por simplicidad, hemos omitido el término constante y el término de tendencia determinística): \[\begin{equation} Y_t = a_1 Y_{t-1} + a_2 Y_{t-2} + \ldots + a_p Y_{t-p} + U_t \tag{4.13} \end{equation}\]

Haciendo una sustitución de términos similar a las que hemos planteado en otras secciones, podemos reexpresar la ecuación (4.13) en su versión en diferencias siguiendo el proceso: \[\begin{equation} Y_t = \rho Y_{t-1} + \theta_1 \Delta Y_{t-1} + \theta_2 \Delta Y_{t-2} + \ldots + \theta_{p-1} \Delta Y_{t-p+1} + U_t \end{equation}\]

Donde \(\rho = \theta_0 = \sum_{j = 1}^p a_j\), \(\theta_i = - \sum_{j = i + 1}^p a_j\), \(i = 1, 2, \ldots, p-1\). Así, si el proceso AR(p) tiene raíz unitaria, entonces, veremos que: \[\begin{eqnarray*} 1 - a_1 - a_2 - \ldots - a_p & = & 0 \\ \rho & = & 1 \end{eqnarray*}\]

De donde podemos establecer que el modelo general de una prueba ADF será: \[\begin{equation} \Delta Y_t = \alpha + \beta t + (\rho - 1) Y_{t-1} + \theta_1 \Delta Y_{t-1} + \theta_2 \Delta Y_{t-2} + \ldots + \theta_k \Delta Y_{t-k} + U_t \end{equation}\]

Donde \(U_t\) es un proceso puramente aleatorio y \(k\) es elegido de tal manera que los residuales sean un proceso puramente aleatorio. En resumen, la prueba ADF consiste en asumir un modelo general dado por la ecuación (4.13), que incluya constante y tendencia, y probar tres especificaciones distintas que serían válidas bajo \(H_0 : \rho = 1\):

  1. Modelo A: con intercepto y tendencia: \[\begin{equation*} \Delta Y_t = \alpha + \delta t + \beta Y_{t-1} + \theta_1 \Delta Y_{t-1} + \theta_2 \Delta Y_{t-2} + \ldots + \theta_{p-1} \Delta Y_{t-p+1} + U_t \end{equation*}\] Buscamos probar si \(H_0 : \beta = \rho - 1 = 0\) contra \(H_a : \beta < 0\), por lo que es una prueba de una cola. Otra forma de decirlo es: probamos si el proceso tiene raíz unitaria contra si el proceso es estacionario alrededor de una tendencia determinística.

  2. Modelo B: con intercepto: \[\begin{equation*} \Delta Y_t = \alpha + \beta Y_{t-1} + \theta_1 \Delta Y_{t-1} + \theta_2 \Delta Y_{t-2} + \ldots + \theta_{p-1} \Delta Y_{t-p+1} + U_t \end{equation*}\] Buscamos probar si \(H_0 : \beta = \rho - 1 = 0\) contra \(H_a : \beta < 0\), por lo que es una prueba de una cola. Otra forma de decirlo es: probamos si el proceso tiene raíz unitaria contra si el proceso es estacionario alrededor de una constante.

  3. Modelo C: sin intercepto y tendencia: \[\begin{equation*} \Delta Y_t = \beta Y_{t-1} + \theta_1 \Delta Y_{t-1} + \theta_2 \Delta Y_{t-2} + \ldots + \theta_{p-1} \Delta Y_{t-p+1} + U_t \end{equation*}\] Buscamos probar si \(H_0 : \beta = \rho - 1 = 0\) contra \(H_a : \beta < 0\), por lo que es una prueba de una cola. Otra forma de decirlo es: probamos si el proceso tiene raíz unitaria contra si el proceso es estacionario sin considerar una constante o una tendencia determinística, es decir, es un proceso puramente aleatorio.

Ejemplo. El Cuadro 4.2 muestra los resultados de la prueba ADF con 5 rezagos (\(p = int \{ 4 (282/100)^{(1/4)} \} = 5\)) para \(LTC_t\) y \(\Delta LTC_t\). Al igual que en el caso anterior, rechazaremos la hipótesis nula cuando el estadístico \(t\) sea menor que el valor crítico. La serie se vuelve estacionaria en su primera diferencia.

## Augmented Dickey-Fuller — Niveles
adf_nA <- ur.df(LDatos[, 2], type = "trend", lags = 5)
adf_nB <- ur.df(LDatos[, 2], type = "drift", lags = 5)
adf_nC <- ur.df(LDatos[, 2], type = "none",  lags = 5)

## Augmented Dickey-Fuller — Diferencias
adf_dA <- ur.df(DLDatos[, 2], type = "trend", lags = 5)
adf_dB <- ur.df(DLDatos[, 2], type = "drift", lags = 5)
adf_dC <- ur.df(DLDatos[, 2], type = "none",  lags = 5)

knitr::kable(
  rbind(urdf_fila("$LTC_t$ — A (tendencia)",        adf_nA),
        urdf_fila("$LTC_t$ — B (intercepto)",       adf_nB),
        urdf_fila("$LTC_t$ — C (sin det.)",         adf_nC),
        urdf_fila("$\\Delta LTC_t$ — A (tendencia)",  adf_dA),
        urdf_fila("$\\Delta LTC_t$ — B (intercepto)", adf_dB),
        urdf_fila("$\\Delta LTC_t$ — C (sin det.)",   adf_dC)),
  col.names = c("Modelo", "Estadístico $t$", cv_cols),
  caption   = "Resumen: prueba Augmented Dickey-Fuller (ADF, 5 rezagos) para $LTC_t$.",
  align     = c("l", "r", "r", "r", "r"),
  booktabs  = TRUE,
  escape    = FALSE
)
Cuadro 4.2: Resumen: prueba Augmented Dickey-Fuller (ADF, 5 rezagos) para \(LTC_t\).
Modelo Estadístico \(t\) CV 1% CV 5% CV 10%
\(LTC_t\) — A (tendencia) -2.4972 -3.98 -3.42 -3.13
\(LTC_t\) — B (intercepto) -1.1265 -3.44 -2.87 -2.57
\(LTC_t\) — C (sin det.) 1.0273 -2.58 -1.95 -1.62
\(\Delta LTC_t\) — A (tendencia) -7.4125 -3.98 -3.42 -3.13
\(\Delta LTC_t\) — B (intercepto) -7.4034 -3.44 -2.87 -2.57
\(\Delta LTC_t\) — C (sin det.) -7.2639 -2.58 -1.95 -1.62

4.3.3 Phillips - Perron (PP)

La prueba de Phillips y Perron (Phillips and Perron 1988) también está basada en un AR(1) descrito por la ecuación: \[\begin{equation} Y_t = d \eta + \rho Y_{t-1} + U_t \tag{4.14} \end{equation}\]

Donde \(d\) incluye a cualquiera de los componentes determinísticos como constante y tendencia.

Al igual que los casos pasados, la hipótesis a probar es \(H_0 : \rho = 1\) contra la alternativa \(H_a : | \rho | < 1\), y asumimos una estructura de MA(\(l\)) que es un término de error de la forma: \[\begin{equation} U_t = \psi(L) \varepsilon_t = \psi_0 \varepsilon_t + \psi_1 \varepsilon_{t-1} + \ldots + \psi_l \varepsilon_{t-l} \end{equation}\]

Con \(\varepsilon_t\) que es un ruido blanco con media cero y varianza \(\sigma^2\). En este modelo se elige el valor \(l\) que hace que el componente sea un MA(\(l\)). Las tablas estadísticas de PP para esta prueba pueden utilizar una estadística \(Z_\tau\) o \(Z_\rho\), las cuales se pueden emplear indistintamente.

En resumen, la prueba PP consiste en asumir un modelo general dado por la ecuación (4.14) y probar dos especificaciones distintas que serían válidas bajo \(H_0 : \rho = 1\), ambas considerando un componente Drift:

  1. Modelo A: con intercepto y tendencia: \[\begin{equation*} Y_t = \alpha + \delta t + \rho Y_{t-1} + U_t \end{equation*}\] Buscamos probar si \(H_0 : \rho = 1\) contra \(H_a : | \rho | < 1\), por lo que es una prueba de una cola. Otra forma de decirlo es: probamos si el proceso tiene raíz unitaria contra si el proceso es estacionario alrededor de una tendencia determinística.

  2. Modelo B: con intercepto: \[\begin{equation*} Y_t = \alpha + \rho Y_{t-1} + U_t \end{equation*}\] Buscamos probar si \(H_0 : \rho = 1\) contra \(H_a : | \rho | < 1\), por lo que es una prueba de una cola. Otra forma de decirlo es: probamos si el proceso tiene raíz unitaria contra si el proceso es estacionario alrededor de una constante.

Ejemplo. El Cuadro 4.3 muestra los resultados de la prueba PP con 5 rezagos para \(LTC_t\) y \(\Delta LTC_t\). Rechazaremos la hipótesis nula cuando el estadístico \(Z_\tau\) sea menor que el valor crítico. La serie se vuelve estacionaria en su primera diferencia.

## Phillips-Perron — Niveles
pp_nA <- ur.pp(LDatos[, 2], type = "Z-tau", model = "trend",    use.lag = 5)
pp_nB <- ur.pp(LDatos[, 2], type = "Z-tau", model = "constant", use.lag = 5)

## Phillips-Perron — Diferencias
pp_dA <- ur.pp(DLDatos[, 2], type = "Z-tau", model = "trend",    use.lag = 5)
pp_dB <- ur.pp(DLDatos[, 2], type = "Z-tau", model = "constant", use.lag = 5)

urpp_fila <- function(lbl, obj) {
  cv <- as.numeric(obj@cval)
  data.frame(Modelo      = lbl,
             Estadistico = round(as.numeric(obj@teststat), 4),
             CV_1pct     = round(cv[1], 4),
             CV_5pct     = round(cv[2], 4),
             CV_10pct    = round(cv[3], 4))
}

knitr::kable(
  rbind(urpp_fila("$LTC_t$ — A (tendencia)",          pp_nA),
        urpp_fila("$LTC_t$ — B (intercepto)",         pp_nB),
        urpp_fila("$\\Delta LTC_t$ — A (tendencia)",  pp_dA),
        urpp_fila("$\\Delta LTC_t$ — B (intercepto)", pp_dB)),
  col.names = c("Modelo", "Estadístico $Z_\\tau$", cv_cols),
  caption   = "Resumen: prueba Phillips-Perron (PP, 5 rezagos) para $LTC_t$.",
  align     = c("l", "r", "r", "r", "r"),
  booktabs  = TRUE,
  escape    = FALSE
)
Cuadro 4.3: Resumen: prueba Phillips-Perron (PP, 5 rezagos) para \(LTC_t\).
Modelo Estadístico \(Z_\tau\) CV 1% CV 5% CV 10%
\(LTC_t\) — A (tendencia) -2.5039 -3.9941 -3.4272 -3.1366
\(LTC_t\) — B (intercepto) -1.2297 -3.4552 -2.8719 -2.5723
\(\Delta LTC_t\) — A (tendencia) -12.3906 -3.9942 -3.4273 -3.1366
\(\Delta LTC_t\) — B (intercepto) -12.4037 -3.4553 -2.8720 -2.5723

4.3.4 Kwiatkowski - Phillips - Schmidt - Shin (KPSS)

La prueba KPSS (Kwiatkowski et al. 1992) considera que el proceso es estacionario bajo la hipótesis nula, lo cual hace una diferencia respecto de las anteriores pruebas. El modelo considerado es: \[\begin{equation} Y_t = \delta t + \xi_t + U_t \end{equation}\]

Donde \(U_t\) es un proceso estacionario y \(\xi_t\) es una caminata aleatoria descrita por la forma: \(\xi_t = \xi_{t-1} + \varepsilon_t\), donde \(\varepsilon_t\) es un ruido blanco normalmente distribuido con media cero y varianza \(\sigma^2_\varepsilon\).

Así, bajo la hipótesis nula \(H_0 : \sigma^2_\varepsilon = 0\), \(\xi_t\) se vuelve una constante y el proceso es estacionario alrededor de una tendencia determinística (o de una constante, según la especificación). Dado el planteamiento de la prueba, los valores críticos al 95% son:

  1. Modelo A: 0.146, para un modelo con tendencia (estadístico \(\tau\)).

  2. Modelo B: 0.463, para un modelo con constante (estadístico \(\mu\)).

Ejemplo. Finalmente, el Cuadro 4.4 muestra los resultados de la prueba KPSS para \(LTC_t\) y \(\Delta LTC_t\). En este caso se acepta \(H_0\) (estacionariedad) cuando el estadístico es menor que el valor crítico. La serie se vuelve estacionaria en su primera diferencia.

## KPSS — Niveles
kpss_nA <- ur.kpss(LDatos[, 2], type = "tau")
kpss_nB <- ur.kpss(LDatos[, 2], type = "mu")

## KPSS — Diferencias
kpss_dA <- ur.kpss(DLDatos[, 2], type = "tau")
kpss_dB <- ur.kpss(DLDatos[, 2], type = "mu")

# @cval en ur.kpss: orden 10%, 5%, 2.5%, 1% (posiciones 1,2,3,4)
urkpss_fila <- function(lbl, obj) {
  cv <- as.numeric(obj@cval)
  data.frame(Modelo      = lbl,
             Estadistico = round(as.numeric(obj@teststat), 4),
             CV_1pct     = round(cv[4], 4),
             CV_5pct     = round(cv[2], 4),
             CV_10pct    = round(cv[1], 4))
}

knitr::kable(
  rbind(urkpss_fila("$LTC_t$ — A ($\\tau$, tendencia)",         kpss_nA),
        urkpss_fila("$LTC_t$ — B ($\\mu$, intercepto)",         kpss_nB),
        urkpss_fila("$\\Delta LTC_t$ — A ($\\tau$, tendencia)", kpss_dA),
        urkpss_fila("$\\Delta LTC_t$ — B ($\\mu$, intercepto)", kpss_dB)),
  col.names = c("Modelo", "Estadístico", cv_cols),
  caption   = "Resumen: prueba KPSS para $LTC_t$ (rechazar $H_0$ si estadístico $>$ CV).",
  align     = c("l", "r", "r", "r", "r"),
  booktabs  = TRUE,
  escape    = FALSE
)
Cuadro 4.4: Resumen: prueba KPSS para \(LTC_t\) (rechazar \(H_0\) si estadístico \(>\) CV).
Modelo Estadístico CV 1% CV 5% CV 10%
\(LTC_t\) — A (\(\tau\), tendencia) 0.3433 0.216 0.146 0.119
\(LTC_t\) — B (\(\mu\), intercepto) 4.4290 0.739 0.463 0.347
\(\Delta LTC_t\) — A (\(\tau\), tendencia) 0.0701 0.216 0.146 0.119
\(\Delta LTC_t\) — B (\(\mu\), intercepto) 0.0801 0.739 0.463 0.347

4.3.5 Zivot - Andrews (ZA)

Una limitación de las pruebas DF, ADF, PP y KPSS es que asumen que los parámetros del proceso son constantes a lo largo de toda la muestra. Sin embargo, muchas series económicas presentan quiebres estructurales —cambios abruptos en la media o en la tendencia— asociados a eventos como crisis financieras, cambios de política económica o pandemias. En presencia de un quiebre estructural no considerado, las pruebas anteriores tienen un sesgo hacia no rechazar la hipótesis nula de raíz unitaria, incluso cuando la serie es estacionaria.

La prueba de Zivot and Andrews (1992) extiende la prueba ADF para el caso en que existe un quiebre estructural en una fecha desconocida \(\tau^*\). La prueba evalúa tres modelos:

  • Modelo A: quiebre en el nivel (intercepto).
  • Modelo B: quiebre en la tendencia.
  • Modelo C: quiebre en el nivel y en la tendencia (modelo más general).

En cada caso, la hipótesis nula es que la serie tiene una raíz unitaria sin quiebre estructural, contra la alternativa de que es estacionaria con un quiebre en la fecha \(\tau^*\). La fecha del quiebre se determina endógenamente como aquella que minimiza el estadístico \(t\) de la prueba.

El estadístico de la prueba sigue una distribución no estándar cuyos valores críticos al 1%, 5% y 10% son, respectivamente, \(-5.34\), \(-4.80\) y \(-4.58\) para el Modelo C.

Ejemplo. La siguiente Tabla y el código en R muestran la aplicación de la prueba ZA a la serie \(LTC_t\). Rechazamos la hipótesis nula si el estadístico es menor (en valor absoluto más grande) que el valor crítico correspondiente.

## Zivot - Andrews: los tres modelos

za_A <- ur.za(LDatos[, 2], model = "intercept", lag = 5)
za_B <- ur.za(LDatos[, 2], model = "trend",     lag = 5)
za_C <- ur.za(LDatos[, 2], model = "both",      lag = 5)

# Convierte índice de quiebre a cadena "AAAA-MM"
bp_fecha <- function(x, bp) {
  t  <- time(x)
  yr <- floor(t[bp])
  mo <- round((t[bp] - yr) * 12) + 1
  paste0(yr, "-", sprintf("%02d", mo))
}

za_df <- data.frame(
  Modelo      = c("A (intercepto)", "B (tendencia)", "C (ambos)"),
  Estadistico = round(c(za_A@teststat, za_B@teststat, za_C@teststat), 4),
  CV_1pct     = c(za_A@cval[1], za_B@cval[1], za_C@cval[1]),
  CV_5pct     = c(za_A@cval[2], za_B@cval[2], za_C@cval[2]),
  CV_10pct    = c(za_A@cval[3], za_B@cval[3], za_C@cval[3]),
  Quiebre     = c(bp_fecha(LDatos[, 2], za_A@bpoint),
                  bp_fecha(LDatos[, 2], za_B@bpoint),
                  bp_fecha(LDatos[, 2], za_C@bpoint))
)

knitr::kable(
  za_df,
  col.names = c("Modelo", "Estadístico", cv_cols, "Quiebre est."),
  caption   = "Resumen de resultados de la prueba Zivot-Andrews (ZA) para $LTC_t$.",
  align     = c("l", "r", "r", "r", "r", "r"),
  booktabs  = TRUE,
  escape    = FALSE
)
Cuadro 4.5: Resumen de resultados de la prueba Zivot-Andrews (ZA) para \(LTC_t\).
Modelo Estadístico CV 1% CV 5% CV 10% Quiebre est.
A (intercepto) -4.1412 -5.34 -4.80 -4.58 2014-11
B (tendencia) -3.0552 -4.93 -4.42 -4.11 2022-02
C (ambos) -3.9598 -5.57 -5.08 -4.82 2015-05

4.4 Resumen y Guía de Decisión

La siguiente tabla ofrece una comparación de las cuatro pruebas principales de raíces unitarias estudiadas en este capítulo:

Prueba \(H_0\) \(H_a\) Distribución Notas
DF Raíz unitaria Proceso estacionario No estándar Solo válida si errores son ruido blanco
ADF Raíz unitaria Proceso estacionario No estándar Corrige autocorrelación con rezagos
PP Raíz unitaria Proceso estacionario No estándar Corrige autocorrelación no paramétricamente
KPSS Estacionario Raíz unitaria KPSS \(H_0\) inversa; útil como complemento
ZA Raíz unitaria Estacionario con quiebre No estándar Endogeniza la fecha del quiebre estructural

La convención en la práctica econométrica es aplicar las pruebas siguiendo el proceso de decisión que se describe a continuación:

  1. Inspección visual: graficar la serie en niveles y en diferencias para tener una primera impresión sobre su comportamiento.

  2. Aplicar ADF, PP y KPSS en niveles: si ADF y PP rechazan \(H_0\) (raíz unitaria) y KPSS no rechaza su \(H_0\) (estacionariedad), la serie es estacionaria en niveles, \(I(0)\).

  3. Si no se rechaza la raíz unitaria en niveles: tomar primeras diferencias y repetir las pruebas. Si las pruebas sobre las diferencias indican estacionariedad, la serie es integrada de orden uno, \(I(1)\).

  4. Ante resultados contradictorios o series con posibles quiebres estructurales: aplicar la prueba de Zivot-Andrews para descartar que el resultado de no rechazar la raíz unitaria se deba a la presencia de un quiebre no modelado.

  5. En todos los casos: reportar los tres modelos (A, B y C) y los valores críticos al 1%, 5% y 10% para transparencia y replicabilidad.