class Chao92::Predictor

Public Class Methods

new() click to toggle source
# File lib/chao92/predictor.rb, line 5
def initialize
  @samples = []
  @observed = {}
  @ff = {}
end
run(samples, next_number) click to toggle source
# File lib/chao92/predictor.rb, line 11
def self.run(samples, next_number)
  Predictor.new.predicting(samples, next_number)
end

Public Instance Methods

predicting(samples, next_number) click to toggle source
# File lib/chao92/predictor.rb, line 15
def predicting(samples, next_number)
  @samples += samples
  update()
  predict(next_number)
end

Private Instance Methods

predict(next_number) click to toggle source
# File lib/chao92/predictor.rb, line 27
def predict(next_number)
  @w = @ff[1] ** 2 / (2.0 * @ff[2]) 
  @turing_estimator = if @ff[1] 
                        1 - @ff[1].to_f / @samples.size 
                      else         
                        1      
                      end
  @S2 = @w * (1 - (1 - (1 - @turing_estimator) / @w ) ** next_number )
end
update() click to toggle source
# File lib/chao92/predictor.rb, line 22
def update
  @observed = @samples.to_hash
  @ff = @observed.to_inverse
end