Las leyes de Benford

Escriribé hoy sobre las leyes de Benford. Así, en plural. Porque cuando escribí sobre la Ley de Benford hace un tiempo, indiqué cómo la frecuencia de cada primer dígito es decreciente (del 1 al 9) siempre que la función de densidad de la serie de los números que se investigue sea ella misma decreciente. Este resultado trivial bien podría llamarse Ley Débil de Benford. Sin embargo, las probabilidades de ocurrencia de cada dígito dependen de la distribución de la serie, como bien podrá comprobar quien visite esa antigua entrada mía. ...

2 de abril de 2013 · Carlos J. Gil Bellosta

rPython ya está en CRAN

Después de bastante trabajo, rPython ya está disponible en CRAN, ya es un paquete oficial de R. Se trata de un paquete del que ya nos hemos ocupado antes (véase esto y esto) y que permite llamar a Python desde R. Por el momento, está disponible únicamente para plataformas UNIX (Linux, Mac) aunque estoy tratando de crear una versión que funcione en Windows. Además, estoy buscando aplicaciones de rPython (al estilo de esta). Así que si a alguien se le ocurre alguna…

1 de abril de 2013 · Carlos J. Gil Bellosta

Mapas, ¿realmente necesarios?

Creo que no. Lo reitero a cuenta de la entrada Sencillo, espectacular, falso de malaprensa.com, en que se critica el gráfico aparecido en El Confidencial. Estoy de acuerdo con Josu Mezo en que es una chapuza. Pero discrepo con él en el diagnóstico. Creo que el problema no es tanto que no se estén representando las áreas proporcionalmente al fenómeno que se mide —y es ocioso reiterar aquí la discusión sobre cómo el ojo percibe o deja de percibir la proporcionalidad de áreas (o volúmenes) y las magnitudes que se intenta representar con ellas— como ese afán por pintarlo todo sobre un mapa. ...

19 de marzo de 2013 · Carlos J. Gil Bellosta

Datos LIDAR en R

En la reunión del grupo de interés local (GIL) de R de Madrid, Francisco Mauro habló de aplicaciones de R a conjuntos de datos LIDAR. En efecto, uno quiere estimar la cantidad de madera que hay en un monte. Uno entonces la calcula en unas pequeñas zonas y luego, barriendo el monte con pulsos de láser desde un avión toma medidas (x,y,z) (es decir, longitud, latitud y altura) en una malla fina de puntos. Esa malla permite identificar, por ejemplo, la densidad y altura de los árboles. Correlacionando estas variables proxy con la cantidad de madera, se puede, por ejemplo, estimar por extrapolación la cantidad total de madera que contiene el monte entero. ...

6 de marzo de 2013 · Carlos J. Gil Bellosta

ggmap: mapas con R

Me mandó Alberto González Paje código para representar información en mapas usando R que hoy he dejado en su mínima expresión para que los lectores de esta bitácora puedan extender para crear sus propios mapas. Es el siguiente: library(ggmap) # ubico mi alma mater unizar <- geocode('Universidad de Zaragoza, Zaragoza, España') # obtengo un mapa map.unizar <- get_map( location = as.numeric(unizar), color = "color", maptype = "roadmap", scale = 2, zoom = 16) # lo represento ggmap(map.unizar) # le añado puntos ggmap(map.unizar) + geom_point( aes(x = lon, y = lat), data = unizar, colour = 'red', size = 4) Creo que es fácil de extender. ...

5 de marzo de 2013 · Carlos J. Gil Bellosta

Cortar una cadena por un caracter solo cuando no forme parte de una subcadena entrecomillada

Algunos usuarios del paquete pxR han avisado de un error de implementación. Según las especificaciones del formato de datos PC-Axis, las líneas de ese tipo de ficheros acaban en punto y coma (y no necesariamente en un salto de línea). Así que era natural leer los ficheros íntegramente, concatenar sus líneas físicas y luego partirlas usando strsplit para obtener las líneas lógicas. Sin embargo, ciertos ficheros contienen descripciones (entrecomilladas) que contienen puntos y comas. Y eso produce caos. ...

4 de marzo de 2013 · Carlos J. Gil Bellosta

Addenda: ¿qué ha pasado en el Ibex durante el último mes?

Abundando en el tema de ayer, ahora, los mismos datos representados con mapas de calor: Para obtenerlo, a lo que ya teníamos basta añadirle: library(gplots) heatmap.2( as.matrix(ibex.scaled), Rowv=F, Colv=T, key=F, trace="none", col=redgreen, xlab="valor", ylab="", margins=c(5,10))

28 de febrero de 2013 · Carlos J. Gil Bellosta

¿Qué ha pasado en el Ibex durante el último mes?

Pues esencialmente esto: Es decir, un grupo numeroso de valores ha bajado de precio mientras que otros dos grupos han tenido una evolución en U y ha recuperado, con creces incluso, el valor que tenían hace un mes. Y, como siempre, el código: library(tseries) library(zoo) library(XML) library(reshape) library(ggplot2) foo <- function(simbolo, final = Sys.time(), profundidad = 30 * 24 * 3600 ){ precios <- get.hist.quote( instrument= simbolo, start = final - profundidad, end = final, quote=c("AdjClose"), provider="yahoo", origin="1970-01-01", compression="d", retclass="zoo") colnames(precios) <- simbolo return(precios) } # lista de símbolos del ibex tmp <- readHTMLTable("http://finance.yahoo.com/q/cp?s=%5EIBEX+Components")[[5]] tmp <- as.character(tmp$V1[-(1:6)]) tmp <- gsub("-P", "", tmp) simbolos <- tmp[tmp != "ABG.MC"] ibex <- do.call(merge, sapply(simbolos, foo, simplify = F)) ibex.scaled <- scale(ibex) ibex.df <- data.frame(ibex.scaled, fecha = index(ibex.scaled)) ibex.df <- melt(ibex.df, id.vars = "fecha") ibex.df <- ibex.df[ order(ibex.df$fecha, ibex.df$variable), ] ibex.df$cluster <- kmeans(data.frame(t(ibex.scaled)), 4)$cluster ggplot(ibex.df, aes(x=fecha, y=value, group=variable)) + geom_line() + facet_wrap(~cluster)

27 de febrero de 2013 · Carlos J. Gil Bellosta

¿Cómo vota la gente?

La gente vota de muchas maneras. A bote pronto, uno diría que lo hace cada cuatro años con papeletas y en medio de parafernalia de listas cerradas, mítines y similares aditamentos. Pero hay otros que opinan que hay mecanismos alternativos de voto. La gente puede votar en Twitter, por ejemplo. Y algunos conceden a esos votos una relativa potestad para adivinar o, incluso, influenciar fenómenos de importancia económica, política o social. Quienes entablan batallas numéricas después de las manifestaciones, qué duda cabe que atribuyen efectos plebiscitarios a que la cola de la marcha llegase o no a Atocha cuando la cabecera entraba a Colón. ...

26 de febrero de 2013 · Carlos J. Gil Bellosta

Estadísticas oficiales alternativas

Me reconozco entusiasta de la heterodoxia. Allá donde hay comunión de pensamiento, siento la necesidad imperativa de abrir las ventanas y orear el ambiente. Y en pocos ámbitos la hay menos que en el de las estadísticas oficiales, que se toman como trasunto mismo de la realidad que aspiran a medir. Por eso traigo a estas páginas la mención a Shadow Government Statistics, un portal que proporciona medidas alternativas de las principales magnitudes macroeconómicas (de los EE.UU.). Su autor, Walter J. Williams, ilustra así de descriptivamente su desencanto con las cifras oficiales: ...

25 de febrero de 2013 · Carlos J. Gil Bellosta