El error en las encuestas: cuentas en una servilleta

Bien escondidita en las encuestas que se publican, puede encontrarse a veces una ficha técnica. Y esta suele contener una frase de esta guisa: Partiendo de los criterios del muestreo aleatorio simple, para un nivel de confianza del 95 % (que es el habitualmente adoptado) y en la hipótesis más desfavorable de máxima indeterminación (p=q=0.5), el margen de error de los datos referidos al total de la muestra es de 3.2 puntos. ...

16 de mayo de 2013 · Carlos J. Gil Bellosta

La media, la mediana y el Bundesbank

El Banco Central Europeo publicó un estudio sobre la riqueza de los hogares europeos en abril de 2013. A partir de él, el Bundesbank publicó otro informe que subrayaba las diferencias en riqueza entre los hogares alemanes y, supongo que entre otros, los españoles. El informe de BCE recogía la media y la mediana del patrimonio de los hogares por países (junto con otras variables adicionales, como la renta, el nivel de endeudamiento, etc.). Obviamente, las medias son superiores a las medianas en prácticamente todas esas variables. El Bundesbank, en su informe, omitía las medias y presentaba únicamente las medianas, magnitudes que contribuían a subrayar una presunta pobreza relativa de los hogares alemanes respecto a los españoles. ...

14 de mayo de 2013 · Carlos J. Gil Bellosta

Charla: un lematizador probabilístico con R

El jueves 16 de mayo hablaré en el Grupo de Interés Local de Madrid de R sobre lematizadores probabilísticos. Hablaré sobre el proceso de lematización y trataré de mostrar su importancia dentro del mundo del llamado procesamiento del lenguaje natural (NLP). La lematización es un proceso humilde dentro del NLP del que apenas nadie habla: su ejercicio solo ha hecho famoso a Martin Porter. Lo eclipsan otras aplicaciones más vistosas, como el siempre sobrevalorado análisis del sentimiento. Sin embargo, es una pieza fundamental que subyace (o debería subyacer) en cualquier aplicación seria que analice textos. ...

13 de mayo de 2013 · Carlos J. Gil Bellosta

Más sobre la ley de Benford (III): la "mágica" propiedad de los logaritmos decimales

Esta entrada tiene como prerrequisito las dos que la preceden: esta y esta. Si $x_1, \dots, x_n$ es una muestra de una distribución de probabilidad $X$ regular y extendida, entonces $\log_{10}x_1, \dots, \log_{10}x_n$ es una muestra de $\log_{10}X$, que es otra distribución de probabilidad regular (porque el logaritmo es una función creciente) y extendida (aunque hay que convenir que menos: el logaritmo achica los números grandes). Por lo tanto, cabe esperar que también la parte decimal de $\log_{10}x_1, \dots, \log_{10}x_n$ tenga una distribución uniforme sobre el intervalo [0,1). Luego cumple la Ley de Benford (véase la condición suficiente). Esto se debe a esa (¿contraintuitiva?) propiedad del logaritmo decimal: convertir el dígito más significativo de un número, el primero, en la parte menos significativa de su logaritmo, la que sigue a la coma. ...

10 de mayo de 2013 · Carlos J. Gil Bellosta

data.table (II): agregaciones

Sigo con mi lacónica serie sobre data.table. La protagonista: frases[sample(1:nrow(frases), 3),] #pos.es pos.en length.es length.en en es frase tfe qjilm num #1: 15 43 72 72 i de 2632 4.881416e-02 0.01369863 6.686871e-04 #2: 33 48 46 48 X países 5321 2.726146e-06 0.02040816 5.563563e-08 #3: 2 35 53 66 in preguntar 4582 2.424379e-08 0.01492537 3.618476e-10 dim(frases) #[1] 6340091 10 El tiempo: system.time({ setkey(frases, "frase", "es") denominadores <- frases[, sum(num), by = key(frases)] setnames(denominadores, c("frase", "es", "den") ) frases <- merge(frases, denominadores) frases$delta <- frases$num / frases$den }) #user system elapsed #5.628 0.208 5.841 En particular, ...

9 de mayo de 2013 · Carlos J. Gil Bellosta

Dependencias funcionales en R con foodweb

El otro día tropecé con un problema de rendimiento con R y al utilizar Rprof() encontré muchas llamadas a funciones que yo no hacía directamente. La principal sospechosa era la función daply (del paquete plyr) que parecía depender de bastantes otras. Uno puede navegar el código de las funciones para identificar esas dependencias, pero, mirad qué maravilla: library(mvbutils) library(plyr) foodweb(find.funs("package:plyr"), prune = "laply") genera Ahí se ve la dependencia de daply con respecto a laply. Y uno adquiere, además, una visión panorámica del paquete plyr. ...

8 de mayo de 2013 · Carlos J. Gil Bellosta

Mi primera aplicación en Shiny: un detector de idiomas

Motivado por los experimentos de Gregorio Serrano con shiny e ilustrado por la charla que dio en el Grupo de Usuarios de R de Madrid, decidí colgar el otro día un entretenimiento que ocupó la mañana de un domingo —y las mañanas de mis domingos son proverbialmente breves— en la red. Se trata de una aplicación que distingue el idioma en que está escrito un texto dentro de una selección de ellos: español, italiano, latín, francés, portugués y catalán. ...

6 de mayo de 2013 · Carlos J. Gil Bellosta

Más sobre la ley de Benford (II): la distribución de la parte fraccionaria

Continuamos hoy nuestra serie sobre la llamada ley de Benford discutiendo la distribución de la parte fraccionaria de las muestras de una distribución. La parte fraccionaria de un número es, para entendernos, lo que va detrás de la coma. Técnicamente, x - floor(x). ¿Le sorprendería a alguien la parte fraccionaria de una secuencia aleatoria de números no tenga una distribución uniforme sobre [0,1)? Obviamente, si los números son enteros no. ¿Pero si siguen la distribución normal? Se puede probar, de hecho, que si la serie sigue una distribución de probabilidad que sea ...

3 de mayo de 2013 · Carlos J. Gil Bellosta

data.table (I): cruces

Los protagonistas (tres tablas grandecitas): dim(qjilm) # [1] 3218575 5 dim(tf) # [1] 6340091 7 dim(tfe) #[1] 1493772 3 head(qjilm, 2) #pos.es length.en length.es pos.en qjilm #1 1 2 1 1 0.8890203 #2 1 2 1 2 0.1109797 head(tf, 2) #frase es pos.es length.es en pos.en length.en #1 996 ! 42 42 ! 43 44 #2 1231 ! 37 37 ! 37 38 head(tfe, 2) #en es tfe #1 ! ! 4.364360e-01 #2 ! !" 4.945229e-24 El objetivo (cruzarlas por los campos comunes): ...

2 de mayo de 2013 · Carlos J. Gil Bellosta

Por qué no deberías compartir tu código: diez motivos

Fresco aún en nuestro recuerdo el fiasco de Excel del que nos ocupamos hace unos días, los partidarios de la reproducibilidad, el software subversivo y gratuito, los detractores de las herramientas propietarias y otras estirpes han agudizado su campaña en pro de lo que denominan una mayor transparencia en el proceso de creación científica. Como contrapeso a tanto despropósito, traigo a la consideración de mis lectores una visión alternativa que desnuda los desatinos de la caterva y recoge diez motivos incontestables por los que compartir código es una sinrazón. Es obra de Randall J. LeVeque que puede ser consultada como artículo o, para los impacientes, como presentación.

30 de abril de 2013 · Carlos J. Gil Bellosta