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

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

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

Computer Vision con R. OpenCV de andar por casa

Trabajando con Computer Vision aprecio que estamos muy limitados por las máquinas que usamos, o tiene mucho sentido montar GPUs en casa del tamaño del aire acondicionado y por supuesto no tiene sentido el consumo energético que implica. Aquí estoy yo montando una GPU para el análisis de imágenes. Este tema implica que la Computer Vision no la podrá usar el común de los data scientist, a los necesarios conocimientos técnicos y matemáticos se añade el disponer de unos recursos tecnológicos que no están al alcance de cualquiera. Sin embargo, los conocimientos técnicos y matemáticos los puedes adquirir o puedes aprovecharte de los entornos colaborativos. Pero podemos iniciarnos en el reconocimiento de imágenes con R y la librería OpenCV y, si salen algunos temas en los que estoy enredando, es posible que la reducción de dimensionalidad y la geometría nos ahorre máquinas y energía. ...

27 de noviembre de 2020 · rvaquerizo

R + Python = reticulate

He sido reticente a usar reticulate con R porque no me gusta R Markdown y, si he trabajado con Python, no he necesitado R y viceversa. Ahora tengo en mente algún juego/proyecto de esos que se quedan siempre en el tintero por falta de tiempo o interés, pero me están sirviendo para elaborar unos apuntes sobre R Markdown y Python que voy a sintetizaros en esta entrada por si a alguien le fuera de utilidad. ...

26 de noviembre de 2020 · rvaquerizo

Añadiendo gráficos de tarta a nuestros mapas de ggplot con scatterpie

Los gráficos de tarta o pie charts tienen algunos peligros y el ahora escribiente no es muy partidario de su uso; sin embargo, la librería scatterpie facilita mucho su realización en R y quería traer al blog un método más o menos sencillo para entender cómo hacer el gráfico y cómo disponer los datos. Obtención del mapa Se comienza por obtener un mapa por comunidades autónomas con raster que a los seguidores de los artículos de R del blog les será familiar: ...

18 de noviembre de 2020 · rvaquerizo

Calcular porcentajes por grupos con dplyr

A la hora de sumarizar datos con dplyr podemos calcular porcentajes dentro de grupos o subgrupos con transmute. La sintaxis es sencilla, pero tiene la peculiaridad de que solo obtendremos como salida lo que indiquemos en transmute. Mejor lo entendéis en un ejemplo: Conjunto de datos aleatorio de ejemplo: library(dplyr) observaciones <- 100 grupo_1 <- rpois(observaciones, 0.5) grupo_2 <- rpois(observaciones, 1) df <- cbind.data.frame(grupo_1, grupo_2) %>% mutate(id_cliente = n()) Sumarizamos por grupos: df %>% group_by(grupo_1, grupo_2) %>% summarise(clientes = n()) Contamos clientes y calculamos el porcentaje sobre el total: ...

26 de octubre de 2020 · rvaquerizo