Kom igångKom igång gratis

Benfords lag för första siffran

Benfords lag säger att sannolikheten att den första siffran är d är ungefär lika med logaritmen av (1 + 1/d). Genom att plotta de förväntade frekvenserna blir det tydligt att siffrorna 1,…,9 inte förekommer med lika stor sannolikhet.

Den här övningen är en del av kursen

Bedrägeridetektering i R

Visa kurs

Övningsinstruktioner

  • Implementera Benfords lag som en funktion benlaw för den första siffran med bas-10-logaritm.
  • Beräkna den förväntade frekvensen för att ha 5 som första siffra.
  • Skapa en dataram med en kolumn digit som innehåller siffrorna 1 till 9, och en kolumn probability med deras respektive sannolikheter enligt Benfords lag.
  • Skicka in svar för att plotta de förväntade frekvenserna för siffrorna 1, 2, …, 9 i ett stapeldiagram.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# Implement Benford's Law for first digit
benlaw <- function(d) log10(___ + ___ / ___)

# Calculate expected frequency for d=5
benlaw(___)

# Create a dataframe of the 9 digits and their Benford's Law probabilities
df <- data.frame(digit = ___:___, probability = ___)

# Create barplot with expected frequencies
ggplot(df, aes(x = digit, y = probability)) + 
	geom_bar(stat = "identity", fill = "dodgerblue") + 
	xlab("First digit") + ylab("Expected frequency") + 
	scale_x_continuous(breaks = 1:9, labels = 1:9) + 
	ylim(0, 0.33) + theme(text = element_text(size = 25))
Redigera och kör kod