Ley De Benford

¿Qué números admiten la distribución de Benford?

[Esta entrada es casi una caracterización de lo que promete el título. Quitarle el casi sería prolijo. Pero creo que casi, casi, se adivina de lo que sigue.]

Siempre que hablamos de distribuciones de probabilidad, somos muy conscientes de los requisitos y condiciones bajo las que aplican. Con una excepción: al hablar del manido Benford. En tales casos se suele argumentar de una manera un tanto mística. Y doblemente mística, como consecuencia, cuando toca explicar por qué en ciertos datos concretos no aplica.

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 $latex x_1, \dots, x_n$ es una muestra de una distribución de probabilidad $latex X$ regular y extendida, entonces $latex \log_{10}x_1, \dots, \log_{10}x_n$ es una muestra de $latex \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 $latex \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.

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

Más sobre la ley de Benford (I): una condición suficiente

Las circunstancias —frente a las que soy dócil como el que más— me conducen a escribir de nuevo sobre la Ley de Benford. En concreto, voy a traer a la atención de mis lectores una condición suficiente para que se cumpla. Y de ella extraeremos conclusiones tal vez sorprendentes en sucesivas entradas de la serie que con esta inicio.

Dado un número (p.e., 1234), lo podemos descomponer en dos: una potencia de 10 y otro entre 0 y 10:

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.

La ley de Benford en muestras pequeñas: algunas evidencias

Hoy he cogido medio millón de números correspondientes a cuantías de dinero, en diversas monedas y he mirado a ver si cumplían la Ley de Benford utilizando código de Gregorio Serrano (véase también esto). El resultado ha sido

donde se aprecia cómo, efectivamente, dichas cifras parecen adecuarse a la Ley de Benford. (Hay que hacer notar, sin embargo, que el test implementado por Gregorio, el de la chi-cuadrado, arroja un p-valor de 2.2e-16, que podría llevar a algunos a cuestionar si lo que ven sus ojos es cierto y a otros a divagar sobre la aplicabilidad de pruebas de este tipo a conjuntos de datos tan grandes).

La ley de Benford, revisitada

Revisito mi artículo sobre la ley de Benford no tanto por hacer mención a las entradas una, dos y tres que hizo Gregorio Serrano en su bitácora ni al oportunísimo artículo de The Guardian al respecto. Ni siquiera para mencionar la existencia de este sesudo artículo sobre el tema.

Lo hago porque me pliego a la demanda popular: voy a explicar con más detalle el código que dejé allí escrito y que, por referencia, es

benford <- function( foo, ..., n = 100000 ){
  tmp <- foo( n, ... )
  tmp <- as.character( tmp[ tmp > 0] )
  tmp <- strsplit( tmp, "" )

  leading.digit <- function( x )
    x[ ! x %in% c( "0", "." )][1]

  tmp <- unlist( lapply( tmp, leading.digit ) )
  100 * table( tmp ) / length( tmp )
}

benford( rcauchy )
benford( rexp, rate = 2 )
benford( rexp, rate = 5 )
benford( rnorm, sd = 40 )
benford( rweibull, shape = 1 )

Puede llamar la atención que el primer argumento de la función benford sea, precisamente, otra función. Nada del otro mundo. El siguiente es un ejemplo en el que se muestra el uso aislado para una mejor comprensión:

La ley de Benford

El otro día me preguntó una compañera el motivo por el que un proceso (de transformación de datos) se ejecutaba tan lentamente. De oficio, siempre hago lo mismo —además, lo saben: ¿para qué seguirán preguntando?—: ejecutar el proceso sólo sobre un porcentaje de los datos.

Con los que el id acababa en 123, era inmediato; con 12, también; con 1, se eternizaba. Pero con 2, 3 y 4 volvía a ser muy rápido. ¡Había muchísimos registros con id acabado en 1!