Class: Statsample::DominanceAnalysis::ModelData

Inherits:
Object
  • Object
show all
Defined in:
lib/statsample/dominanceanalysis.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(independent, data, da) ⇒ ModelData

Returns a new instance of ModelData.



371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
# File 'lib/statsample/dominanceanalysis.rb', line 371

def initialize(independent, data, da)
  @independent=independent
  @data=data
  @predictors=da.predictors
  @dependent=da.dependent
  @cases=da.cases
  @method=da.method_association
  @contributions=@independent.inject({}){|a,v| a[v]=nil;a}
  
  r_class=da.regression_class
  
  if @dependent.size==1
    @lr=r_class.new(data, @dependent[0], :cases=>@cases)
  else
    @lr=r_class.new(data, @dependent, :cases=>@cases)
  end
end

Instance Attribute Details

#contributionsObject (readonly)

Returns the value of attribute contributions.



370
371
372
# File 'lib/statsample/dominanceanalysis.rb', line 370

def contributions
  @contributions
end

Instance Method Details

#add_contribution(f, v) ⇒ Object



388
389
390
# File 'lib/statsample/dominanceanalysis.rb', line 388

def add_contribution(f, v)
  @contributions[f]=v-r2
end

#add_table_rowObject



399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
# File 'lib/statsample/dominanceanalysis.rb', line 399

def add_table_row
  begin
    sign=sprintf("%0.3f", @lr.significance)
  rescue RuntimeError
    sign="???"
  end

  [name, sprintf("%0.3f",r2), sign] + @predictors.collect{|k|
    v=@contributions[k]
    if v.nil?
        "--"
    else
    sprintf("%0.3f",v)
    end
  }
end

#nameObject



394
395
396
397
398
# File 'lib/statsample/dominanceanalysis.rb', line 394

def name
  @independent.collect {|variable|
    DominanceAnalysis.predictor_name(variable)
  }.join("*")
end

#r2Object



391
392
393
# File 'lib/statsample/dominanceanalysis.rb', line 391

def r2
  @lr.send(@method)
end

#summaryObject



415
416
417
418
419
420
421
422
423
424
425
426
427
# File 'lib/statsample/dominanceanalysis.rb', line 415

def summary
  out=sprintf("%s: r2=%0.3f(p=%0.2f)\n",name, r2, @lr.significance, @lr.sst)
  out << @predictors.collect{|k|
    v=@contributions[k]
    if v.nil?
        "--"
    else
      sprintf("%s=%0.3f",k,v)
    end
  }.join(" | ") 
  out << "\n"
  return out
end