เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

กฎของ Benford สำหรับตัวเลขหลักแรก

กฎของ Benford ระบุว่าความน่าจะเป็นที่ตัวเลขหลักแรกจะเท่ากับ d นั้น ประมาณเท่ากับลอการิทึมของ (1 + 1/d) เมื่อพล็อตความถี่ที่คาดหวัง จะเห็นชัดเจนว่าตัวเลข 1,…,9 ไม่ได้ปรากฏด้วยความถี่ที่เท่ากัน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การตรวจจับการฉ้อโกงใน R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้างฟังก์ชัน benlaw เพื่อนำกฎของ Benford มาใช้กับตัวเลขหลักแรก โดยใช้ลอการิทึมฐาน 10
  • คำนวณความถี่ที่คาดหวังเมื่อตัวเลขหลักแรกคือ 5
  • สร้าง dataframe ที่มีคอลัมน์ digit เก็บตัวเลขตั้งแต่ 1 ถึง 9 และคอลัมน์ probability เก็บค่าความน่าจะเป็นของแต่ละตัวเลขตามกฎของ Benford
  • กด ส่งคำตอบ เพื่อพล็อตความถี่ที่คาดหวังของตัวเลข 1, 2, …, 9 ในรูปแบบ barplot

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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))
แก้ไขและรันโค้ด