Gráficos en R con símbolos arbitrarios

Hace no mucho, en un blog hermano, se habló de cómo podían utilizarse símbolos distintos en los gráficos de R. También hablé yo de funcionarios y renta per cápita. Ahora combino ambas entradas y algo más de mi cosecha para mostrar un gráfico hecho con R utilizando símbolos arbitrarios (las banderas de cada país). El secreto de cómo lo he hecho (y el código completo, claro) lo revelaré la semana que viene. Entre tanto, ¿a alguno de mis lectores se le ocurre cómo pudo haberse hecho?

18 de junio de 2010 · Carlos J. Gil Bellosta

Algoritmos genéticos para la caracterización de máximos en random forests

En minería de datos se buscan modelos que permitan hacer predicciones acerca del comportamiento de los sujetos del estudio. Pero, típicamente, cuanto más complejas son las técnicas, menos intuición ofrecen acerca del porqué de la predicción, pierden inteligibilidad. Existe una omnipresente tensión entre inteligibilidad (una propiedad altamente deseable, incluso, en ocasiones, por requisito legal) y precisión. Un modelo puede resumir mejor o peor una colección enorme de observaciones, pero en ocasiones los mismos modelos son demasiado complejos o herméticos como para ofrecer una interpretación plausible de los datos: ¿qué caracteriza a las observaciones para las que mi modelo predice los valores más altos (o bajos)? ...

16 de junio de 2010 · Carlos J. Gil Bellosta

Agregador de noticias sobre R en español

Me es grato anunciar que está disponible (una versión beta de) un agregador de noticias sobre R en español. Ha sido desarrollado con el objetivo de proporcionar a la comunidad de usuarios un punto de acceso único a cuantas noticias sobre R se publiquen en la blogosfera en español. Es equivalente a su versión en inglés. También está disponible como RSS. Contenido agregable Actualmente, el motor de agregación lista entradas en blogs que: ...

3 de junio de 2010 · Carlos J. Gil Bellosta

De números y funcionarios

El otro día apareció una noticia en El País sobre los funcionarios en España y el resto de Europa en el que aparecía este gráfico. Como me resultaron curiosos los datos relativos a nuestros vecinos, me entretuve en sacarles algo de punta. Así que fui a la Wikipedia y asocié a cada país su renta per cápita PPA (son datos del 2008, creo) y obtuve esto: Por respeto a la sagacidad de mis lectores (por ser lectores y míos los entiendo bien armados intelectualmente) me abstengo de realizar comentarios.

31 de mayo de 2010 · Carlos J. Gil Bellosta

Regresión por cuantiles en R y SAS

Hace un tiempo, con la aburridora perspectiva de un largo viaje en metro hasta mi casa ensombreciendo mi futuro más inminente, decidí regalarme algún tipo de amena lectura. A tal fin, imprimí un articulillo que, bajo la perspectiva de SAS, me introducía a una técnica que se vino a mí como por azar. O, bajo otro punto de vista, una técnica que, también por azar, había esquivado hasta tal fecha un encontronazo con mi husmeadora curiosidad. ...

18 de mayo de 2010 · Carlos J. Gil Bellosta

¡Hasta Microsoft!

El otro día incurrí de nuevo en la tan habitual como aburridora conversación acerca del papel que pueda jugar R en la empresa; más propiamente, tal vez, en determinadas áreas de determinadas empresas. Carpetovetónico él, encumbrado a un otero mesetario, lo circunscribía al impermeable mundo académico español. Puede, sí, que la montaña no venga a Mahoma motu proprio; pero no hay que olvidar que a Mahoma no le faltan cumbres a las que encaramarse. ...

10 de mayo de 2010 · Carlos J. Gil Bellosta

Datatables: tablas con búsqueda binaria en R

No hace mucho me enfrenté con un problema en el trabajo. Quería cruzar dos tablas, una de algunos miles de millones de registros y otra de algunos cientos de miles para, simplemente, contar el número de filas finales que aparecían por fecha. Cada una de las tablas tenía algunos filtros y agregaciones; el cruce final se realizaba sobre las subconsultas resultantes. El gestor de bases de datos que utilizamos, Teradata (sin comentarios), no podía con el cruce: las decisiones que tomaba internamente el presunto optimizador de consultas conducían inexorablemente a un error de espacio. ...

9 de mayo de 2010 · Carlos J. Gil Bellosta

R, ¿la herramienta de minería de datos más utilizada?

Pues eso es lo que parece indicar esta encuesta en el preciso momento en el que escribo. Cada uno le podrá otorgar la validez que desee, pero algún tipo de repercusión tendrá cuando: Hace unos años, cuando trabajaba para cierto fabricante de software, nos pasaron un correo invitándonos a emitir un voto en la que se realizó ese año (el portal realiza una encuesta análoga con periodicidad anual). Además, desde nuestras casas para que no se cancelasen por abusar del mismo rango de IPs. Hoy me ha llegado un correo de otro fabricante de software en cuya lista de distribución participo con idéntico objetivo. Por lo anterior, por el impacto mediático, por todo, invito a mis lectores a que participen en la encuesta (hasta que acabe el plazo, se vota en la página del enlace, en la parte de abajo).

5 de mayo de 2010 · Carlos J. Gil Bellosta

Para que copien, peguen y disfruten: addenda

Ayer dejé publicadas unas cuantas líneas de R y la promesa de contar de qué iba la cosa. Adelantando acontecimientos, he recibido comentarios públicos y privados al respecto que en esta entrada trataré de contestar. El código era, una vez mínimamente desofuscado (no quería dar demasiadas pistas): vertice.x <- c(0,1,2) # 1 vertice.y <- c(0,1,0) # 2 muestra <- sample( 1:3, 100000, replace = T ) # 3 iter <- function( ini, v ){ # 4 out <- rep( ini, length(v) ) # 5 for( i in 2:length(v) ) out[i] <- ( out[i-1] + v[i] ) / 2 # 6 out } plot( iter( runif(1), v.x[ muestra ] ), iter( runif(1), v.y[ muestra ] ), pch = "." ) He aquí lo que hace: Asigna a una variable las coordenadas x de un triángulo. Asigna a otra variable las coordenadas y del triángulo. Selecciona una muestra aleatoria de tamaño 100k (con reemplazo, obviamente) de los vértices de dicho triángulo. Crea una función, iter, que calcula iterativamente una sucesión de puntos. La función genera una sucesión de puntos comenzando por uno al azar. Por eficiencia, es mejor asignar espacio previamente. En este caso es un vector de longitud igual al de la muestra de puntos. El bucle calcula de hecho la sucesión de puntos. Cada uno de ellos es el punto medio entre el anterior y el vértice (elegido al azar, recordemos) correspondiente. Por lo tanto, la sucesión de puntos trata de acercarse a los vértices del triángulo en una especie de caminata aleatoria sin en realidad llegar a poder alcanzar jamás ninguno de ellos. (Supongo que este algoritmo le habría quitado el sueño malamente al pobre Zenón). Finalmente, se representan los puntos gráficamente en el plano. El resultado, como todo atento lector de las páginas 42 a 45 de este libro debería haber reconocido, es el triángulo de Sierpinsky (como dice el autor del libro, el resultado es dicho triángulo querámoslo o no). ...

21 de abril de 2010 · Carlos J. Gil Bellosta

Para que copien, peguen y disfruten

El otro día hablé de una señora que había hecho algunos comentarios poco avisados sobre R. A las alegaciones de que el código de R que publicó en su página no es siquiera código de R respondió diciendo que lo había copiado “de internet” (¡cuánto de pernicioso hay en esas páginas por donde uno navega sin temor de Dios!). Para incrementar la probabilidad de que, cuando esto vuelva a ocurrir, el código pegado de internet sea más bonito que el arriba mencionado, dejo acá este (e invito a mis lectores a ejecutarlo): ...

21 de abril de 2010 · Carlos J. Gil Bellosta