始める無料で始める

先頭桁に対するベンフォードの法則

ベンフォードの法則では、先頭桁が d になる確率は、おおよそ (1 + 1/d) の対数に等しいとされています。 期待度数をプロットすると、1 から 9 の各数字は同じ頻度では現れないことが分かります。

この演習はコースの一部です

Rで学ぶ不正検知

コースを見る

演習の手順

  • 先頭桁に対するベンフォードの法則を、底10の対数を用いて関数 benlaw として実装します。
  • 先頭桁が 5 である場合の期待度数を計算します。
  • 1 から 9 の数字を格納する列 digit と、ベンフォードの法則に基づくそれぞれの確率を格納する列 probability を持つデータフレームを作成します。
  • 1, 2, …, 9 の期待度数を棒グラフでプロットできるように提出してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# 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))
コードを編集して実行