# ══════════════════════════════════════════════════ # T02 · Series Temporales — Procesos estocásticos # Abre primero mSeriesTemporales.Rproj en RStudio # ══════════════════════════════════════════════════ library(tidyverse) library(forecast) pausa <- function(msg = "\n [Pulsa ENTER para continuar...]") { if (interactive()) { cat(msg); invisible(readline()) } } set.seed(2026) # ── 1. PROCESO ESTOCÁSTICO Y REALIZACIÓN ────────── # Un mismo proceso genera infinitas trayectorias (realizaciones). n <- 100; phi <- 0.7 plot(NA, xlim = c(1, n), ylim = c(-6, 6), xlab = "t", ylab = "y", main = "Cuatro realizaciones de un AR(1), phi = 0.7") for (k in 1:4) { e <- rnorm(n); y <- numeric(n) for (i in 2:n) y[i] <- phi * y[i - 1] + e[i] lines(y, col = k, lty = k) } cat("La serie observada es solo UNA de las infinitas realizaciones.\n") pausa() # ── 2. RUIDO BLANCO ─────────────────────────────── # Media 0, varianza constante, autocorrelaciones nulas. wn <- rnorm(250) cat(sprintf("Ruido blanco -> media=%.3f var=%.3f\n", mean(wn), var(wn))) op <- par(mfrow = c(1, 2)) plot(wn, type = "l", col = "grey40", main = "Ruido blanco", ylab = "eps") acf(wn, main = "FAC del ruido blanco") par(op) pausa() # ── 3. CONTRASTE DE LJUNG-BOX ───────────────────── lb <- Box.test(wn, lag = 12, type = "Ljung-Box") cat(sprintf("Ljung-Box(12): Q=%.3f p-valor=%.3f\n", lb$statistic, lb$p.value)) cat("p-valor alto => no se rechaza H0 (incorrelación): es ruido blanco.\n") pausa() # ── 4. FAC / FACP DE UN AR(1) ───────────────────── # A diferencia del ruido blanco, un AR(1) muestra estructura. e <- rnorm(300); ar1 <- numeric(300) for (i in 2:300) ar1[i] <- 0.8 * ar1[i - 1] + e[i] op <- par(mfrow = c(1, 2)) acf(ar1, main = "FAC AR(1)") # decrecimiento geométrico pacf(ar1, main = "FACP AR(1)") # un único palo significativo par(op) cat("AR(1): FAC decrece geométricamente; FACP se corta en el retardo 1.\n") pausa() # ── 5. OPERADOR Y POLINOMIO DE RETARDOS ─────────── # phi(L) = 1 - 0.8 L. Raíz: 1/0.8 = 1.25 (fuera del círculo unidad => estacionario). raiz <- polyroot(c(1, -0.8)) cat(sprintf("Raíz de 1 - 0.8L: %.3f (|raíz|=%.3f > 1 => estacionario)\n", Re(raiz), Mod(raiz))) # === FIN Script T02 — Procesos estocásticos ===