Un gráfico engañabobos

Hay un blog que sigo con cierto interés. Es un blog de economía, algo en lo que soy, cuando más, un diletante. Por eso lo leo con mucho cuidado: no quiero que me engañen como a las abuelas con el cambio cuando van al mercado. Además, los economistas, a diferencia de estadísticos, matemáticos, y otras especies análogas, son o de izquierdas o de derechas y siempre tratan de arrimar el ascua a su sardina. ...

31 de enero de 2011 · Carlos J. Gil Bellosta

Graficaca a tutiplén

Al autor le preocupa de viejo el problema de la representación gráfica de datos. Piensa que tiene más de arte que de ciencia. Tal vez lo dice porque no se le da bien: confunde tonos y colores y desgarbado es el adjetivo que mejor describe sus trazos. Y como casi todo diletante maltratado de las musas, ejerce de crítico. Y voto a Dios que su crítica es acerba. Le irritan todos los gráficos de tarta (menos este), desea toda clase de malaventura al cretino que lleva lo de Excel en Expansión y vive prisionero de otras manías semejantes. ...

5 de enero de 2011 · Carlos J. Gil Bellosta

Transforma (los gráficos de) España

Ha aparecido en diversos medios la noticia de la presentación al rey de una propuesta de la Fundación Everis que ha venido a titular TransformaEspaña (así, junto). El estudio que define la propuesta […] pone de relieve la gravedad de la actual crisis económica, sus causas y consecuencias, propone una serie de soluciones y actuaciones en todos los ámbitos del sistema que deben producirse en los próximos años para generar un verdadero cambio. ...

25 de noviembre de 2010 · Carlos J. Gil Bellosta

A vueltas con los fractales

Si bien no hace mucho publicaba una entrada sobre el triángulo de Sierpinsky, mi tocayo Carlos Ortega (y ahora gentil colaborador) nos ha proporcionado un enlace en este blog a un pedazo de código que bien vale la pena replicar aquí para el solaz (y tal vez, incluso, provecho) de los lectores de estas páginas. Es: library(fields) # for tim.colors library(caTools) # for write.gif m = 400 # grid size C <- complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ), imag=rep(seq(-1.2,1.2, length.out=m), m ) ) C <- matrix(C,m,m) Z <- 0 X <- array(0, c(m,m,20)) for (k in 1:20) { Z <- Z^2+C X[,,k] <- exp(-abs(Z)) } image(X[,,k], col=tim.colors(256)) write.gif(X, "Mandelbrot.gif", col=tim.colors(256), delay=100) (extraído de aquí). ...

26 de octubre de 2010 · Carlos J. Gil Bellosta

Hoy me he enamorado en el metro

Hoy me he enamorado en el metro. Apenas comenzaba a leer mi articulillo cuando he tropezado con esta frase: GPL treats data as an accessory to viewing a graph. Y la siguiente era aún mejor: GPL is based on the mathematical definition of the graph of a function and uses that definition to organize data linked to the graph. Y más adelante: […] it is based on the assumption that statistical procedures serve graphics; graphics are not ancillary displays of statistical results, but are means of perceiving statistical relationships directly. ...

21 de octubre de 2010 · Carlos J. Gil Bellosta

¿Qué gráfico es mejor?

Los servidores del Parlamento Británico alojan (y ponen a disposición del público) una serie documentos agrupados por temas de los que hoy nos interesarán los relativos a política estadística y, dentro de ellos, un breve manual muy útil para elaborar gráficas que se atengan a los tres principios fundamentales de este esquivo arte: Veracidad: la gráfica debe reflejar verazmente los datos subyacentes Economía: la gráfica debe mostrar únicamente aquellos elementos necesarios para comprenderla Claridad: los elementos gráficos y textuales de la gráfica deben ser lo más claros posible para facilitar su comprensión por parte del lector. Ahí va un ejemplo de cómo puede este documento ayudar a mejorar las gráficas de quienes lo lean con el debido detenimiento. La de la izquierda es el tipo de gráfica a la que nos tienen acostumbrados los consultores bisoños; la de la derecha es la versión que propone el autor del documento. ...

27 de septiembre de 2010 · Carlos J. Gil Bellosta

Representando gráficamente conjuntos de datos pequeños

Últimamente me están llegando conjuntos de datos para analizar con muy pocos registros. He aquí un subconjunto de uno de ellos (de hoy y debidamente anonimizado): nivel.proteina <- c( 11.56, 10.43, 11.00, 10.92, 10.08, 9.98, 10.35, 9.55, 9.19, 7.00, 6.72, 6.43, 7.43, 7.26, 6.67, 7.49, 8.03, 8.17, 6.79, 7.68, 7.01, 7.51, 6.90, 7.27, 7.56, 8.61, 8.16, 7.12 ) grupo <- c(0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1) datos <- data.frame( nivel.proteina, grupo ) Le he estado dando vueltas a la manera de representar gráficamente este tipo de conjunto de datos de la manera en que deben hacerse estas cosas: que con un mero golpe de vista pueda hacerse uno con ellos. ...

16 de septiembre de 2010 · Carlos J. Gil Bellosta

Gráficos en R con símbolos arbitrarios: código, comentarios y fin

Prometí el otro día revelar los secretos (pensaba que no lo eran tanto) del gráfico que mostré en esta entrada. Los impacientes tienen aquí todo lo que necesitan. Tienen que ejecutar primero el guión svg2ps.sh que invoca inkscape para transformar los ficheros svg (incluidos en la descarga) de las banderas (obtenidos de la Wikipedia) en ficheros postscript. El programa src.R genera entonces el gráfico utilizando dos paquetes de R: grImport y lattice. El primero permite convertir postscript en xml y posteriormente en objetos de la clase picture. ...

28 de junio de 2010 · Carlos J. Gil Bellosta

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

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