← Catálogo
· Capítulo 2
T02_mST_Script_ProcesosEstocasticos.R
# ══════════════════════════════════════════════════
# 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 ===