class Benford
Public Instance Methods
counts()
click to toggle source
# File lib/benford.rb, line 20 def counts return @digit_counts unless @digit_counts.nil? digit_counts = Hash.new(0) numbers.each do |v| digit_counts[v.first] += 1 end @digit_counts = digit_counts end
deviation()
click to toggle source
# File lib/benford.rb, line 42 def deviation return @variants unless @variants.nil? variants = Hash.new(0.0) law.each do |digit, occurence| variants[digit] = distribution[digit] - occurence end @variants = variants end
distribution()
click to toggle source
# File lib/benford.rb, line 29 def distribution return @dist unless @dist.nil? dist = Hash.new(0.0) counts.each do |k, v| dist[k] = v.to_f / numbers.count end @dist = dist end
law()
click to toggle source
P(d) = log10(1 + 1/d)
# File lib/benford.rb, line 13 def law return @benford unless @benford.nil? benford = {} (1..9).each { |d| benford[d.to_s] = Math.log10( 1 + 1 / d.to_f) } @benford = benford end
load!(nums)
click to toggle source
# File lib/benford.rb, line 3 def load!(nums) @numbers = [] nums.each do |num| num.gsub!(".", "") num.gsub!(",", "") @numbers << num.to_s if num.is_numeric? end end
numbers()
click to toggle source
# File lib/benford.rb, line 38 def numbers @numbers end