Method: Statsample::Regression::Multiple::GslEngine#initialize
- Defined in:
- lib/statsample/regression/multiple/gslengine.rb
#initialize(ds, y_var, opts = Hash.new) ⇒ GslEngine
Returns a new instance of GslEngine.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/statsample/regression/multiple/gslengine.rb', line 20 def initialize(ds,y_var, opts=Hash.new) super @ds = ds.reject_values(*Daru::MISSING_VALUES) @ds_valid = @ds @valid_cases = @ds_valid.nrows @dy = @ds[@y_var] @ds_indep = ds.dup(ds.vectors.to_a - [y_var]) # Create a custom matrix columns=[] @fields=[] max_deps = GSL::Matrix.alloc(@ds.nrows, @ds.vectors.size) constant_col=@ds.vectors.size-1 for i in 0...@ds.nrows max_deps.set(i,constant_col,1) end j = 0 @ds.vectors.each do |f| if f != @y_var @ds[f].each_index do |i1| max_deps.set(i1,j,@ds[f][i1]) end columns.push(@ds[f].to_a) @fields.push(f) j += 1 end end @dep_columns = columns.dup @lr_s = nil c, @cov, @chisq, @status = GSL::MultiFit.linear(max_deps, @dy.to_gsl) @constant=c[constant_col] @coeffs_a=c.to_a.slice(0...constant_col) @coeffs=assign_names(@coeffs_a) c=nil end |