2014-10-11

Ley de Benford en R

Title La ley de Benford, también conocida como la ley del primer dígito, se refiere a la frecuencia de distribución del primer dígito en muchos de los números que aparecen en la vida real. En esta distribución, el 1 aparece con una frecuencia aproximada del 30% mientras que el 9 aparece con una frecuencia menor del 5%. Por primer dígito se refiere al primer dígito no nulo o significativo.

Esta ley se puede aplicar a una gran variedad de fuentes de datos: facturas de electricidad, direcciones de calles, precios de acciones, cifras de población, tasas de mortalidad, longitud de los ríos o constantes físicas y matemáticas. Se ha aplicado en la detección de fraudes en contabilidad, resultados electorales y científicos.

Distribución

En R, al igual que hicimos en Excel, podemos calcular la tabla con la probabilidad para cada dígito. En R, al contrario de Excel, log calcula por defecto el logaritmo natural. Para calcular el logaritmo en base 10, necesitamos especificar la base o usar la función log10.

benford <- log10(1+1/(1:9)) # O log(1+1/(1:9), base = 10)
data.frame(benford)
     benford
1 0.30103000
2 0.17609126
3 0.12493874
4 0.09691001
5 0.07918125
6 0.06694679
7 0.05799195
8 0.05115252
9 0.04575749 
sum(benford) # Comprobamos que suma 1
[1] 1

Gráficos

Si representamos el vector sin ningún tipo de argumento, obtenemos el siguiente gráfico de barras.

barplot(benford)
Buscamos un formato similar al creado en la entrada ley de Benford en Excel. Formateamos el gráfico suministrando los argumentos necesarios.

barplot(rev(benford*100), # Revierte el orden
        las = 1, # Etiquetas del eje horizontales 
        main = "Ley de Benford",
        xlab = "%",
        ylab = "Dígitos",
        names.arg = c(9:1), # Dígitos orden inverso 
        horiz = TRUE,       # Barras horizontales
        col = "steelblue", 
        border = "white", 
        xlim = c(0, 35))    # Amplia el máximo de la escala                                                                                          
grid(ny = 0) # Líneas de división

Referencias:

?log
?barplot
Bendford's law, mathematical statement
Benford law and lognormal distributions

Entradas relacionadas:
Ley de Benford en Excel
Distribución de frecuencias en Ms Excel

4 comentarios:

  1. se entien pero en que parte se carga la tabla

    ResponderEliminar
    Respuestas
    1. Al principio creamos el data frame Benford con las probabilidades para cada dígito.

      Eliminar
  2. la duda que tengo es como realizar el aplicativo a una tabla con valores

    ResponderEliminar
    Respuestas
    1. Necesitas calcular la distribución de frecuencias de la variable que contiene los valores y compararla con las probabilidades para cada dígito.

      Eliminar

Nube de datos