Una estupenda introducción intermedia a data.table

Jan Gorecki ha resumido las soluciones a las cincuenta preguntas más populares sobre el paquete data.table de R en Stack Overflow y las ha resumido en forma de tutorial aquí. Muy recomendable. Muy recomendable también data.table. Aunque me temo que el hadleyverse, y por razones que nada tienen que ver con la calidad de la cosa, no van a dejar de él, a medio plazo, ni las raspas.

8 de julio de 2016 · Carlos J. Gil Bellosta

R I/O (o rio)

rio es otro de esos desasosegantes paquetes de R. rio contiene esencialmente tres funciones, import, que lo lee todo export, que lo escribe todo y convert, que transforma un fichero de un formato a otro. Según su documentación, uno puede hacer cosas como export(mtcars, "mtcars.csv") export(mtcars, "mtcars.rds") export(mtcars, "mtcars.sav") para guardar mtcars en cualquiera de los formatos indicados por la extensión y luego x <- import("mtcars.csv") y <- import("mtcars.rds") z <- import("mtcars.sav") para importarlos sin complicaciones de separadores, encabezamientos, etc. Además, ya puestos, ...

7 de julio de 2016 · Carlos J. Gil Bellosta

GLMs con prioris (casi) a voluntad

Esto que cuento hoy puede ser muy útil: cómo mejorar los GLMs mediante la introducción de prioris (casi) a voluntad sobre los coeficientes. Usando el paquete arm de R, claro. De momento y porque aún tengo sucios los datos sobre los que me gustaría aplicar el modelo, extraeré un ejemplo de la ayuda de la función principal del paquete, bayesglm. Primero, preparo unos datos: n <- 100 x1 <- rnorm (n) x2 <- rbinom (n, 1, .5) b0 <- 1 b1 <- 1.5 b2 <- 2 y <- rbinom (n, 1, invlogit(b0+b1*x1+b2*x2)) Comenzamos con un glm de toda la vida. ...

6 de julio de 2016 · Carlos J. Gil Bellosta

Este NO es el mapa de la violencia de género en España

A pesar de que el titular bajo el que aparece dice lo contrario, no es el mapa de la conocida como violencia de género en España. Tasas del 10-20% significarían que en mi entorno tendrían que existir bastantes casos cuando, al contrario, no me consta ninguno. En el cuerpo de la noticia se lee que las tasas no son por cien sino por diez mil (si es que no son por cien mil: puestos a hacer bailar los ceros, ¿quién sabe?). ...

5 de julio de 2016 · Carlos J. Gil Bellosta

Gestión de la mendacidad encuestoelectoral: los números

Continuando con la entrada anterior, ahora, números. Primero, el planteamiento (cuatro partidos, etc.): probs <- c(4, 3, 2, 1) probs <- probs / sum(probs) partidos <- letters[1:length(probs)] Nos hará falta más adelante library(plyr) library(rstan) library(ggplot2) library(reshape2) Sigo con el proceso de muestreo. Reitero: cada encuestador enseña al encuestado una tarjeta al azar donde aparece el nombre de dos partidos y le pregunta si ha votado (o piensa votar) a alguno de ellos. n <- 3000 resultados <- data.frame( tarjeta = sample(1:nrow(tarjetas), n, replace = T), partido = sample(partidos, n, prob = probs, replace = T)) resultados <- data.frame( tarjetas[resultados$tarjeta,], partido = resultados$partido) resultados$coincide <- resultados$partido == resultados$partido1 | resultados$partido == resultados$partido2 # proporciones reales en la muestra props.muestra <- table(resultados$partido) / nrow(resultados) # resultados agregados (por tarjeta) resultados.agg <- ddply( resultados, .(partido1, partido2), summarize, total = length(partido1), coincidencias = sum(coincide)) Y ...

4 de julio de 2016 · Carlos J. Gil Bellosta

Gestión de la mendacidad encuestoelectoral

Lo de que la gente que miente al ser encuestada se ha esgrimido frecuentemente en los últimos días. Inspirado en esto, se me ha ocurrido (posiblemente reocurrido: es fácil que la idea sea conocida, sobre todo si resulta ser buena) el siguiente procedimiento para la realización de encuestas electorales. El encuestador va provisto de una colección de cartulinas en las que aparecen parejas de nombres de partidos políticos. El encuestador muestra al encuestado una cartulina al azar dentro de su colección. El encuestador pregunta al encuestado si ha votado (o piensa votar) a alguno de ellos. Se registran los partidos mostrados y la respuesta, positiva o negativa, del encuestado. Con una versión del procedimiento que describo en la entrada que enlazo más arriba, se podrían redescubrir las opciones de la población subyacente, aun ignorando el de cada uno de los encuestados. No sé cuál sería (si no se me adelanta nadie, igual la hago yo) el procedimiento, pero seguro que no es tan complicado como para que Stan no pueda con ello. ...

30 de junio de 2016 · Carlos J. Gil Bellosta

Por una vez, accedo a hablar de algo de lo que no sé

Me piden que opine sobre lo de las encuestas electorales y su error. Vaya por delante mi confesión de que de eso sé poco. Soy matemático, no estadístico, y uno de los mayores huecos (¿simas?) de mi formación estadística tiene que ver con todo lo relativo al muestreo. Así que, con la valentía que aporta la ignorancia, procedo. El primer gran problema con las encuestas electorales es que confunden países con urnas y gente con bolas de colores. Si en una urna hay N bolas (de colores distintos) y queremos estimar su número mediante una extracción de n bolas, existe un margen de error debido a que en lugar de ver todos los datos uno ve únicamente una muestra. ...

29 de junio de 2016 · Carlos J. Gil Bellosta

R es un vago

Si creo la función foo <- function(a,b) a*a + b y la llamo mediante foo(1 + 1,3) pueden ocurrir dos cosas: o bien que R precalcule 1+1 y la función ejecute 2 * 2 + 3 o bien que la función ejecute directamente (1+1)*(1+1)+3. Pero, ¿qué es lo que hace realmente? Si escribimos f1 <- function(x){ print("Soy f1") x } f2 <- function(x){ print("Soy f2") x } foo(f1(2), f2(3)) obtenemos > foo(f1(2), f2(3)) [1] "Soy f1" [1] "Soy f2" [1] 7 lo que significa que f1 ha sido llamada una única vez. Es decir, R resuelve sus argumentos antes de aplicar la función. Pero hay más: ...

27 de junio de 2016 · Carlos J. Gil Bellosta

GBM (III): Más allá de las pérdidas cuadráticas

Liberados del estrecho ámbito de nuestra original mentira sugerente gracias a la relación que descubrimos entre residuos y gradientes cuando las pérdidas son cuadráticas podemos adentrarnos en ámbitos más extensos. Lo que discutimos del gradiente tiene una interpretación fácilmente inteligible en el caso de pérdidas cuadráticas. Pero ni la pérdida de interpretabilidad nos impide extender el razonamiento de la entrada anterior a funciones de pérdida distintas de la cuadrática siempre que podamos calcular un gradiente. ...

24 de junio de 2016 · Carlos J. Gil Bellosta

Unos lo creen mucho; otros, poco; pero nadie sabe cuánto

Imaginad que tenéis una empresa que un año, después de pagar insumos, salarios, tasas, IVAs, etc. tiene un beneficio de 1000 euros. La pregunta a la que trata de responder esta entrada es la siguiente: ¿por valor de cuánto podréis comprar bienes y servicios personales? En primer lugar, ese beneficio paga el impuesto de sociedades, un 25% este año en España. Quedan 750 euros. Como dueño, te concedes esos beneficios a través de dividendos. Que entran en tu IRPF y por los que hay que pagar alrededor del 20% (podría ser un 19% o un 23% dependiendo de su cuantía total). Quedan 600 euros. ...

23 de junio de 2016 · Carlos J. Gil Bellosta