Los costos de Amazon Web Services o Google Cloud suelen ser confusos y cuesta "filtrar el ruido" para ver lo que realmente importa. Este artículo explica cómo detectar tendencias de costo o de uso aplicando el análisis de Mann-Kendall.

filtrar el "ruido" en la facturación de AWS o Google Cloud no es tarea fácil
Imagina que estás revisando series de tiempo superpuestas que desglosan tu gasto en la nube por servicio durante el último mes (mira el ejemplo de abajo). Cuando hay demasiadas series de datos (en nuestro ejemplo, 50), se vuelve difícil identificar a simple vista cuáles van al alza o a la baja, que es justamente lo que suele interesarnos.
En este post vas a ver cómo "separar la señal del ruido" cuando trabajas con muchos datos de series de tiempo.

Series de tiempo superpuestas en un mismo gráfico.
Existen varios enfoques para verificar si hay o no una tendencia monótona lineal en una serie de tiempo determinada.
Detectar tendencias con la prueba de Mann-Kendall
En DoiT International, como parte de las tecnologías de Cloud Management que desarrollamos para nuestros clientes, usamos la prueba de Mann-Kendall para crear una funcionalidad de análisis de tendencias con un solo clic [ ver video]. Es similar al análisis paramétrico de regresión lineal, que sirve para comprobar si la pendiente de la línea de regresión estimada es distinta de cero. Ese análisis de regresión exige que los residuos de la línea ajustada se distribuyan normalmente; un supuesto que la prueba MK no requiere (la prueba MK es no paramétrica).

El análisis de tendencias en acción dentro de la Cloud Management Platform (CMP) de DoiT International
Supuestos detrás de la prueba de Mann-Kendall
La prueba parte de los siguientes supuestos, dada una serie de tiempo:
1. En ausencia de una tendencia, las mediciones obtenidas a lo largo del tiempo son independientes y están idénticamente distribuidas.
2. Las mediciones representan los estados reales de las variables observadas en el momento en que se toman.
3. Los métodos utilizados para recolectar las muestras, realizar las mediciones instrumentales y procesar los datos no presentan sesgos.
Limitaciones a tener en cuenta
La prueba de Mann-Kendall no es adecuada para datos con periodicidades (es decir, efectos estacionales). Para que la prueba resulte efectiva, se recomienda eliminar todos los efectos periódicos conocidos en una etapa de preprocesamiento antes de aplicarla.
Descomposición de series de tiempo
Podemos usar la descomposición estacional de series de tiempo por Loess (STL) para separar una serie de tiempo en sus componentes estacional, de tendencia e irregular. Esta descomposición se realiza fácilmente con el package stl de Go.
El método stl.Decompose recibe los siguientes parámetros obligatorios:
- La serie de tiempo que quieres descomponer
- La periodicidad de los datos
- El ancho estacional
- El tipo de modelo
El modelo puede ser stl.Additive() cuando las variaciones alrededor de la tendencia no cambian con el nivel de la serie, o stl.Multiplicative() si la tendencia es proporcional al nivel de la serie.
Puedes descomponer tu serie de tiempo y acceder a cada componente de esta manera:
res := stl.Decompose(timeSeries, periodicity, width, modelType)
trend := res.Trend
seasonal := res.Seasonal
residual := res.Resid
Abajo se muestra un ejemplo de una serie de tiempo descompuesta con estacionalidad semanal usando el modelo multiplicativo. Se observa que los valores van al alza y que hay "caídas" estacionales cada siete días.

Ejemplo de una serie de tiempo descompuesta en sus componentes de tendencia, estacional y residual.
Cómo hacer tu propio análisis de tendencias
Ejecuta el siguiente script para ver un ejemplo de cómo la prueba de Mann-Kendall identifica una tendencia monótona en una serie de tiempo de muestra.
Si en tus datos existe una tendencia, te conviene calcular la pendiente de la línea de regresión. Así sabrás qué tan rápido cambian tus datos. Esta información resulta útil cuando, por ejemplo, quieres descartar todas las series de tiempo cuya pendiente de regresión sea menor o mayor a X grados.
Mira cómo aplicamos el análisis de tendencias en DoiT International dentro de nuestra Cloud Management Platform aquí.