Anomalías detectadas en cotización de BBVA detectadas con anomalize
La detección de anomalías es un campo del aprendizaje automático con múltiples aplicaciones prácticas. Poder identificar automáticamente los datos que son atípicos para una variable permite lanzar alarmas para comprobar la existencia temprana de algún problema. Pudiendo actuar en consecuencia y minimizar las posibles consecuencias. Recientemente he descubierto un paquete de R, anomalize, el cual permite identificar de una forma sencilla las anomalías en series temporales.
La instalación de anomalize se puede hacer como es habitual desde el CRAN, por lo que solamente hay que escribir en una sesión de R el siguiente comando (o emplear el instalador de paquetes de RStudio)
install.packages("anomalize") Para trabajar de una forma eficiente con anomalize es aconsejable tener instalado el paquete tidyverse, en el caso de que alguien no lo tenga a estas alturas. Además, para obtener fácilmente series de datos, una de las mejores opciones son las cotizaciones de acciones, las cuales se pueden obtener mediante el paquete tidyquant. Un paquete que se pueden instalar simplemente escribiendo en la terminal de R el siguiente comando
install.packages("tidyquant") Para demostrar cómo se pueden identificar anomalías con anomalize voy a utilizar la cotización de la acción de BBVA en 2021. Para esto solamente hay que importar los paquetes y usar la función tq_get del paquete tidyquant con las opciones adecuadas.
library(anomalize)
library(tidyverse)
library(tidyquant)
# Obtención de los datos
bbva <- tq_get('BBVA.MC',
from = "2020-12-01",
to = "2021-12-01",
get = "stock.prices")
head(bbva) # A tibble: 6 × 8 symbol date open high low close volume adjusted <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 BBVA.MC 2020-12-01 3.86 4.01 3.84 4.00 45127272 3.90 2 BBVA.MC 2020-12-02 3.98 4.08 3.94 4.08 43622604 3.97 3 BBVA.MC 2020-12-03 4.08 4.10 3.99 4.08 26349754 3.97 4 BBVA.MC 2020-12-04 4.07 4.30 4.06 4.30 53906462 4.19 5 BBVA.MC 2020-12-07 4.25 4.30 4.17 4.2 24370848 4.09 6 BBVA.MC 2020-12-08 4.18 4.24 4.15 4.16 14456337 4.05
En este código se ha descargado la cotización de BBVA en el Mercado Continuo de la Bolsa de Madrid desde el primero de diciembre de 2020 hasta el mismo día del año siguiente. Valores que se han cargado en la variable bbva.
anomalizeAhora, una vez cargados los datos, solamente hay que usar las funciones de anomalize para analizarlos.
bbva_anomalized <- bbva %>% time_decompose(close) %>% anomalize(remainder) %>% time_recompose()
En primer lugar es necesario usar la función time_decompose() para transformar los valores de la columna que se desea analizar, en este caso el valor de cierre de la acción (close), creando un objeto con los datos para ser analizados. Objeto que contiene cuatro columnas valores: observed, season, trend, y remainder.
Posteriormente, se emplea la función anomalize() para identificar anomalías sobre la columna con los residuos (remainder). Añadiendo tres nuevas columnas: remainder_l1, remainder_l2 y anomaly al objeto. Siendo la columna que nos interesa la tercera, en la que se indica si el dato es atípico o no para la serie.
Finalmente, la función time_recompose() recompone los datos en base a las columnas season y trend creadas con antelación.
Ahora se puede repensar la cotización de la acción para ver visualmente las anomalías detectadas en la serie temporal. Algo que se puede hacer con el siguiente código.
bbva_anomalized %>% plot_anomalies(time_recomposed = TRUE, alpha_dots = 0.25) + labs(title = "Anomalías detectadas en cotización de BBVA")
Una figura en la que cada punto es la cotización de un día y los valores marcados en rojo son las anomalías detectadas. Las cuales se detectan durante los últimos días de cotización debido a las alarmas producidas por la variante ómicron durante esas fechas.
Solamente con un par de líneas de código se ha podido analizar la cotización de una acción e identificar anomalías en esta gracias a las funciones del paquete anomalize. Un paquete que debemos considerar si necesitamos implementar modelos de detección de anomalías en series temporales de una forma fácil y rápida.
En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…
En la serie Creación de una API REST con Express y TypeScript construimos una API…
Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…
En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…
Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…
En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…
This website uses cookies.