class FlatKit::StatType::NominalStats

Status object to keep track of the count and frequency of values

Attributes

count[R]

Public Class Methods

all_stats() click to toggle source
# File lib/flat_kit/stat_type/nominal_stats.rb, line 14
def self.all_stats
  @all_stats ||= %w[ count unique_count unique_values mode ]
end
default_stats() click to toggle source
# File lib/flat_kit/stat_type/nominal_stats.rb, line 10
def self.default_stats
  @default_stats ||= %w[ count ]
end
new(collecting_frequencies: false) click to toggle source
# File lib/flat_kit/stat_type/nominal_stats.rb, line 18
def initialize(collecting_frequencies: false)
  @mutex = Mutex.new
  @count = 0
  @collecting_frequencies = collecting_frequencies
  @frequencies = Hash.new(0)
end

Public Instance Methods

collected_stats() click to toggle source
# File lib/flat_kit/stat_type/nominal_stats.rb, line 25
def collected_stats
  return self.class.default_stats unless @collecting_frequencies
  return self.class.all_stats
end
frequencies() click to toggle source
# File lib/flat_kit/stat_type/nominal_stats.rb, line 45
def frequencies
  return nil unless @collecting_frequencies
  @frequencies
end
mode() click to toggle source
# File lib/flat_kit/stat_type/nominal_stats.rb, line 30
def mode
  return nil unless @collecting_frequencies
  @frequencies.max_by{ |item, item_count| item_count }.first
end
unique_count() click to toggle source
# File lib/flat_kit/stat_type/nominal_stats.rb, line 35
def unique_count
  return nil unless @collecting_frequencies
  @frequencies.size
end
unique_values() click to toggle source
# File lib/flat_kit/stat_type/nominal_stats.rb, line 40
def unique_values
  return nil unless @collecting_frequencies
  @frequencies.keys
end
update(value) click to toggle source
# File lib/flat_kit/stat_type/nominal_stats.rb, line 50
def update(value)
  @mutex.synchronize do
    @count += 1
    @frequencies[value] += 1 if @collecting_frequencies
  end
end