logo

\[ \]


Introducción

Las series de tiempo permiten analizar fenómenos que evolucionan a lo largo del tiempo. En campos como los negocios, la economía o la meteorología, los datos se registran de forma secuencial para describir su comportamiento pasado, reconocer patrones y anticipar el futuro.

A diferencia de los datos de corte transversal, que observan distintos individuos en un solo momento, las series de tiempo reflejan la evolución de una misma variable a través del tiempo. Esta característica permite estudiar aspectos que no pueden observarse en una sola medición, como las tendencias, los efectos estacionales o los impactos de eventos específicos.

El análisis de series de tiempo busca responder preguntas como:

  • ¿Cómo ha cambiado el valor de una variable a lo largo del tiempo?

  • ¿Existen patrones o comportamientos que se repiten regularmente?

  • ¿Qué valores se pueden anticipar para los próximos periodos?

En la práctica empresarial, estos análisis se utilizan para proyectar ventas, planificar inventarios, estimar presupuestos y evaluar estrategias.

Más allá de la predicción, el valor del análisis de series de tiempo radica también en su capacidad para identificar patrones estructurales: reconocer si una variable sigue una tendencia creciente o decreciente, si presenta comportamientos estacionales (como picos de consumo en ciertas fechas), o si responde a ciclos más amplios. Comprender estas dinámicas permite tomar decisiones mejor fundamentadas y diseñar estrategias adaptadas al contexto temporal en que ocurren los fenómenos.

Con el avance de la computación y los métodos estadísticos, hoy en día existen múltiples enfoques para el análisis de series de tiempo: desde métodos simples de suavizamiento y promedios móviles, hasta modelos más sofisticados como los ARIMA, los modelos estacionales, o los modelos con componentes no estacionarios y tendencias estocásticas.


¿Qué es una serie de tiempo?

Es una secuencia de observaciones de una misma variable registradas en intervalos sucesivos de tiempo, generalmente equidistantes. En notación matemática, se representa como: \[ \{Y_t\}, \quad t=1,2,\dots,T \]

donde \(Y_t\) indica el valor de la variable en el instante \(t\).

Cada observación depende de las condiciones que existían en el momento en que fue medida, por lo que el orden temporal es fundamental: si se altera, se pierde el significado del análisis.

Las series de tiempo se pueden registrar en diferentes frecuencias de tiempo según el fenómeno que se estudie:

Frecuencia Ejemplo
Diaria Precio de cierre de una acción, temperatura diaria
Semanal Número de visitantes a una tienda o sitio web
Mensual Ventas de una empresa, consumo de energía
Trimestral Producto Interno Bruto (PIB), beneficios corporativos
Anual Exportaciones totales, población o inflación

La frecuencia determina tanto el nivel de detalle como la extensión del análisis. Series de alta frecuencia captan variaciones más finas, mientras que las de baja frecuencia son útiles para observar tendencias de largo plazo.

Comparación con otros tipos de datos:

Es importante distinguir entre los principales tipos de estructuras de datos:

  • Datos de corte transversal: se obtienen observando diferentes unidades (personas, empresas o regiones) en un mismo momento. Ejemplo: ingresos de 200 empleados en 2025.

  • Datos de serie de tiempo: se observan los valores de una variable para una sola unidad en varios momentos. Ejemplo: ventas mensuales de una tienda durante cinco años.

  • Datos de panel: combinan ambos enfoques, observando múltiples unidades a lo largo del tiempo. Ejemplo: ventas mensuales de 50 tiendas en distintos municipios.


Componentes

Las series de tiempo rara vez siguen un comportamiento puramente aleatorio. Por lo general, reflejan patrones estructurados que se repiten o evolucionan con el tiempo. Estos patrones pueden descomponerse en varios componentes fundamentales que ayudan a entender y modelar el comportamiento de la serie:

1. Tendencia (T): representa la dirección general del cambio de la serie a lo largo del tiempo. Puede ser creciente, decreciente o estable, y refleja el efecto de factores de largo plazo. Ejemplo: un aumento sostenido en las ventas anuales de una empresa debido a la expansión de sus mercados.

2. Estacionalidad (S): se refiere a las fluctuaciones que se repiten de forma regular dentro de un periodo determinado. Estas variaciones suelen estar relacionadas con el calendario o con patrones de comportamiento humano. Ejemplo: mayor demanda de productos en diciembre o durante las vacaciones de verano.

3. Ciclo (C): describe oscilaciones que no se repiten con una periodicidad fija, pero que reflejan fases de expansión y contracción de más largo plazo. A diferencia de la estacionalidad, los ciclos suelen extenderse por varios años y están influenciados por factores económicos o estructurales. Ejemplo: las fluctuaciones asociadas a los ciclos económicos o a periodos de recesión y recuperación en el mercado.

4. Componente aleatorio (E): también llamado ruido, agrupa las variaciones impredecibles que no pueden explicarse por los otros componentes. Incluye el efecto de acontecimientos inesperados o factores no observados. Ejemplo: una interrupción de la producción por un desastre natural o una pandemia.

5. Autocorrelación (A): mide el grado de relación entre los valores de la serie en distintos momentos del tiempo. Cuando existe autocorrelación, los valores pasados influyen en los presentes, lo que genera dependencia temporal entre las observaciones. Ejemplo: si las ventas altas de un mes tienden a ser seguidas por ventas altas el mes siguiente, la serie presenta una autocorrelación positiva.

Representación general

En términos simples, una serie de tiempo puede ser estructuda como:

\[Y_t = T_t +S_t + E_t \]

o, si es multiplicativa:

\[Y_t = T_t \times S_t \times E_t \]

donde, además, los valores de \(Y_t\) suelen estar autocorrelacionados entre sí. Esto significa que la estructura temporal no solo depende de los componentes sistemáticos, sino también de cómo los valores pasados influyen en los futuros.


Series de tiempo en R

R ofrece un conjunto de funciones diseñadas específicamente para manejar datos ordenados en el tiempo. La más básica es la clase ts (time series), que almacena la secuencia de valores junto con su frecuencia temporal y el periodo inicial.

Estructura de un objeto ts

Incluye tres elementos principales:

  1. Los valores numéricos de la serie.

  2. La frecuencia (número de observaciones por unidad de tiempo).

  3. El inicio de la serie (año y periodo).

Su estructura en R se define:

ts(data, start = , end=, frequency = )

Donde:

  • data: es el vector numérico de observaciones.

  • start: indica el año y el subperiodo de inicio (por ejemplo, c(2020, 1)).

  • end: indica el año y el subperiodo final.

  • frequency: define cuántas observaciones hay por unidad de tiempo:

    • 12 → mensual

    • 4 → trimestral

    • 1 → anual

    • 365 → diaria

Ejemplo básico:

# Serie trimestral (4 observaciones por año)
ventas <- c(120, 135, 150, 160, 130, 135, 150, 180)
serie_ventas <- ts(ventas, start = c(2023, 1), frequency = 4)

serie_ventas
##      Qtr1 Qtr2 Qtr3 Qtr4
## 2023  120  135  150  160
## 2024  130  135  150  180

Ejemplo 1

Para este primer ejemplo, trabajaremos con una base de datos publicada en FRED, sobre la tasa de desempleo en Puerto Rico.

Datos

data1 <- read.csv("PRURN.csv")
data1 <- data1 %>% 
  mutate(date = as.Date(date,format="%m/%d/%Y")) 
str(data1)
## 'data.frame':    596 obs. of  2 variables:
##  $ date : Date, format: "1976-01-01" "1976-02-01" ...
##  $ PRURN: num  21.9 20.6 19.2 17.4 16.8 20.6 19.7 20.4 19.5 19.4 ...
# Formato de serie de tiempo
attach(data1)
data1.ts <- ts(PRURN, start = c(1976,1), frequency = 12)
summary(data1)
##       date                PRURN      
##  Min.   :1976-01-01   Min.   : 5.20  
##  1st Qu.:1988-05-24   1st Qu.:11.00  
##  Median :2000-10-16   Median :13.80  
##  Mean   :2000-10-15   Mean   :13.93  
##  3rd Qu.:2013-03-08   3rd Qu.:16.80  
##  Max.   :2025-08-01   Max.   :25.30  
##                       NA's   :2
# Inicio, fin y frecuencia
start(data1.ts)
## [1] 1976    1
end(data1.ts)
## [1] 2025    8
frequency(data1.ts)
## [1] 12

La serie contiene 596 observaciones mensuales, que abarcan el periodo de enero de 1976 hasta la fecha más reciente disponible. Los valores representan la tasa de desempleo en Puerto Rico, expresada en porcentaje. A lo largo del periodo, los valores fluctúan aproximadamente entre 5% y 25%, reflejando variaciones asociadas a ciclos económicos, recesiones, recuperaciones y otros eventos relevantes en el mercado laboral.

En conjunto, la serie ofrece una perspectiva histórica amplia sobre el comportamiento del desempleo en Puerto Rico durante las últimas cinco décadas.


Comportamiento

library(plotly)
library(dplyr)

# Gráfica interactiva con plotly
fig <- plot_ly(data1, x = ~date, y = ~PRURN, type = 'scatter', mode = 'lines',
               line = list(color = 'steelblue', width = 2)) %>%
  layout(xaxis = list(title = "Año"),yaxis = list(title = "Desempleo (%)"),
    hovermode = "x unified")

fig

Interpretación:

Observamos fluctuaciones mensuales en la tasa de desempleo en Puerto Rico desde 1976, con niveles altos en los primeros años, aumentos asociados a recesiones económicas y una tendencia general a la baja en las últimas décadas. Los valores recientes se encuentran entre los más bajos del periodo histórico.


Descomposición

data1.ts_clean <- na.approx(data1.ts) # NA

descomp1 <- decompose(data1.ts_clean)
plot(descomp1)

Interpretación:

  • Tendencia: la serie muestra una disminución general del desempleo a lo largo del tiempo, con periodos de aumentos asociados a recesiones económicas.

  • Estacionalidad: se observan variaciones que se repiten cada año, aunque su magnitud es moderada en comparación con otros tipos de series.

  • Componente aleatorio: refleja fluctuaciones irregulares y eventos inesperados que afectan el mercado laboral a corto plazo.


Estacionalidad

Para visualizar la estacionalidad de forma más clara, se utiliza un monthplot, que muestra la media de cada mes a lo largo de los años.

monthplot(data1.ts_clean,
         ylab = "Desempleo (%)",
        xlab = "Mes")

Interpretación:

Los valores estacionales muestran variaciones que se repiten cada año, aunque con una magnitud moderada. En general, algunos meses presentan niveles de desempleo ligeramente más altos o más bajos que el promedio anual, lo que indica un patrón estacional estable pero tenue, típico de indicadores económicos donde la estacionalidad existe, pero no es el componente dominante de la serie.


Autocorrelación

La autocorrelación cuantifica la relación entre observaciones separadas por distintos intervalos de tiempo (rezagos).

acf(data1.ts_clean, lag.max = 36, main = "")

Interpretación:

La autocorrelación es muy alta en los primeros rezagos y disminuye de forma gradual conforme aumenta la distancia temporal. Esto indica una fuerte persistencia temporal, es decir, los valores de desempleo de un mes están estrechamente relacionados con los de los meses anteriores. El descenso lento de la ACF es característico de series económicas con tendencia, donde los cambios ocurren de manera gradual y no de forma abrupta.

Ejemplo 2

Para este segundo ejemplo, utilizaremos la serie AirPassengers, incluida en las bases de datos de R.

El número de reservas de pasajeros internacionales (en miles) por mes en una aerolínea en los Estados Unidos se obtuvo de la Administración Federal de Aviación para el período 1949-1960. La compañía usó los datos para predecir la demanda futura antes de ordenar nuevos aviones y capacitar a las tripulaciones. Los datos están disponibles como series temporales en R (AirPassengers).

Ilustraremos los conceptos importantes que surgen en un análisis exploratorio de series temporales.

Exploración inicial

data2.ts<- AirPassengers
data2.ts
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
summary(data2.ts)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   104.0   180.0   265.5   280.3   360.5   622.0
# Inicio, fin y frecuencia
start(data2.ts)
## [1] 1949    1
end(data2.ts)
## [1] 1960   12
frequency(data2.ts)
## [1] 12

La serie contiene 144 observaciones mensuales (12 años × 12 meses), con valores que van desde 104 hasta 622 mil pasajeros.


Comportamiento

plot(data2.ts,
     ylab = "Pasajeros (miles)",
     xlab = "Año",
     col = "steelblue",
     lwd = 2)

Interpretación:

Se observa un crecimiento sostenido en el número de pasajeros a lo largo del tiempo (tendencia positiva) y un patrón que se repite cada año (estacionalidad). Ambos elementos son característicos de muchas series económicas y empresariales, como las ventas o la producción.


Descomposición

descomp2 <- decompose(data2.ts)
plot(descomp2)

Interpretación:

  • Tendencia: incremento sostenido del tráfico aéreo.

  • Estacionalidad: picos regulares en los meses de verano (alta demanda turística).

  • Componente aleatorio: pequeñas variaciones sin patrón definido.


Estacionalidad

monthplot(data2.ts,
          main = "Patrón estacional mensual",
          ylab = "Pasajeros (miles)")

Interpretación:

Los picos más altos se concentran entre julio y agosto, mientras que los valores más bajos ocurren entre noviembre y febrero. Esto refleja un patrón estacional estable, típico de las series de transporte o consumo.


Autocorrelación

La autocorrelación cuantifica la relación entre observaciones separadas por distintos intervalos de tiempo (rezagos).

acf(data2.ts,lag.max = 12)

Interpretación:

Se observa una autocorrelación positiva fuerte en los primeros rezagos, indicando que los valores cercanos en el tiempo tienden a parecerse.