R

Purrr, furrr, maps y future_maps

Hace un par de días un amigo mío me preguntaba por temas de que quería paralelizar un proceso con R, y no acababa de ver claro cómo. A falta de que mande un ejemplo creí entender que tiene un dataframe dónde tiene un proceso que encuentra para cada fila un conjunto de n filas parecidas y sobre ese conjunto de n filas hace cosas, como estimar algo y tal.

Estimación muy burda del número de contagios.

Leo por ahí estimaciones de que hay en España más de 1 millón de contagiados y la verdad es que no tengo ni idea. Pero no se me ocurre ir poniendo ese dato por ahí como verdad absoluta, como hacen algunos . Hagamos un ejercicio simple y muy burdo, lo reconozco. Supongamos que el número de fallecidos por coronavirus está bien recogido, lo miro en mi dashboard que para eso lo hice y me dice que hoy 29 de Marzo hay un total acumulado de 6528 fallecidos.

El virus

En estos tiempos tan asépticos ya no estamos acostumbrados (en algunos países), a tratar con agentes patógenos altamente contagiosos como el que llena los titulares de periódicos y televisiones estos días. Sin más, vamos a comparar los datos de España e Italia, plagiando con total descaro a mi amigo Carlos Gil que puso este post de ayer y en este de hoy.

Lecciones aprendidas instalando paquetes de R

Ay, la nube.. que bien suena ¿verdad? Si, hasta que te toca pelearte con amazonlinux y versiones viejunas de R. Total, que me ha tocado lidiar un poco con la versión de R 3.4.1 de hace ya 3 años y tener que compilar en mi máquina un montón de librerías para amazon linux (que viene siendo un centos 7 modificado por aws) Así que lo primero es montarse un Dockerfile dónde id diciendo qué librerías de sistemas hay que añadir, y alguna ñapa por problemas con el compilador de C.

Malditas proporciones pequeñas III

Volviendo al ejemplo de lo de las proporciones pequeñas, se trataba básicamente de que se tenía una población con una prevalencia de cierto evento del 4 x 1000 más o menos y en post anteriores veíamos cómo calcular tamaños de muestra y tal para ver cómo detectar un incremento de un 15% en esa proporción. Ahora vamos a suponer que tenemos una población de 1.5 millones, pero que hay 5 grupos diferenciados, con prevalencias del 6, 5, 4, 3 y 2 por mil respectivamente y todos del mismo tamaño.

Jornadas de usuarios de R (y ya van 11)

Quién nos los iba a decir, allá por 2009 cuándo recién creada la lista de correo r-help-es nos llegó el mensaje de que iban a celebrarse las primeras jornadas.Creo que soy, salvo que me corrija Emilio o Carlos, el que a más jornadas ha ido (sólo falté a las míticas de Mieres), jejejeje. Hoy en día hay muchos eventos relacionados con software libre, analítica, big data, machine learning etcétera. Sin quitar méritos a ninguno de ellos, en mi humilde (y sesgada) opinión las jornadas de R-Hispano son uno de los mejores eventos.

Bicheando RStudio cloud

Pues eso, hoy en el trabajo alguien (a quien respeto) me ha hablado de la existencia de Rstudio Cloud, https://rstudio.cloud/ , dónde te logas con tu usuario de Google y ya tienes un rstudio andando. Parece una alternativa interesante a la hora de dar clase y similar, además, por defecto levanta una instancia con 30 gb de RAM y un procesador Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz con 16 hilos de ejecución (puedes comprobarlo con parallel::detectCores() )

Codificación de variables categóricas II

Voy a comentar por encima lo que se viene llamando “codificación por impacto”, la idea es codificar una variable categórica predictora usando la información del “target”, evidentemente este tipo de codificación sólo sirve cuando tenemos un modelo en mente y dicen que es útil si tenemos variables categóricas con alta cardinalidad. La idea es muy sencilla, para cada nivel de la variable categórica le asignamos su media de target, por ejemplo, (o la media(u otra medida) menos la media general)

glmer vs julia vs INLA

Hablábamos el otro día mi amigo Carlos y yo sobre los modelos mixtos y el uso de lme4, Stan o INLA. Total, que el problema es que queríamos un atajo que permitiera tener una estimación de los efectos aleatorios en un tiempo menor que lo que queda hasta el fin del universo. Pues nada, investigando vi que existía una librería en Julia llamada MixedModels y que es del autor de lme4 así que me puse a probar a ver si es verdad el lema de Julia, “tan rápido como C, tan fácil como Python”.

Codificación de variables categóricas I

Voy a hacer una serie de entradas sobre codificación de variables categóricas, mi idea es pasar desde la codificación parcial (OneHot Encoders para los modernos), hasta utilizar embeddings. Vamos al lío. Tradicionalmente, si tenemos una variable categórica con 5 niveles se codifica en tantas variables cero uno como niveles menos uno, puesto que uno de los niveles se toma como referencia y se codifica con todo 0’s en las varaibles indicadoras.

"Lookup table" en R y en Python

La verdad es que no sé como traducir el término “lookup table”, en fin, vamos al grano. Supongamos que tengo un factor con 3 niveles o un vector de caracteres con 3 letras únicas y 20 valores. set.seed(43) vector_largo <- sample(c("a","b","c"), size = 20, replace = TRUE) vector_largo ## [1] "b" "c" "a" "c" "a" "b" "c" "b" "a" "c" "b" "a" "b" "a" "b" "c" "a" ## [18] "a" "a" "a" Y que en otro sitio tengo un vector “con nombres” dónde tengo el valor que asigno a “a”, “b” y “c”

Lectura de domingo

Un amigo mío suele comentar que si no tienes en cuenta la estructura, palmas pasta. Así que hoy estoy leyendo capítulos sueltos de Doing Bayesian Data Analysis. El libro está bastante bien y me encanta la foto de portada, lo único que está más enfocado a usar JAGS y de Stan no cuenta mucho, pero para eso ya está la completa documentación de Stan. Sigo con la lectura, buen domingo.

Cosas que quiero probar

Iba a escribir una cosa chula que hiciera honor al nombre del blog, algo sobre muestreo, postestratificación y demás, pero he llegado a casa tarde y no tengo ni tiempo ni ganas. Así que voy a poner una serie de librerías que tengo pendiente de probar y que creo reducirían la brecha idiomática entre los científicos de datos, los ingenieros y los arquitectos de datos y big data (si es que en tu organización tienes la suerte de que exista este perfil)

Entrenar con sparklyr, predecir con spark

Vivimos en la era del big data según dicen por esos lares, también tengo algún amigo que dice que el big data son los padres, no le falta razón. La mayoría de las cosas que hacemos se pueden hacer sin big data, porque en primer lugar ni en el 95 % de las veces se requiere y porque en el 5% restante podríamos hacer muestreo. Si no hay señal en 20.