lección 3
Estacionariedad y por qué importa
Qué es una serie estacionaria, por qué los modelos la exigen, cómo se consigue diferenciando y cómo se comprueba con Dickey-Fuller.
⏱ 50 min
Imagina que te enseño un trozo de una serie, un fragmento recortado sin decirte de qué fecha es, y te pido que adivines si viene del principio o del final del histórico. Si la serie es estacionaria, no podrás: todos los trozos se parecen, tienen el mismo nivel medio y la misma variabilidad, así que no hay forma de saber de cuándo es cada uno. Si la serie no es estacionaria, lo acertarás a la primera: los trozos del final están más altos (si hay tendencia creciente) o oscilan más (si la variabilidad ha aumentado), y eso delata su fecha. Esa prueba mental —¿podría distinguir un trozo de otro por su aspecto?— es la intuición exacta de la estacionariedad, y es la propiedad que decide si un modelo de predicción va a poder trabajar con tu serie o no.
La estacionariedad es, probablemente, el concepto más abstracto del trabajo con series temporales y a la vez el más importante de entender bien, porque casi todos los modelos clásicos lo dan por supuesto. Un modelo que predice el futuro mirando el pasado necesita que las reglas del juego no cambien: que lo que aprendió sobre cómo se comporta la serie en los datos antiguos siga siendo cierto en los datos nuevos. Si la media de la serie no deja de subir, o si la variabilidad de hace un año no tiene nada que ver con la de ahora, el modelo está aprendiendo un comportamiento que ya no existe cuando llega el momento de predecir. La estacionariedad es la garantía de que el pasado es una guía válida para el futuro.
## Qué significa, con precisión
Una serie es estacionaria cuando sus propiedades estadísticas no cambian con el tiempo. En la práctica, esto se concreta en tres condiciones. La primera: la media es constante, la serie no tiene tendencia, oscila alrededor de un nivel fijo sin irse hacia arriba ni hacia abajo a largo plazo. La segunda: la varianza es constante, la amplitud de las oscilaciones es parecida al principio y al final, la serie no se vuelve más "nerviosa" con el tiempo. La tercera, más técnica: la forma de la dependencia entre instantes no cambia, es decir, cómo se relaciona el valor de hoy con el de hace tres días es la misma relación da igual en qué momento mires. De las tres, las dos que vas a usar a diario son las dos primeras: nivel estable y variabilidad estable.
Conviene desmontar un malentendido frecuente: estacionario no significa plano ni aburrido. Una serie estacionaria puede subir y bajar muchísimo, puede tener ruido fuerte y saltos. Lo que no puede es tener una dirección sostenida (tendencia) ni cambiar su grado de agitación (varianza creciente). El ruido blanco puro —una secuencia de valores aleatorios independientes— es el ejemplo perfecto de serie estacionaria: salta todo lo que quiere, pero su media y su varianza son constantes y ningún trozo se distingue de otro. Y, al revés, una serie puede ser muy suave y nada estacionaria: una recta que sube despacio es tranquilísima de ver y no es estacionaria en absoluto, porque su media no para de crecer.
## Por qué los modelos la exigen
La razón de fondo es sencilla una vez que la ves. Un modelo de predicción aprende relaciones de los datos pasados: "cuando la serie estuvo aquí, lo siguiente que pasó fue esto". Para que esa relación aprendida sirva de algo al predecir, tiene que seguir siendo válida en el tramo que quieres predecir. Si la serie es estacionaria, lo es: las reglas no cambian, así que lo aprendido en el pasado se aplica al futuro. Pero si la serie tiene una tendencia creciente, el modelo aprende relaciones alrededor de un nivel que ya no existirá cuando prediga, porque la serie se habrá movido a otro nivel más alto. Es como aprender a aparcar en una calle y que luego la calle se mueva: lo que practicaste ya no encaja.
Hay además un peligro estadístico más concreto que conviene conocer, porque aparece constantemente en informes mal hechos: la regresión espuria. Si tomas dos series no estacionarias que suben las dos con el tiempo —por ejemplo, el número de ahogamientos en piscinas y las ventas de helados— y las relacionas, te saldrá una correlación altísima y una relación que parece sólida como una roca. Pero es un espejismo: las dos suben por el calor del verano, no porque una cause la otra. La no estacionariedad fabrica correlaciones falsas entre cosas que solo tienen en común que ambas crecen. Trabajar con series estacionarias es la vacuna contra esa trampa, porque al quitarles la tendencia se evapora la correlación falsa y queda solo la relación real, si la hay.
Este fenómeno es tan traicionero que vale la pena entender por qué funciona. Dos rectas crecientes cualesquiera están correlacionadísimas aunque no tengan nada que ver, simplemente porque las dos van hacia arriba: cuando una está alta la otra también lo está, porque las dos avanzan en el tiempo a la vez. Hay colecciones enteras de estas correlaciones absurdas —el consumo de queso y las muertes por enredarse en las sábanas, el gasto en ciencia y los suicidios por ahorcamiento— y todas comparten lo mismo: son series que crecen, y cualquier par de series que crecen correlaciona. El número de correlación, que en datos sin tiempo es una herramienta fiable, se vuelve una fuente de disparates en cuanto hay tendencias de por medio. Por eso, con experiencia, se desconfía por reflejo de cualquier correlación alta entre dos series temporales hasta haberles quitado la tendencia a las dos: la correlación entre los cambios es la que dice algo; la correlación entre los niveles crecientes casi nunca.
## Cómo se consigue: diferenciar
La buena noticia es que casi cualquier serie no estacionaria se puede convertir en estacionaria con una operación muy simple, y además familiar: diferenciar. Diferenciar una serie es, en vez de quedarte con el valor de cada día, quedarte con el cambio respecto al día anterior. Si las ventas fueron 100, 110, 125, 130, la serie diferenciada es 10, 15, 5: cuánto subió cada día respecto al anterior. Esta operación tiene un efecto mágico sobre la tendencia: una serie que sube de forma sostenida tiene una tendencia en su nivel, pero sus cambios diarios no tienen tendencia, oscilan alrededor de un valor estable. Diferenciar elimina la tendencia de un plumazo.
La intuición es la misma que la de una derivada, si la has visto: la pendiente de una recta es constante, aunque la recta no deje de subir. Diferenciar una serie con tendencia lineal te deja una serie plana alrededor de esa pendiente. Y si una sola diferenciación no basta —porque la serie no sube en línea recta sino acelerando—, se diferencia otra vez: se toma el cambio del cambio. En la práctica, casi todas las series económicas se vuelven estacionarias con una o, como mucho, dos diferenciaciones. Al número de veces que hay que diferenciar para alcanzar la estacionariedad se le llama orden de integración, y es un número que reaparecerá cuando configures un modelo de predicción.
Hay un matiz importante que conviene tener claro desde el principio, porque de lo contrario diferenciar parece una pérdida de información inquietante. Al diferenciar trabajas con los cambios, no con los niveles, y eso suena a que has tirado el dato original. No lo has tirado: la operación es perfectamente reversible. Sumando los cambios desde un punto de partida conocido reconstruyes la serie original exacta, igual que si te digo cuánto subió o bajó una cuenta cada día y el saldo inicial, puedes recuperar el saldo de cualquier día. Esto es justo lo que hace un modelo cuando predice: trabaja internamente con la serie diferenciada, que es estacionaria y por tanto predecible, y al final deshace la diferenciación para devolverte la predicción en las unidades originales, en euros o en grados y no en "cambios de euros". No pierdes nada: cambias de representación mientras modelas y vuelves a la original al terminar.
Hay además otra forma de quitar una tendencia que conviene no confundir con diferenciar, porque hace algo distinto. Si en vez de tomar los cambios ajustas una línea de tendencia a la serie y le restas esa línea, también te quedas con una serie sin pendiente. A esto se le llama quitar la tendencia por ajuste, y sirve cuando la tendencia es realmente una recta estable, conocida y determinista. Pero la mayoría de las series del mundo real no tienen una tendencia tan limpia: su nivel va cambiando de dirección poco a poco, sin seguir ninguna recta. Para esas, diferenciar funciona mucho mejor, porque se adapta a los cambios locales en vez de imponer una forma fija. La regla general es diferenciar; ajustar y restar una recta se reserva para los pocos casos en que la tendencia de verdad es una recta.
1import numpy as np2import pandas as pd34# Serie con tendencia creciente clara: NO estacionaria5np.random.seed(42)6dias = pd.date_range("2026-01-01", periods=50, freq="D")7serie = pd.Series(np.linspace(100, 300, 50) + np.random.normal(0, 8, 50), index=dias)89# Diferenciar: cada valor pasa a ser el cambio respecto al dia anterior10diferenciada = serie.diff().dropna()1112# La serie original sube mucho de principio a fin; la diferenciada, no13rango_original = serie.iloc[-1] - serie.iloc[0]14media_dif = diferenciada.mean()15print(f"La serie original sube mucho (rango > 150): {rango_original > 150}")16print(f"Los cambios diarios oscilan sin tendencia (|media| < 10): {abs(media_dif) < 10}")
diff() convierte el valor en el cambio diario: la tendencia desaparece y queda una serie estable
Diferenciar de más es un error tan real como diferenciar de menos. Si una serie ya es estacionaria y la diferencias igualmente, no la mejoras: le inyectas una estructura artificial que no estaba y que confundirá al modelo (técnicamente, le metes autocorrelación negativa). La regla es diferenciar lo justo para alcanzar la estacionariedad y ni una vez más. Por eso no se diferencia a ciegas "por si acaso": se comprueba si hace falta, se diferencia una vez, se vuelve a comprobar, y se para en cuanto la serie es estacionaria.
## Cuando el problema es la varianza, no el nivel
Diferenciar arregla la primera condición de la estacionariedad —la media que no para de subir—, pero no hace nada contra la segunda: la varianza que crece. Y las dos cosas suelen venir juntas, sobre todo en las series multiplicativas de negocio, donde a medida que el nivel sube las oscilaciones se agrandan. Si solo diferencias una serie así, le quitas la tendencia pero te quedas con una serie cuyos saltos son cada vez más grandes hacia el final: sigue sin ser estacionaria, porque la variabilidad cambia con el tiempo. Hace falta una herramienta distinta para ese problema, y la más común es tomar el logaritmo de la serie antes de diferenciar.
El logaritmo tiene una propiedad que lo hace perfecto para esto: comprime los valores grandes mucho más que los pequeños. La distancia de 10 a 100 y la de 100 a 1.000 son enormes en la serie original, pero en logaritmos son exactamente iguales, porque las dos son multiplicar por diez. Así que cuando una serie crece de forma porcentual —y por tanto sus oscilaciones crecen con el nivel—, aplicarle el logaritmo convierte ese crecimiento multiplicativo en uno aditivo: las olas que se agrandaban pasan a tener todas la misma altura. En otras palabras, el logaritmo estabiliza la varianza y, de paso, convierte una serie multiplicativa en una aditiva, que es más fácil de tratar. El orden habitual, cuando una serie falla las dos condiciones, es logaritmo primero (para la varianza) y diferenciar después (para la media).
## Cómo se comprueba: el test de Dickey-Fuller
Mirar el gráfico y juzgar a ojo si una serie es estacionaria funciona para los casos claros, pero es subjetivo y falla en los casos de frontera. Para tener una respuesta objetiva existe una prueba estadística: el test de Dickey-Fuller aumentado, que en statsmodels se llama adfuller. Es una de esas herramientas que se usan muchísimo y se entienden mal, así que vamos a entenderla bien, empezando por lo más importante: qué pregunta hace exactamente, porque su lógica está del revés de lo que la intuición espera.
El test de Dickey-Fuller parte de una hipótesis de partida —lo que los estadísticos llaman hipótesis nula— que dice: "esta serie NO es estacionaria". El test no intenta demostrar que la serie es estacionaria; intenta reunir pruebas suficientes para rechazar la idea de que no lo es. Es la misma lógica de un juicio: se parte de la presunción de inocencia (aquí, de no estacionariedad) y hacen falta pruebas para condenar. Esta inversión es la fuente de casi todos los errores al leer el test, así que conviene fijarla: la hipótesis por defecto es que la serie es mala (no estacionaria), y lo que buscas son pruebas para descartarla.
El resultado que te interesa es el p-valor, un número entre 0 y 1 que mide cómo de compatible es lo que observas con la hipótesis de partida. Un p-valor pequeño significa "lo que veo sería muy raro si la serie fuera no estacionaria", así que descartas la no estacionariedad y concluyes que es estacionaria. Un p-valor grande significa "lo que veo encaja bien con una serie no estacionaria", así que no puedes descartarla. El umbral convencional es 0,05: si el p-valor es menor que 0,05, concluyes estacionaria; si es mayor o igual, concluyes que no puedes afirmar que lo sea. Al revés de lo que la intuición sugiere, aquí un p-valor pequeño es la buena noticia.
1import numpy as np2import pandas as pd3from statsmodels.tsa.stattools import adfuller45np.random.seed(42)6dias = pd.date_range("2026-01-01", periods=80, freq="D")7# Serie con tendencia: deberia salir NO estacionaria8serie = pd.Series(np.linspace(50, 250, 80) + np.random.normal(0, 10, 80), index=dias)910# Test sobre la serie original11p_original = adfuller(serie)[1]12# Test sobre la serie diferenciada una vez13p_diferenciada = adfuller(serie.diff().dropna())[1]1415# Nunca imprimas el p-valor crudo: usalo con el umbral 0,05 como booleano16print(f"Original estacionaria (p < 0,05): {p_original < 0.05}")17print(f"Diferenciada estacionaria (p < 0,05): {p_diferenciada < 0.05}")
adfuller devuelve el p-valor en la posición 1; se compara con 0,05 y se imprime la decisión, no el número crudo
Consejo de senior: el test de Dickey-Fuller es una ayuda, no un oráculo. Con pocas observaciones tiene poca capacidad de detectar la no estacionariedad, así que puede darte un p-valor alto en una serie que claramente tiene tendencia solo porque tiene pocos datos. La buena práctica es combinar siempre el test con la mirada: dibuja la serie, mira si el nivel se mueve, mira si la amplitud crece, y usa el test para confirmar lo que ves, no para sustituir el ojo. Cuando el test y el gráfico se contradicen, casi siempre tiene razón el gráfico y el test está corto de datos.
## El procedimiento completo, de principio a fin
Juntando todo, el flujo para dejar una serie lista para un modelo es un bucle corto y muy mecánico. Primero, dibujas la serie y te preguntas a ojo si el nivel y la amplitud se mantienen. Segundo, pasas el test de Dickey-Fuller para tener una respuesta objetiva. Si sale estacionaria, has terminado. Si no, diferencias una vez y vuelves al test. Repites hasta que el test diga estacionaria, contando cuántas veces has diferenciado, porque ese número —el orden de integración— es un dato que necesitarás para configurar el modelo. En la gran mayoría de los casos reales, el bucle termina en una o dos vueltas.
Ya sabes reconocer si una serie es estacionaria, por qué un modelo la necesita, cómo convertirla con diferenciación y cómo comprobarlo sin dejarte engañar por la lógica invertida del test. Con la serie estacionaria en la mano, falta la última pieza antes de poder modelar: entender esa dependencia entre instantes de la que hemos hablado desde el principio, medirla, y usarla para saber qué forma tiene que tener el modelo. Eso es lo que mide la autocorrelación, y es la herramienta que convierte "esta serie tiene memoria" en una receta concreta.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...
Regístrate para guardar tu progreso.