Skip to content

A framework for Benford's Law conformity assessment.

License

Notifications You must be signed in to change notification settings

TommasoBelluzzo/BenfordLaw

Repository files navigation

Benford Law

This script represents a full-featured framework for assessing Benford's Law conformity. It can be used in order to perform all the tests proposed by Nigrini et al. (2012):

  • the Primary Tests: First Digits Analysis, Second Digits Analysis, First-Two Digits
  • the Advanced Tests: Third Digits Analysis, Second Order Analysis, Summation Analysis
  • the Associated Tests: Last-Two Digits Analysis, Number Duplication Analysis, Distortion Factor Model
  • the Mantissae Analysis
  • the Zipf's Law Analysis

For each significant digit analysis, the following conformity indicators are provided:

Requirements

The minimum Matlab version required is R2014a. In addition, the Statistics and Machine Learning Toolbox must be installed in order to properly execute the script.

Dataset & Usage

The framework doesn't require any specific dataset structure. Numeric data can be extracted from any source or produced using any existing methodology, but a minimum amount of 1000 elements (with at least 50 unique observations) is required in order to perform a coherent analysis.

The run.m script provides an example of how this framework can be used, but all the functions located in the Scripts folder can be executed in standalone computation processes. It is recommended to validate and preprocess the dataset using the benford_data function. The benford_analyse functions can be used in order to perform a full automatic analysis of the dataset and plot the results. The benford_random function is an additional tool that produces random numbers whose digits follow the Benford's Law distribution.

Screenshots

Second Digits Analysis 1

Second Digits Analysis 2

First-Two Digits Analysis 1

First-Two Digits Analysis 2

Mantissae Analysis