Ley de Benford

La ley de Benford es una distribución de probabilidad que expresa cómo se distribuyen las primeras cifras de conjuntos grandes de números. Esta ley es seguida por valores que aparecen en diversas situaciones reales, como facturas (de hecho se suele utilizar para contrastar su falsedad), precios de acciones, números de habitantes, superficies de islas, etc. De acuerdo a esta ley, la probabilidad de que el primer dígito sea 1 es mayor que la de que sea 2 y esta es mayor que la de que sea 3, y así sucesivamente. En concreto, las probabilidades se calculan con la fórmula siguiente: logaritmo decimal de (1 +1/n), n=1,2,...9. 

En esta experiencia comprobamos el funcionamiento de esta ley aplicada a datos sobre poblaciones de los países del mundo (el archivo "Population.txt" se puede descargar aquí). Comparamos la distribución de frecuencias de los dígitos del 1 al 9 con las correspondientes probabilidades dadas por la ley de Benford.

NOTA: El siguiente script se debe ejecutar paso a paso.

#INICIO -------------------------
rm(list=ls(all=TRUE))

#Cargamos el paquete "utils". Este paquete debe estar instalado previamente
library(utils)

#Leemos datos sobre la población de los países del mundo en la página web:
#http://www.worldometers.info/world-population/population-by-country/
#Generamos el archivo 'Population.txt' con los valores de la columna 'Population (2014)'
#Lo guardamos, por ejemplo, en el disco D

#Leemos solo la primera cifra de cada valor
A<-read.fwf('D:/Population.txt',widths=c(1))
pc<-A$V1
primcif<-as.numeric(pc)
AA<-table(primcif)

split.screen(c(1,2))

#Dibujamos el diagrama de barras de frecuencias y la función de probabilidad de la ley de Benford

screen(1)
barplot(AA/length(primcif))

screen(2)
n<-1:9
plot(n,log(1+1/n,10),lwd=16,type='h')
#FIN -------------------------

Para ampliar información sobre el tema se puede instalar en R el paquete "benford.analysis".

No hay comentarios:

Publicar un comentario