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

Dizque al sexto mes... pero ¿y los datos?

He leído esto, que trata de lo distinta que es a la izquierda y a la derecha de la línea roja punteada. La historia contada desde las posterioris basadas en datos difiere de la apriorística (recordad: ideología = priori). En concreto Reconoceréis una aplicación de causalImpact y lo que significa el gráfico está comentado en todas partes. Código y datos, por mor de la reproducibilidad, aquí.

31 de mayo de 2017 · Carlos J. Gil Bellosta

Aquellos que ignoran la estadística etcétera

Ayer asistí a una charla sobre errors. Brevemente (porque está estupendamente explicado, motivado y documentado por su autor, al que aprovecho la ocasión para saludar), hace esto: library(errors) valores <- unlist(list(a = 1, b = 2, c = 3)) vars <- c(1, 1, 1) # varianzas de esos datos/medidas sds <- sqrt(vars) # errores x <- valores errors(x) <- sds format(x[1] * sin(x[2])^3, notation = "plus-minus", digits = 3) #[1] "0.75 +/- 1.28" Y nuestro viejo, clásico, manido, infrautilizado, semidesconocido mas no por ello menos querido método delta, ¿para qué existe en lugar de (como elucubraba el filósofo), simplemente, no existir? ¿Para qué otra cosa sino para aprenderlo me levanté yo aquella fría mañana del 94 sino para contemplarlo proyectado de diapositivas manuscritas de acetato? ¿Fue en vano? ...

24 de mayo de 2017 · Carlos J. Gil Bellosta

¿Soy un dinosauRio? Sobre las novedades de R

Trato de estar abierto a lo nuevo. Tantos años soportando dinosaurios me han vacunado contra el conservadurismo tecnológico. De hecho, me produce arcadas. La experiencia, no obstante, me ha hecho permeable al efecto Lindy, lo que me da ocasión de saludar a mis amigos emaqueros. Las cosas cambian y en R estamos viviendo una especie de revolución. Mi argumento, para impacientes, es que: Es más superficial que sustancial: es azúcar sintáctico. En ciertos aspectos, no es positiva y mina ciertos principios valiosos que hicieron de R un lenguaje popular. Cuento todo esto a raíz de una reseña a un novedoso curso de R. Lo es en tanto que, dicen: ...

16 de mayo de 2017 · Carlos J. Gil Bellosta

Me too, me too!

Las alturas corresponden a una cierta potencia de la población residente en la correspondiente rejilla. Los datos son del SEDAC (Socioeconomic Data and Applications Center, Universidad de Columbia) y se pueden bajar gratis si te registras y rellenas un cuestionario tontaina. El código, library(ggplot2) options(expressions = 10000) dat <- read.table("dat/espp00ag.asc", skip = 6) dat <- as.matrix(dat) dat <- data.frame(y = as.numeric(row(dat)), x = as.numeric(col(dat)), pop = as.numeric(dat)) peninsula <- dat[dat$x > 200,] peninsula <- peninsula[peninsula$y < 250,] res <- ggplot() for (i in 1:max(peninsula$y)){ tmp <- peninsula[peninsula$y == i,] tmp$pop <- tmp$pop^0.3 res <- res + geom_polygon(data = tmp, aes(x = x, y = pop - y), fill = "white", col = "black", size = 0.1) res <- res + geom_path(data = tmp, aes(x = x, y = pop - y), size = 0.2) res <- res + geom_hline(data = tmp, aes(yintercept = -y), col = "white") } res + theme(axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.title.x=element_blank(), axis.title.y=element_blank(), legend.position="none", panel.background=element_blank(), panel.border=element_blank(), panel.grid.major=element_blank(), panel.grid.minor=element_blank(), plot.background=element_blank()) Nota: se me olvidó escribir en el cuerpo lo que anunciaba el título, i.e., que esta entrada está inspirada (fusilada, de hecho) en lo esencial de otras previas.

12 de mayo de 2017 · Carlos J. Gil Bellosta

¿Cómo fue R antes de R?

La década le ha dejado nuevas sintaxis a R. Algunos, precarcas, fruncimos el entrecejo. Esta entrada nos administrará un poco de medicina histórica. R es una reimplementación (libre, para más señas) de S. La sintaxis actual de S (que es la del R de toda la vida) es del año 88. Antes, durante los 80, era otra. Pero es difícil dar con ella en internet. Pero no imposible. El libro S: An Interactive Environment for Data Analysis and Graphics, de Chambers y Becker, ha sido escaneado por Google y, aunque no completo, nos permite echar un vistazo a algunas páginas, las suficientes para no hacer carraspear desaprobatoriamente al copyright. ...

8 de mayo de 2017 · Carlos J. Gil Bellosta

Curso de introducción a R en Gijón

Tenía que haberlo publicado antes, pero… ahí va: Esta semana se va a impartir un curso de introducción a R en el que participo. Está organizado por la UNED y se puede asistir presencialmente (si estás en Gijón esos días) o en remoto desde cualquier parte. La info, aquí.

2 de mayo de 2017 · Carlos J. Gil Bellosta

Experimentos con "extremely small data": la media muestral de pocas betas

Aquí, contracorriente. Dejamos aparcado el big data y le damos a lo que nos da de comer. Entre otras cosas, este pequeño experimento con muy pequeños datos (¿tres?). La aplicación es real. Y los datos pequeños porque son carísimos. Se puede suponer que tienen distribución beta de parámetros desconocidos. Nos interesa la media muestral de unas pocas observaciones: dos, tres, cuatro,… En particular, qué distribución tiene. Si fuesen muchos, podríamos aplicar el teorema central del límite (que funciona estupendamente incluso con valores no muy grandes). Pero la suma de pocas observaciones beta no tiene una distribución con nombre (que yo sepa). Pero podemos usar un viejo truco (parecido al de la aproximación de Welch para el número de grados de libertad de la prueba de Student cuando las varianzas son desiguales): ...

12 de abril de 2017 · Carlos J. Gil Bellosta

Pues sí, puede fabricarse uno para España

Es responde a mi entrada de la semana pasada y se lo debemos a la gentileza de Sergio J. El código, con mínimas modificaciones mías (para automatizar la descarga de los datos) es library(pxR) library(dplyr) library(tidyr) library(ggplot2) #---- Carga y transformacion de datos download.file("http://www.datanalytics.com/uploads/3199.px", "3199.px") pob <- read.px("3199.px", encoding = "latin1") pob <- as.data.frame(pob) pob$Sexo <- NULL pob$Periodo <- as.numeric(as.character(pob$Periodo)) pob <- separate(pob, Provincias, into = c("id_provincia", "provincia"), sep = 3) pob$fecha <- as.Date(paste0(pob$Periodo, "-12-31")) pob <- subset(pob,as.numeric(id_provincia)<=50) #---- Plot bl <- sapply(1:22, function(n) paste(rep(" ",n),collapse="")) pob$provincia.reorder <- factor( pob$provincia, levels = c("Coruña, A","Lugo","Asturias","Cantabria","Bizkaia","Gipuzkoa","Navarra",bl[1:2], "Pontevedra","Ourense","León","Palencia","Burgos","Araba/Álava" ,"Huesca","Lleida","Girona", bl[3:4],"Zamora","Valladolid","Soria","Rioja, La","Zaragoza","Tarragona","Barcelona", bl[5:6],"Salamanca","Ávila","Segovia","Guadalajara","Teruel",bl[7:8], bl[9:10],"Cáceres","Toledo","Madrid","Cuenca","Castellón/Castelló",bl[11],"Balears, Illes", bl[12:13],"Badajoz","Córdoba","Ciudad Real","Albacete", "Valencia/València",bl[14:15], bl[16:17],"Huelva","Sevilla","Jaén","Murcia","Alicante/Alacant",bl[18:19], bl[20:21],"Cádiz","Málaga","Granada","Almería",bl[22],"Palmas, Las","Santa Cruz de Tenerife")) ggplot(pob, aes(x = fecha, y = value)) + geom_line() + facet_wrap(~ provincia.reorder, ncol=9,drop = F, strip.position="bottom") + labs(title = "Evolución de la edad media por provincias en España (1975-2016)", y="Edad Media") + theme_classic() + theme(axis.text.x = element_blank(), strip.background=element_blank(), axis.line=element_blank(), axis.ticks=element_blank()) Se aceptan modificaciones y mejoras, por supuesto. Y si alguien quiere dedicarle el tiempo necesario para crear un paquete en R que lo generalice, creo que será bienvenido por la comunidad.

10 de abril de 2017 · Carlos J. Gil Bellosta

¿Podría fabricarse uno para España?

Me refiero a algo similar a (referencia): Lo ideal sería crear una función compatible con el sistema de facetas de ggplot2 con nombre, p.e., facet_spain que permitiese disponer cualquier tipo de gráfico en una retícula similar. No particularmente difícil, pero sí, seguro, utilísimo. ¿A nadie le tienta el proyecto? [Me encanta el impersonal de “podría fabricarse…”. ¡Es como tan de tirar la piedra y esconder la mano!]

7 de abril de 2017 · Carlos J. Gil Bellosta