← Catálogo · Capítulo 6

T06_mST_Script_SARIMA.R

Ver crudo
# ══════════════════════════════════════════════════
# T06 · Series Temporales — Estacionalidad, SARIMA y ajuste estacional
# Abre primero mSeriesTemporales.Rproj en RStudio
# ══════════════════════════════════════════════════

library(tidyverse)
library(forecast)
library(seasonal)

pausa <- function(msg = "\n  [Pulsa ENTER para continuar...]") {
  if (interactive()) { cat(msg); invisible(readline()) }
}

set.seed(2026)

# ── 1. UN PROCESO ESTACIONAL PURO SMA(1)_12 ───────
# y_t = eps_t + Theta * eps_{t-12}: solo hay dependencia en el retardo 12.
Theta <- 0.7
n <- 300
eps <- rnorm(n + 12)
y_sma12 <- eps[13:(n + 12)] + Theta * eps[1:n]
op <- par(mfrow = c(1, 2))
acf(y_sma12,  lag.max = 36, main = "FAC de un SMA(1) puro, s=12")
pacf(y_sma12, lag.max = 36, main = "FACP de un SMA(1) puro, s=12")
par(op)
cat("La FAC solo destaca en el retardo 12: firma de un proceso estacional puro.\n")
pausa()

# ── 2. EL MODELO AIRLINE (Box-Jenkins clasico) ────
# Datos de ejemplo del propio R: pasajeros de lineas aereas 1949-1960.
data(AirPassengers)
lap <- log(AirPassengers)
m_air <- Arima(lap, order = c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))
print(m_air)
plot(forecast(m_air, h = 24), main = "Modelo airline: AirPassengers")
cat("El modelo con el que Box y Jenkins (1976) fijaron el estandar SARIMA.\n")
pausa()

# ── 3. auto.arima() CON ESTACIONALIDAD ────────────
am <- auto.arima(lap, seasonal = TRUE)
cat("auto.arima() sobre AirPassengers:\n")
print(am)
pausa()

# ── 4. AJUSTE ESTACIONAL CON X-13ARIMA-SEATS ──────
m_x13 <- seas(AirPassengers)
summary(m_x13)
plot(m_x13)
cat("QS test (estacionalidad residual):\n")
print(qs(m_x13))

# === FIN Script T06 — Estacionalidad, SARIMA y ajuste estacional ===