Creo que darán que hablar (los GRF)

El artículo, el código y el paquete.

6 de julio de 2017 · Carlos J. Gil Bellosta

Que Magritte me perdone

¿Qué es %>%? ¿Para qué sirve? Hoy he hecho la presentación más sesgada y parcial del operador para neófitos en R: library(magrittr) 8 %>% sin %>% exp exp(sin(8)) (Es que madrugar me pone de mal humor y saca mi más sincero yo de dentro de mí mismo).

5 de junio de 2017 · Carlos J. Gil Bellosta

qgraph para representar grafos que son correlaciones que son vinos

Me vais a permitir que escriba una entrada sin mayores pretensiones, inspirada en y adaptada de aquí y que sirva solo de que para representar correlaciones entre variables podemos recurrir a los grafos como en library(qgraph) wine.quality <- read.csv("https://goo.gl/0Fz1S8", sep = ";") qgraph(cor(wine.quality), shape= "circle", posCol = "darkgreen", negCol= "darkred", layout = "groups", vsize=13) que pinta mostrando resumidamente cómo se relacionan entre sí determinadas características de los vinos y cómo en última instancia influyen en su calidad (qlt).

15 de marzo de 2017 · Carlos J. Gil Bellosta

Wikipedia + prophet

El otro día escribí sobre visitas a la Wikipedia. El otro día (posiblemente otro) oí hablar de prophet. Hoy con library(wikipediatrend) library(prophet) library(ggplot2) visitas <- wp_trend( "R_(lenguaje_de_programaci%C3%B3n)", from = "2010-01-01", to = Sys.Date(), lang = "es") mis.visitas <- visitas[, c("date", "count")] colnames(mis.visitas) <- c("ds", "y") pasado <- mis.visitas[1:1500,] m <- prophet(pasado) futuro <- make_future_dataframe(m, periods = nrow(mis.visitas) - 1500) prediccion <- predict(m, futuro) pred.plot <- plot(m, prediccion) pred.plot + geom_line(data = mis.visitas[1501:nrow(mis.visitas),], aes(x = ds, y = y), col = "red", alpha = 0.2) + xlab("fecha") + ylab("visitas") + ggtitle("Predicción de visitas a la página de R\nen la Wikipedia con prophet") construyo que muestra la predicción del número de visitas a la página de R en la Wikipedia basada en las primeras 1500 observaciones de la serie. Para las restantes, el gráfico muestra tanto los valores predichos como los reales (en rojo pálido). ...

3 de marzo de 2017 · Carlos J. Gil Bellosta

Probando hunspell para el procesamiento de texto en español

El paquete hunspell de R permite procesar texto utilizando como soporte la infraestructura proporcionada por Hunspell, el corrector ortográfico que subyace a muchas aplicaciones en R. Existe una viñeta que ilustra el uso del paquete pero, como siempre, en inglés. En español las cosas son parecidas pero, como siempre, nunca exactamente iguales. En esta entrada, por lo tanto, voy a repasar partes de la viñeta aplicándolas a nuestra tan frecuentemente maltratada mas por ello no menos querida por algunos como yo (pausa) lengua. ...

20 de febrero de 2017 · Carlos J. Gil Bellosta

Habiendo mónadas, ¿quién quiere callbacks?

Nunca me he visto en la tesitura de tener que usar callbacks porque no son mi guerra. Pero por lo que he oído de la gente que sabe mucho más que yo, son uno de esos infiernos de los que hay que huir con el mismo pavor que de los fors, los ifs, los elses (¡argggg! ¡he escrito else!) y los whiles. Una pequeña maravilla teórica que me ha hecho replantearme la absoluta inutilidad de aquello que estudié en Álgebra III (funtores y demás) son las mónadas. ...

24 de noviembre de 2016 · Carlos J. Gil Bellosta

Detrás de la detección de anomalías en series temporales

Por azares, me ha tocado lidiar con eso de la detección de anomalías. Que es un problema que tiene que ver con dónde colocar las marcas azules en El anterior es el gráfico construido con los datos de ejemplo del paquete AnomalyDetection. De hecho, así: library(AnomalyDetection) data(raw_data) res <- AnomalyDetectionTs(raw_data, max_anoms=0.02, direction='both', plot=TRUE) res$plot Aparentemente, AnomalyDetectionTs hace lo que cabría sospechar. Primero, una descomposición de la serie temporal, tal como myts <- raw_data$count myts <- ts(myts, start = c(1, 841), frequency = 24 * 60) plot(stl(myts, "per")) es decir, ...

16 de noviembre de 2016 · Carlos J. Gil Bellosta

¿Cuánto tarda en ejecutarse este código?

Es: library(future) plan(multiprocess, workers = 4) system.time({ a1 <- future({Sys.sleep(7); 1}) a2 <- future({Sys.sleep(1); 1}) a3 <- future({Sys.sleep(1); 1}) a4 <- future({Sys.sleep(1); 1}) a5 <- future({Sys.sleep(1); 1}) a6 <- future({Sys.sleep(1); 1}) a7 <- future({Sys.sleep(1); 1}) res <- sapply(list(a1, a2, a3, a4, a5, a6, a5), value) }) Piensa antes las posibles opciones: ~8 segundos: ejecuta primero a1-a4 en 7 segundos y luego a5-a7 en un segundo adicional. ~7 segundos: ejecuta primero a1-a4, pero cuando acaban a2-a4, lanza a5-a7, que terminan antes que a1 ¿Otras? Vosotros mismos. (Pensad que si la respuesta fuese ~7 segundos, podría hacerse esto directamente con future).

11 de noviembre de 2016 · Carlos J. Gil Bellosta

R en paralelo (pero ahora, con futuros)

Esta entrada extiende y mejora una homónima de 2014. El problema de entonces consistía en calcular por separado y en paralelo objetos A, B y C para combinarlos después. Cuando, por supuesto, el cálculo de A, B y C es pesado. El muy reciente paquete future incorpora a R un mecanismo disponible en otros lenguajes de programación: un cierto tipo de datos, los futuros, que contienen promesas de valores que se calculan fuera del hilo principal del programa. Se usan, por ejemplo, para realizar llamadas a APIs, operaciones de IO o (y esto es más pertinente para usuarios de R) cálculos que llevan su tiempico. ...

4 de noviembre de 2016 · Carlos J. Gil Bellosta

Selección de variables con bosques aleatorios

Desde el principio de mis tiempos he seleccionado variables relevantes como subproducto de los árboles primero y de los bosques aleatorios después. Cierto que he hecho casi inconfesables incursiones en los métodos stepwise, pero han sido marginales y anecdóticas. La idea es casi siempre la misma, se haga a mano o con ayuda de paquetes ad hoc: las variables importantes tienden a aparecer en el modelo (o submodelos), las otras no. Todo se reduce a contar y ponderar. Hay que discurrir un poco más cuando se sospecha (o consta) que existen variables altamente correlacionadas. ...

6 de septiembre de 2016 · Carlos J. Gil Bellosta