require 'statsample/dominanceanalysis/bootstrap' module Statsample class DominanceAnalysis def initialize(ds,y_var, r_class = Regression::MultipleRegressionPairwise) @y_var=y_var @dy=ds[@y_var] @ds=ds @r_class=r_class @ds_indep=ds.dup(ds.fields-[y_var]) @fields=@ds_indep.fields create_models fill_models end def fill_models @models.each{|m| @fields.each{|f| next if m.include? f base_model=md(m) comp_model=md(m+[f]) base_model.add_contribution(f,comp_model.r2) } } end def dominance_for_nil_model(i,j) if md(i).r2>md(j).r2 1 elsif md(i).r2m.contributions[j] dominances.push(1) elsif m.contributions[i]1 ? 0.5 : final[0] end # Returns 1 if i cD k, 0 if j cD i and 0.5 if undetermined def conditional_dominance_pairwise(i,j) dm=dominance_for_nil_model(i,j) return 0.5 if dm==0.5 dominances=[dm] for k in 1...@fields.size a=average_k(k) if a[i]>a[j] dominances.push(1) elsif a[i]1 ? 0.5 : final[0] end # Returns 1 if i gD k, 0 if j gD i and 0.5 if undetermined def general_dominance_pairwise(i,j) ga=general_averages if ga[i]>ga[j] 1 elsif ga[i]