Transformar todos los factores a carácter de mi data frame de R

En muchas ocasiones no quiero factores en mi dataframe cuando trabajo con R. Y estoy en mi derecho de poner una entrada sobre una de las tareas que más realizo y que siempre se me olvida el como la realizo, tardo menos en buscarlo en www.analisisydecision.es que entre mis programas:

df<- data.frame(lapply(df, as.character), stringsAsFactors=FALSE)

Todos los elementos factor ahora son character.

Mapa del COVID-19 por Comunidades Autónomas con R (más #rstats)

Estoy muy activo en twitter con el #covid-19 estos días y eso está dando lugar a algunas entradas en el blog. Sin embargo, he parado esa actividad porque el número de casos no me parece el indicador adecuado para medir la verdadera incidencia de la pandemia. Empiezo a tener posibles casos entre personas conocidas y no se realiza ningún test, permanecen en casa y son casos no informados. Sin embargo, quería que esta entrada sirviera de homenaje a la gente de Datadista que está recogiendo datos y realizan un seguimiento del número de camas ocupadas, uno de los mejores indicadores. Además sigo mi labor formativa con Rstats, hoy toca:

Evolución del número de casos de coronavirus

Seguimos a vueltas con la (ya) pandemia y R y hoy quería traeros unos buenos ejemplos de uso de la librería dplyr para preparar datos. Se trata de ver una evolución del número de casos diarios para saber en qué punto tanto España como Italia pueden frenar el crecimiento de los casos de coronavirus, se trata de crear este gráfico:

Se observa como países como China o Korea vivieron un fuerte crecimiento que ahora se ha transformado en una caída del número de casos de coronavirus, pero parece que Irán ha estabilizado en 1000 casos diarios pero Italia y España siguen en fase de crecimiento por lo que no se espera que el comportamiento sea similar a China o Korea y es probable que el número de casos siga aumentando.

Seguimiento del coronavirus en España por Comunidad Autónoma. Extraer información de un PDF con R

Una entrada anterior del blog ha dado lugar a una conversación interesante en twitter:

Evolución del número de casos de #coronavirusEspana una analogía con Italia https://t.co/GhWtlFL3Df

— Raul Vaquerizo (@r_vaquerizo) March 11, 2020

Es necesario obtener los datos del Ministerio y estos datos se hayan en un pdf (https://www.mscbs.gob.es/profesionales/saludPublica/ccayes/alertasActual/nCov-China/documentos/Actualizacion_41_COVID-19.pdf) Bien, tendremos que leer el pdf y crear un data frame para poder trabajar con estos datos. Para leer el pdf vamos a emplear el paquete de R tabulizer y la función extract_table pero necesitamos «algo de talento».

Estimación de la evolución de casos del coronavirus en España

Ayer escribrí sobre la obtención de los datos del coronavirus con R y después me disponía ha escribir sobre modelos de regresión no lineal, hacer una estimación del coronavirus en España,… Pero estuve hablando con una amiga residente en Italia y allí el número de casos está dos semanas por delante de España, bueno, dos semanas exactamente no, 10 días:

library(lubridate)
library(ggplot2)
library(dplyr)
library(reshape2)
datos <- read.csv2("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv",
                   sep=',')

fechas <- seq(as.Date("2020/01/22"), as.Date(today()-1), "days")
fechas <- substr(as.character.Date(fechas),6,10)
names(datos) <- c("Provincia", "Pais","Latitud", "Longitud", fechas)

esp_ita <- data.frame(fecha=fechas)
esp_ita <- cbind.data.frame(esp_ita, Espania = t(datos %>% filter(Pais=="Spain") %>% select(fechas)))
esp_ita <- cbind.data.frame(esp_ita, Italia = t(datos %>% filter(Pais=="Italy") %>% select(fechas)))

p <- ggplot(esp_ita, aes(x=fecha)) +
  geom_line(aes(y=Espania, group = 1, color="España")) +
  geom_line(aes(y=Italia, group = 1, color="Italia")) +
  scale_color_manual(values = c("España" = "red", "Italia" = "blue")) +
  xlab("") + ylab("")
p

Seguir los datos del coronavirus en España con Rstats

No he podido evitarlo, os traigo unas líneas de código en R para seguir la evolución del coronavirus en España (podéis filtrar cualquier país). Me hubiera gustado hacer un scraping de la página https://www.worldometers.info/coronavirus/ sin embargo me ha parecido más sencillo leer directamente los datos del repositorio de la Universidad Jonh Hopkins (https://github.com/CSSEGISandData/COVID-19) creo que la actualización es diaria. También existe ya un paquete en R denominado coronavirus pero su funcionamiento deja que desear. Por mi parte os ofrezco para seguir su evolución el siguiente script:

Truco Excel. Calculadora desde la barra de herramientas de acceso rápido

Hace tiempo que no ponía trucos de Excel y el de hoy es muy sencillo pero que a mi me ha sido de especial utilidad, un acceso a la calculadora para esos cálculos rápidos que siempre he hecho con la calculadora de sobre mesa. Se trata de añadir un acceso a la Calculadora de Windows desde la barra de herramientas de acceso rápido. Vamos a personalizar la barra:

Y desde ese menú nos vamos a Más comandos. Se abre un cuadro de diálogo que nos sugiere elementos a añadir pero la calculadora saldrá si queremos ver todos los elementos disponibles:

Cloud words con R. Trabajar con la API del Europe PMC con R

Hace años ya tuvimos nubes de palabras en el blog y ya era hora de ir actualizando algunas cosas. Y además quería aprovechar y presentaros un paquete de R que nos permite consultar la API del Europe PMC. Para quien no sepa que es el Europe PMC podemos decir que es un un buscador de documentos y artículos científicos (que ahora todo el mundo molón llama papers) y que tiene una API desde la que podemos acceder desde R mediante el paquete europepmc.

Gráficos de calendarios con series temporales

Cuando se realizan gráficos de series temporales se emplean gráficos de líneas donde el eje X contiene la fecha y el eje Y contiene el valor a representar. Hoy quiero traer al blog otra forma de representar series temporales, los gráficos de calendario y su realización con R. Para ilustrar el ejemplo vamos a emplear las cotizaciones históricas del índice bursatil IBEX35:

require(quantmod)
require(ggplot2)
require(reshape2)
require(dplyr)
library(lubridate)

# Obtenemos las cotizaciones del IBEX 35 desde 2010
getSymbols('^IBEX', from = '2010-01-01')

# data frame de trabajo
df<-data.frame(date=index(IBEX),IBEX)

Mediante quantmod extraemos las cotizaciones del IBEX desde 2010 y creamos un data frame de trabajo que llamamos df. Vamos a realizar dos tipos de gráficos, un mapa de calor por años, meses, semanas y días y un calendario de un año puntual.

El análisis de supervivencia en R para segmentar el churn

El análisis de supervivencia es uno de los olvidados por el Machine Learning y la nueva forma de ver el oficio. A la regresión logística si la damos algo de recorrido porque aparece en scikit-learn (con sus cositas), sin embargo, el análisis de supervivencia no tiene ese cartel porque en el momento que trabajas con un gran número de variables estos modelos «empiezan a echar chispas». Sin embargo ofrecen una serie de gráficos y resultados que más allá de la estimación nos describen problemas y pueden servirnos para segmentar poblaciones en base a la duración hasta la ocurrencia de un evento.

Me rindo, es necesario trabajar en Agile

Imagen de previsualización de YouTube

«Agile sounds good» y representa todo eso que critico. Tenía compuesta y preparada una canción que versiona el «Me cago en el amor» de Tonino Carotone, «Me cago en el Agile» se llamaba. ¿Por qué este cambio de opinión tan radical? Porque no se trabaja de forma horizontal, se trabaja de forma vertical y cada uno hace la guerra por su cuenta. Me voy a mi terrenoAgile Analytics

Obteniendo los parámetros de mi modelo GAM

Vimos como los modelos GAM iban más allá del GLM porque en el momento de obtener los parámetros asociados al modelo de un factor nos proponían, en vez de una función lineal una función de suavizado no paramétrica para aquellos factores susceptibles de transformar en variables numéricas ordinales con un sentido determinado. Se trabajó con un modelo de riesgo con una sola variable como era la edad y al sumarizar el modelo no era posible obtener los parámetros en la salida. En último término nuestra intención con este tipo de modelos es obtener esos parámetros para transformarlos en relatividades. Qué sentido tiene obtener un buen modelo para Negocio si su resultado no se puede expresar en términos de incrementos o descuentos, en términos de relatividades.

Modelos GAM con R. Dejando satisfechos a los equipos de negocio

Los modelos GAM (Generalized Additive Model) son el conjuntos de modelos que tenemos los estadísticos, actuarios, data scientist o como nos denominen en el momento que leas esto para dejar a nuestros equipos de negocio contentos con los resultados de nuestro modelo GLM. No voy a entrar en los aspectos teóricos de este tipo de modelos, hay documentación como esta que os puede ayudar. Por qué se quedan contentos los equipos de negocio, porque nos ayudan a dar sentido a los modelos. Retomemos un ejemplo que vimos en otra entrada del blog: https://analisisydecision.es/los-parametros-del-modelo-glm-como-relatividades-como-recargos-o-descuentos/ en esta entrada presentamos como el resultado de un modelo GLM se transforma en una relatividad, en un mecanismo para ofrecer recargos y descuentos.