Class: Statsample::Reliability::SkillScaleAnalysis
- Includes:
- Summarizable
- Defined in:
- lib/statsample/reliability/skillscaleanalysis.rb
Overview
Analysis of a Skill Scale Given a dataset with results and a correct answers hash, generates a ScaleAnalysis
Usage
x1 = Daru::Vector.new(%{a b b c})
x2 = Daru::Vector.new(%{b a b c})
x3 = Daru::Vector.new(%{a c b a})
ds = Daru::DataFrame.new({:x1 => @x1, :x2 => @x2, :x3 => @x3})
key={ :x1 => 'a',:x2 => 'b', :x3 => 'a'}
ssa=Statsample::Reliability::SkillScaleAnalysis.new(ds,key)
puts ssa.summary
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#summary_minimal_item_correlation ⇒ Object
Returns the value of attribute summary_minimal_item_correlation.
-
#summary_show_problematic_items ⇒ Object
Returns the value of attribute summary_show_problematic_items.
Instance Method Summary collapse
- #corrected_dataset ⇒ Object
-
#corrected_dataset_minimal ⇒ Object
Dataset only corrected vectors.
-
#initialize(ds, key, opts = Hash.new) ⇒ SkillScaleAnalysis
constructor
A new instance of SkillScaleAnalysis.
- #report_building(builder) ⇒ Object
- #scale_analysis ⇒ Object
- #vector_mean ⇒ Object
- #vector_sum ⇒ Object
Methods included from Summarizable
Constructor Details
#initialize(ds, key, opts = Hash.new) ⇒ SkillScaleAnalysis
Returns a new instance of SkillScaleAnalysis.
19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 19 def initialize(ds,key,opts=Hash.new) opts_default={ :name=>_("Skill Scale Reliability Analysis (%s)") % ds.name, :summary_minimal_item_correlation=>0.10, :summary_show_problematic_items=>true } @ds=ds @key=key @opts=opts_default.merge(opts) @opts.each{|k,v| self.send("#{k}=",v) if self.respond_to? k } @cds=nil end |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
16 17 18 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 16 def name @name end |
#summary_minimal_item_correlation ⇒ Object
Returns the value of attribute summary_minimal_item_correlation.
17 18 19 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 17 def summary_minimal_item_correlation @summary_minimal_item_correlation end |
#summary_show_problematic_items ⇒ Object
Returns the value of attribute summary_show_problematic_items.
18 19 20 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 18 def summary_show_problematic_items @summary_show_problematic_items end |
Instance Method Details
#corrected_dataset ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 59 def corrected_dataset if @cds.nil? @cds = Daru::DataFrame.new({}, order: @ds.vectors, name: @ds.name) @ds.each_row do |row| out = {} row.each_with_index do |v, k| if @key.has_key? k if @ds[k].reject_values(*Daru::MISSING_VALUES).include_values? v out[k]= @key[k] == v ? 1 : 0 else out[k] = nil end else out[k] = v end end @cds.add_row(Daru::Vector.new(out)) end @cds.update end @cds end |
#corrected_dataset_minimal ⇒ Object
Dataset only corrected vectors
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 32 def corrected_dataset_minimal cds = corrected_dataset dsm = Daru::DataFrame.new( @key.keys.inject({}) do |ac,v| ac[v] = cds[v] ac end ) dsm.rename _("Corrected dataset from %s") % @ds.name dsm end |
#report_building(builder) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 83 def report_building(builder) builder.section(:name=>@name) do |s| sa = scale_analysis s.parse_element(sa) if summary_show_problematic_items s.section(:name=>_("Problematic Items")) do |spi| count=0 sa.item_total_correlation.each do |k,v| if v < summary_minimal_item_correlation count+=1 spi.section(:name=>_("Item: %s") % @ds[k].name) do |spii| spii.text _("Correct answer: %s") % @key[k] spii.text _("p: %0.3f") % corrected_dataset[k].mean props=@ds[k].proportions.inject({}) {|ac,v| ac[v[0]] = v[1].to_f;ac} spi.table(:name=>"Proportions",:header=>[_("Value"), _("%")]) do |table| props.each do |k1,v| table.row [ @ds[k].index_of(k1), "%0.3f" % v] end end end end end spi.text _("No problematic items") if count==0 end end end end |
#scale_analysis ⇒ Object
53 54 55 56 57 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 53 def scale_analysis sa = ScaleAnalysis.new(corrected_dataset_minimal) sa.name=_("%s (Scale Analysis)") % @name sa end |
#vector_mean ⇒ Object
49 50 51 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 49 def vector_mean corrected_dataset_minimal.vector_mean end |
#vector_sum ⇒ Object
45 46 47 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 45 def vector_sum corrected_dataset_minimal.vector_sum end |