Mapa de Rstats animado con el porcentaje de vacunación en España

El dato del porcentaje de vacunados de COVID por Comunidad Autónoma está en prensa diariamente y yo estoy empezando a trabajar animaciones para visualizar los datos de un modo más dinámico, fundamentalmente visualizaciones con R y las librerías ggplot2 y gganimate, así que un mapa animado con ese dato me parecía un ejercicio interesante. No esperaba que estos ejercicios tuvieran mucho interés puesto que hay material en la web más que suficiente, pero algunas personas sí mostraron interés, por lo que crearé dos entradas en el blog con algunas animaciones realizadas. La primera de ellas la traigo hoy y consiste en el porcentaje de personas vacunadas en España en función de las vacunas entregadas por Comunidad Autónoma. No me quiero meter en los datos, directamente vamos a representar; todo lo referente a datos y coronovirus en España no funciona tan correcto como debiera. ...

20 de enero de 2021 · rvaquerizo

youtube-dl para descargar videos y mplayer para pasar esos vídeos a imágenes

Si deseamos descargar vídeos de Youtube tenemos youtube-dl pero podemos descargar de otras web y en esta entrada vamos a ver como. Además podemos transformar esas entradas en fotogramas, esto es útil a la hora de analizar imágenes, podríamos estudiar la presencia de una marca en un partido de fútbol, identificar las matrículas que pasan delante de determinada cámara u otros casos de uso. Y en uno de esos casos precisamente J.L. Cañadas del blog hermano Muestrear no es Pecado me ha descubierto la librería youtube-dl y la creación de scripts para transformar videos en imágenes que posteriormente podemos analizar. El caso de mplayer es distinto, lo conocía, Cañadas me ha descubierto el ffmpeg que ofrece más posibilidades. ...

11 de enero de 2021 · rvaquerizo

Mapas estáticos de Perú con R y Python a nivel de Distrito

Petición de un lector: un código de ejemplo para hacer mapas de Perú con R y con Python. Estos ejemplos quedan resumidos en un solo sitio y se va a emplear un notebook desde RStudio donde tendremos bloques de R y Python en función de lo que necesitemos. Mapa de Perú con R y ggplot2 library(tidyverse) library(reticulate) library(raster) library(maptools) # Obtenemos datos de GADM peru_shp <- getData('GADM', country = 'Peru', level = 2) # Convertimos a data frame para ggplot2 peru_df <- fortify(peru_shp, region = "NAME_2") # Generamos datos aleatorios para ilustrar distritos <- data.frame(id = unique(peru_df$id)) distritos$aleatorio <- runif(nrow(distritos), 10, 30) # Unimos datos con el mapa peru_plot <- left_join(peru_df, distritos, by = "id") # Pintamos el mapa ggplot(data = peru_plot, aes(x = long, y = lat, group = group)) + geom_polygon(aes(fill = aleatorio)) + scale_fill_continuous(low = "white", high = "red") + theme_minimal() Código conocido: obtenemos el mapa de GADM con nivel 2 (distritos). Mediante fortify (o map_data) creamos el data frame que necesita ggplot2. En este caso genero unos datos aleatorios; en vuestro caso tendríais que cruzar vuestros datos (siempre es mejor emplear una codificación INE o similar en vez del nombre). El resultado: ...

28 de diciembre de 2020 · rvaquerizo

Corrección ortográfica en RStudio

Si os estáis acostumbrando a usar RStudio como editor de texto y no confiáis en vuestras capacidades ortográficas, sabed que podéis hacer una revisión ortográfica de vuestro documento desde RStudio. Es muy sencillo: lo primero es Tools –> Global Options y luego te vas a Spelling (ortografía); allí eliges el diccionario que quieres usar. Si no aparece el tuyo, lo puedes descargar o actualizar: Ahora, en los documentos de R que estéis editando, si pulsáis F7 podréis realizar una revisión ortográfica del texto. ...

27 de diciembre de 2020 · rvaquerizo

Analisisydecision.es os desea felices fiestas

Un homenaje a R base del que nadie se acuerda. Una animación donde se usa el paquete snowflakes para hacer copos de nieve y hay algún uso interesante de la función text. En cualquier caso, lo dicho: felices fiestas en estos días extraños. alturas <- seq(100, 200, by = 3) posiciones <- as.integer(runif(length(alturas), 5, 95)) radio <- round(runif(length(alturas), 0.7, 1.8), 2) orientacion <- posiciones / 5 * (pi / 6) grises <- paste0("gray", as.integer(runif(length(alturas), 70, 95))) texto <- " AnalisisyDecision.es " texto2 <- "os desea felices fiestas" saveGIF( for (i in seq(0, 100, by = 3)) { frase2 <- "" frase1 <- substr(texto, 1, i / 3) if (i > nchar(texto)) frase2 <- substr(texto2, 1, i / 2 - nchar(texto)) plot(rep(100, 100), rep(100, 100), ann = FALSE, type = "n", axes = FALSE, ylim = c(0, 100), xlim = c(0, 100)) snowflakes( xCoor = posiciones, yCoor = alturas - i, radius = radio, orientation = orientacion, seeds = puntas, color = grises ) text(80, 50, frase1, adj = c(1, 0), cex = 2, col = i) text(80, 30, frase2, adj = c(1, 0), cex = 2, col = i) }, fps = 1, movie.name = "C:/temp/animaciones/navidad.gif" )

22 de diciembre de 2020 · rvaquerizo

Mi curriculum con RMarkdown y pagedown

Me he puesto a actualizar mi currículum y a la vez estoy aprendiendo markdown; en ese proceso, José Luis Cañadas me dijo: «usa pagedown». No era yo fan de RMarkdown, pero me estoy reconvirtiendo. Me está pasando con markdown algo parecido a lo que me pasó con el picante: no me gustaba hasta que lo probé y, desde entonces, me encanta. ¿Por qué lo probé? Porque había decidido tomarme un tiempo sabático para elaborar una serie de cursos, webinars y actualizar la web, que son 12 años sin modificaciones. Tras tres meses sabáticos estoy harto de no trabajar: son 25 años seguidos trabajando, 20 gestionando datos y otros 5 en los que hice de todo (hasta servir en la Armada). No soy capaz de estar sin trabajar; el primer paso es elaborar un resumen de mi vida profesional y dar un nuevo formato, porque llevo con el mismo unos 12 años. ...

21 de diciembre de 2020 · rvaquerizo

Evaluando la capacidad predictiva de mi modelo `tweedie`

Cuando tenemos que evaluar el comportamiento de un modelo de clasificación binomial, empleamos sensibilidad, especificidad… ya he hablado sobre ese tema, aunque volveré sobre ello. Sin embargo, si nuestro modelo estima un valor, es posible que no tengamos tan claro cómo está funcionando su capacidad predictiva. Lo que traigo hoy es un análisis muy básico, pero que entienden muy bien aquellas personas que no tienen grandes conocimientos en ciencia de datos; además, es una continuación de la entrada en la que se ilustraba un ejemplo de uso de los modelos Tweedie. ...

17 de diciembre de 2020 · rvaquerizo

Librería `mapSpain` en `rstats`. Mapas estáticos de España

Más mapas estáticos de España con R, esta vez con la librería mapSpain de Diego Hernangómez, que simplifica mucho la realización de esta tarea. El primer ejemplo es un mapa del exceso de mortalidad por Comunidad Autónoma para el año 2020, reaprovechando un código del blog: library(mapSpain) library(sf) library(tidyverse) library(lubridate) df <- read.csv("https://momo.isciii.es/public/momo/data") df <- df %>% dplyr::filter(ambito == 'ccaa' & nombre_sexo == 'todos' & cod_gedad == 'all') %>% mutate(fecha_defuncion = as.Date(fecha_defuncion, '%Y-%m-%d')) %>% filter(year(fecha_defuncion) >= 2020) df <- df %>% mutate(ola = case_when( fecha_defuncion <= as.Date("2020-03-07") ~ 'Anteriores', fecha_defuncion <= as.Date("2020-05-07") ~ 'Primera ola', fecha_defuncion <= as.Date("2020-08-01") ~ 'Verano', TRUE ~ 'Segunda ola'), exceso = round(defunciones_observadas / defunciones_esperadas - 1, 4) * 100, iso2.ccaa.code = paste0("ES-", cod_ambito)) agr <- df %>% dplyr::filter(ola == 'Primera ola') %>% group_by(iso2.ccaa.code) %>% summarise(exceso = round(sum(defunciones_observadas) / sum(defunciones_esperadas) - 1, 4) * 100) Como vemos en el código, se ha preparado una variable iso2.ccaa.code para el cruce con el objeto espacial que vamos a obtener con mapSpain. Ahora, para realizar el mapa sólo necesitamos unas líneas de código: ...

10 de diciembre de 2020 · rvaquerizo

No estamos igual que en la primera ola de COVID

Me cuesta hablar sobre COVID porque creo que hay voces con más conocimiento y mejor preparadas que la mía para opinar sobre el tema. Pero, en los últimos tiempos, leo algunas cosas que me empiezan a calentar y vuelvo a pensar que a lo mejor mi voz sí debió ser escuchada. El caso es que hay una línea de opinión que argumenta que estamos más o menos igual que en el momento de aparición del virus, algo que llamamos primera ola frente a segunda ola, que las medidas no han funcionado siempre con el argumento «yo no soy contrario a, pero en la Universidad de Nabucodonosor salió un estudio que». Sería bajo y de mala educación por mi parte insinuar que son unos gilipollas y por eso prefiero presentar un pequeño código de R para que podáis leer los datos de MoMo del Instituto Carlos III: ...

2 de diciembre de 2020 · rvaquerizo

Modelos tweedie con H2O. Mutualizar siniestralidad en base a factores de riesgo

Ya he escrito sobre la distribución tweedie en otra ocasión y hoy vuelvo a traeros un ejemplo de uso que además servirá para introducir un método, una forma de trabajar con modelos en H2O y R, además de emplear Gradient Boosting Machine (GBM) para la obtención de primas de riesgo. Ya hay buenos profesionales repartidos en el mercado laboral a los que les he mostrado cómo hacer modelos de riesgo para el sector asegurador con R y H2O dentro del Máster en Big Data de la UNED donde imparto el módulo de seguros. Pero hoy quiero traer al blog un resumen de otro tipo de modelos que nos pueden servir para segmentar una cartera de seguros en base a la siniestralidad esperada de un riesgo. ...

1 de diciembre de 2020 · rvaquerizo