class Statsample::GLM::IRLS::Base
Attributes
coefficients[R]
degree_of_freedom[R]
fitted_mean_values[R]
iterations[R]
residuals[R]
standard_error[R]
Public Class Methods
new(data_set, dependent, opts={})
click to toggle source
# File lib/statsample-glm/glm/irls/base.rb, line 9 def initialize data_set, dependent, opts={} @data_set = data_set.to_matrix @dependent = dependent @opts = opts irls end
Private Instance Methods
create_vector(arr)
click to toggle source
# File lib/statsample-glm/glm/irls/base.rb, line 46 def create_vector arr Daru::Vector.new(arr) end
irls()
click to toggle source
# File lib/statsample-glm/glm/irls/base.rb, line 19 def irls max_iter = @opts[:iterations] b = Matrix.column_vector Array.new(@data_set.column_size,0.0) 1.upto(max_iter) do intermediate = (hessian(@data_set,b).inverse * jacobian(@data_set, b, @dependent)) b_new = b - intermediate if((b_new - b).map(&:abs)).to_a.flatten.inject(:+) < @opts[:epsilon] b = b_new break end b = b_new end @coefficients = create_vector(b.column_vectors[0]) @iterations = max_iter @standard_error = hessian(@data_set,b).inverse .diagonal .map{ |x| -x} .map{ |y| Math.sqrt(y) } @fitted_mean_values = create_vector measurement(@data_set,b).to_a.flatten @residuals = @dependent - @fitted_mean_values @degree_of_freedom = @dependent.count - @data_set.column_size end