Módulo 3·Variables indicadoras y funciones trigonométricas

Modelos de Estacionalidad Determinística

Modelado global del patrón estacional con s−1 variables dummy o con series de Fourier (armónicos). Interpretación de efectos estacionales y periodograma.

Variables indicadoras (dummies)Interpretación de δᵢFunciones trigonométricas (armónicos)Periodogramaseasonaldummy() y Mytrigon()

¿Por qué modelar la estacionalidad?

Piensa en el consumo de energía eléctrica en Colombia. Es más alto en diciembre (iluminación navideña, fin de año) y más bajo en septiembre. Eso es estacionalidad: un patrón que se repite cada año. Si tienes un modelo de tendencia pero ignoras la estacionalidad, los residuos mostrarán el mismo ciclo cada año —estructura visible que el modelo no está aprovechando.

En este módulo aprenderás dos formas de modelar ese patrón: con variables indicadoras (dummies) —una por cada período del año— y con funciones trigonométricas (armónicos de Fourier). Son equivalentes cuando se usan todos los armónicos, pero las funciones trigonométricas permiten una representación más parsimoniosa cuando el patrón es suave.

3.1 Estacionalidad con variables indicadoras (dummies)

Cuando el patrón estacional es regular y se repite idénticamente de año en año, lo modelamos con un conjunto de variables binarias —una por cada período del año, excepto uno que sirve de referencia. Para una serie con periodo ss, se definen s−1s - 1 variables indicadoras:

Ii,t={1si en t se observa la estacioˊn i0en otro caso(i=1,…,s−1)I_{i,t} = \begin{cases} 1 & \text{si en } t \text{ se observa la estación } i \\ 0 & \text{en otro caso} \end{cases} \quad (i = 1, \ldots, s-1)

La estación ss actúa como categoría de referencia. La componente estacional queda:

St=∑i=1s−1δiIi,tS_t = \sum_{i=1}^{s-1} \delta_i I_{i,t}

El modelo estacional completo (con nivel constante, sin tendencia) es:

Yt=μ+∑i=1s−1δi Ii,t+Et,Et∼iidN(0,σ2)Y_t = \mu + \sum_{i=1}^{s-1} \delta_i \, I_{i,t} + E_t, \quad E_t \overset{\text{iid}}{\sim} N(0, \sigma^2)

donde μ=β0\mu = \beta_0 es el nivel medio de la estación de referencia, y cada δi\delta_i mide la desviación del nivel medio de la estación ii respecto a esa referencia. Al incorporar tendencia polinomial en el Módulo 4, μ\mu queda absorbido en el intercepto β0\beta_0.

¿Por qué s − 1 indicadoras y no s?

Incluir las ss indicadoras genera colinealidad perfecta con el intercepto (multicolinealidad exacta), pues ∑i=1sIi,t=1\sum_{i=1}^s I_{i,t} = 1 para todo tt. Se omite una (la categoría de referencia) para que el sistema sea identificable. Todas las comparaciones se expresan entonces relativamente a esa categoría omitida.

La elección de la categoría de referencia no cambia el ajuste del modelo —el R², AIC y los residuos son idénticos— pero sí cambia la interpretación de los coeficientes. En R, seasonaldummy(yt) omite por defecto la última estación (diciembre para datos mensuales); en nuestros ejemplos usamos relevel() para fijar enero como referencia, que es la convención más intuitiva en un ciclo anual (la primera temporada como punto de comparación).

Interpretación de los coeficientes δ^i\hat{\delta}_i

Modelo aditivo

δi=E[Yt∣estacioˊn i]−E[Yt∣estacioˊn ref]\delta_i = E[Y_t \mid \text{estación } i] - E[Y_t \mid \text{estación ref}]

Diferencia absoluta en el nivel medio entre la estación i y la estación de referencia (enero). Si δ^Jul=14.2\hat{\delta}_{\text{Jul}} = 14.2 con datos de temperatura, julio es en promedio 14.2°F más cálido que enero.

Modelo multiplicativo (log)

exp⁡(δi)=E[Yt∣estacioˊn i]E[Yt∣estacioˊn ref]\exp(\delta_i) = \frac{E[Y_t \mid \text{estación } i]}{E[Y_t \mid \text{estación ref}]}

Razón entre el nivel medio de la estación i y el de referencia. Si exp⁡(δ^i)=1.35\exp(\hat{\delta}_i) = 1.35 → la estación i tiene un nivel 35% mayor. Si exp⁡(δ^i)=0.88\exp(\hat{\delta}_i) = 0.88 → 12% menor.

3.2 Antes de modelar: tres gráficos diagnósticos

Antes de elegir el tipo de modelo estacional —aditivo o multiplicativo, dummies o Fourier— hay tres gráficos que deberías producir siempre. Juntos responden dos preguntas críticas: ¿la amplitud estacional es constante o crece con el nivel de la serie? ¿El patrón se repite fielmente año tras año o evoluciona?

Gráfico 1: Season plot

Cada año como línea independiente. Si las líneas recientes están muy por encima de las antiguas → amplitud creciente → modelo multiplicativo (usar log).

Gráfico 2: Subseries plot

Cada período en su propio panel vertical. La línea azul = promedio histórico del período. Si la secuencia de años sube dentro de cada panel → nivel del período crece → multiplicativo.

Gráfico 3: Boxplot por período

La altura de cada caja = dispersión a lo largo de los años. Cajas más grandes en los meses pico que en los valles → varianza heterogénea → multiplicativo.

Regla de decisión rápida

Si los tres gráficos coinciden en mostrar amplitud creciente → modelo multiplicativo: aplicar log() a la serie antes de ajustar. Si la amplitud es constante → modelo aditivo: trabajar con la serie original. Si los gráficos muestran señales mixtas, el AIC comparando ambos modelos es el árbitro final.

▶ AirPassengers — Season plot · Subseries · Boxplot

Los tres gráficos para AirPassengers confirman multiplicativo: season plot con líneas separándose, subseries con pendientes positivas en todos los meses, boxplot con cajas más grandes en los meses pico.

3.3 Ejemplo A — nottem: temperatura mensual de Nottingham

El dataset nottem (base R) registra la temperatura media mensual en grados Fahrenheit en Nottingham Castle, de enero de 1920 a diciembre de 1939 (n=240n = 240 observaciones, s=12s = 12). No hay tendencia apreciable —el nivel medio es estable a lo largo de 20 años— por lo que el modelo es solo estacional con intercepto:

Yt=μ+∑i=111δiIi,t+EtY_t = \mu + \sum_{i=1}^{11} \delta_i I_{i,t} + E_t

¿Qué vas a ver al ejecutar el código?

  1. El summary(mod_est) con los 11 coeficientes δ^i\hat{\delta}_i para los meses de febrero a diciembre (enero = referencia). Todos deberían ser significativos.
  2. Un gráfico de barras con los efectos estacionales: barras rojas (temperatura sobre enero) vs azules (bajo enero).
  3. La serie observada vs la curva ajustada: debería estar muy cerca dado que la estacionalidad explica >97% de la variación.
▶ nottem — modelo de estacionalidad con dummies y ggplot2

Con 11 indicadoras el modelo captura >97% de la variación de nottem. El intercepto es la temperatura media de enero (~39°F). Julio y agosto tendrán los δ̂ más positivos (~+14°F respecto a enero); diciembre y noviembre los más negativos (~−11°F). La línea ajustada debería seguir casi perfectamente la serie observada.

Cómo leer el summary() en un modelo estacional

El intercepto (Intercept) es el nivel medio de enero (la categoría de referencia). Cada coeficiente mesFeb, mesMar, …, mesDic es la diferencia media de temperatura de ese mes respecto a enero. Todos deberían aparecer con p-valor ≈ 0 (tres asteriscos) porque el patrón estacional de nottem es muy claro.

Si un coeficiente no es significativo (p-valor grande), significa que ese mes no difiere estadísticamente del mes de referencia —podría colapsarse con él para reducir el número de parámetros.

▶ interpdeltas() — efectos estacionales con IC 95%

exp_delta: si el modelo estuviera en escala log, este sería el factor por el que se multiplica el nivel en la estación i respecto a la de referencia. En el modelo aditivo (nottem), delta_hat es directamente el efecto en °F.

3.3 Estacionalidad con funciones trigonométricas (armónicos)

Las variables dummy tienen una limitación: modelan cada estación de forma independiente, sin asumir suavidad entre períodos adyacentes. Enero puede ser muy diferente de febrero sin que el modelo "sepa" que son meses consecutivos. Cuando el patrón estacional es suave —como una ola que sube en verano y baja en invierno— las funciones trigonométricas (series de Fourier) ofrecen una representación más parsimoniosa:

St=∑j=1k[αjsin⁡(2πFjt)+γjcos⁡(2πFjt)]S_t = \sum_{j=1}^{k} \left[\alpha_j \sin(2\pi F_j t) + \gamma_j \cos(2\pi F_j t)\right]

donde Fj=j/sF_j = j/s son las frecuencias armónicas y k≤⌊s/2⌋k \leq \lfloor s/2 \rfloor es el número de armónicos a incluir. Cada armónico captura un ciclo a una frecuencia específica. Con k=1k = 1 se tiene la onda fundamental (período = s); con k=2k = 2 se añade el primer armónico (período = s/2), y así sucesivamente.

¿Cuántos armónicos usar? — Selección por periodograma

El periodograma descompone la potencia de la serie en cada frecuencia. Los armónicos con picos altos en el periodograma son los que más contribuyen al patrón estacional.

Procedimiento práctico:

  1. Diferencia la serie para remover la tendencia.
  2. Calcula el periodograma con spec.pgram().
  3. Identifica los picos más altos: esas son las frecuencias a incluir.
  4. Empieza con los kk armónicos principales y usa AIC/BIC para confirmar si más armónicos mejoran el ajuste.

El periodograma

El periodograma estima la densidad espectral de potencia en cada frecuencia discreta ωj=j/n\omega_j = j/n. Para la serie Y1,…,YnY_1, \ldots, Y_n, el valor en la frecuencia ωj\omega_j es:

I(ωj)=1n[(∑t=1nYtcos⁡2πωjt) ⁣2+(∑t=1nYtsin⁡2πωjt) ⁣2]I(\omega_j) = \frac{1}{n}\left[\left(\sum_{t=1}^n Y_t \cos 2\pi\omega_j t\right)^{\!2} + \left(\sum_{t=1}^n Y_t \sin 2\pi\omega_j t\right)^{\!2}\right]

Un pico en ωj=Fj\omega_j = F_j indica que la serie contiene un ciclo de período 1/Fj1/F_j observaciones. En una serie mensual con ciclo anual, el pico dominante aparece en ω=1/12≈0.083\omega = 1/12 \approx 0.083. Frecuencias 2/12,3/12,…2/12, 3/12, \ldots son los armónicos superiores del ciclo anual.

▶ Periodograma — identificar frecuencias dominantes (nottem)

El pico más alto debería estar en F ≈ 0.083 (período de 12 meses = ciclo anual). El segundo pico estará en F ≈ 0.167 (período de 6 meses = segundo armónico). Esas son las frecuencias que incluirás en Mytrigon().

3.4 Ejemplo B — USAccDeaths: dummies vs armónicos de Fourier

El dataset USAccDeaths (base R) contiene el número mensual de muertes accidentales en EE.UU. de 1973 a 1978 (n=72n = 72, s=12s = 12). La serie tiene un pico claro en verano (julio) y un mínimo en invierno. Compararemos dos enfoques para modelar ese patrón: dummies (11 parámetros) y armónicos de Fourier (con solo 3 armónicos = 6 parámetros).

¿Qué vas a ver al ejecutar el código?

  • Los AIC de los dos modelos: trigonométrico (k=3) y dummies (s-1=11). Si son similares, el modelo trigonométrico es mejor por parsimonia.
  • Un gráfico con tres curvas: observado, ajuste trigonométrico y ajuste con dummies. Deberían ser casi indistinguibles para el patrón suave de USAccDeaths.
▶ USAccDeaths — dummies vs armónicos de Fourier (parsimonia)

Si el AIC del modelo trigonométrico (k=3) es similar o menor al de dummies, el enfoque de Fourier es mejor: mismo ajuste con menos parámetros. Eso es parsimonia en acción.

Cómo interpretar la tabla de armónicos

Al probar k = 1, 2, 3, 4 armónicos, busca el punto donde el AIC deja de bajar significativamente. Para USAccDeaths, es típico que:

  • k=1: captura la onda principal (verano alto, invierno bajo)
  • k=2: añade detalle al inicio y fin del año
  • k=3: ajuste muy cercano al de dummies con 6 parámetros vs 11
  • k=4: el AIC casi no cambia → k=3 es suficiente

3.5 Comparación: dummies vs trigonométricas

Ambas aproximaciones son equivalentes cuando k=⌊s/2⌋k = \lfloor s/2 \rfloor (el máximo de armónicos), pero las trigonométricas con pocos armónicos ofrecen mayor parsimonia. La elección depende de la naturaleza del patrón estacional:

| Aspecto | Indicadoras (dummies) | Trigonométricas | |---|---|---| | Número de parámetros | s−1s - 1 | 2k2k (con k≤⌊s/2⌋k \leq \lfloor s/2 \rfloor) | | Interpretación directa | ✓ Efecto de cada estación en sus unidades | ✗ No directa (amplitud y fase) | | Patrón suave | ✗ Discontinuo por estación | ✓ Continuo y diferenciable | | Cuándo elegir | Patrón irregular, efecto estacional sin suavidad | Patrón en forma de ola, variaciones suaves |

Error frecuente: usar dummies con series de alta frecuencia

Para datos semanales (s=52s = 52) o diarios (s=365s = 365), el enfoque de dummies requiere 51 o 364 parámetros solo para la estacionalidad —computacionalmente costoso y estadísticamente ineficiente. En esos casos, las funciones trigonométricas con pocos armónicos son prácticamente la única opción razonable.

Periodograma — Serie mensual (periodo s = 12)

00.10.20.30.40.5FrecuenciaPotenciaF=1/12F=2/12F=3/12

Figura 3.1 — Periodograma con picos en F = 1/12 (ciclo anual, primer armónico), F = 2/12 (semi-anual, segundo armónico) y F = 3/12 (cuatrimestral, tercer armónico). Incluir los tres primeros armónicos en Mytrigon() captura la mayor parte de la potencia estacional.

Conexión con el Módulo 4

Hasta aquí has modelado tendencia sola (Módulo 2) y estacionalidad sola (este módulo). En el Módulo 4 los combinarás en un único modelo que incluye ambas componentes simultáneamente: Yt=Tt+St+EtY_t = T_t + S_t + E_t (o la versión multiplicativa en escala log). También aprenderás a comparar múltiples especificaciones con AIC/BIC y a aplicar la corrección de sesgo para pronósticos en escala original.