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=%{a b b c}.to_vector
x2=%{b a b c}.to_vector
x3=%{a c b a}.to_vector
ds={'x1'=>@x1,'x2'=>@x2,'x3'=>@x3}.to_dataset
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
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 54 def corrected_dataset if @cds.nil? @cds=@ds.dup_empty @key.keys.each {|k| @cds[k].type=:numeric; @cds[k].name=@ds[k].name} @ds.each do |row| out={} row.each do |k,v| if @key.keys.include? k if @ds[k].is_valid? v out[k]= @key[k]==v ? 1 : 0 else out[k]=nil end else out[k]=v end end @cds.add_case(out,false) end @cds.update_valid_data end @cds end |
#corrected_dataset_minimal ⇒ Object
Dataset only corrected vectors
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 32 def corrected_dataset_minimal cds=corrected_dataset dsm=@key.keys.inject({}) {|ac,v| ac[v]=cds[v];ac}.to_dataset @key.keys.each do |k| dsm[k].name=_("%s(corrected)") % @ds[k].name dsm[k].labels=@ds[k].labels end dsm.name=_("Corrected dataset from %s") % @ds.name dsm end |
#report_building(builder) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 77 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].labeling(k1), "%0.3f" % v] end end end end end spi.text _("No problematic items") if count==0 end end end end |
#scale_analysis ⇒ Object
49 50 51 52 53 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 49 def scale_analysis sa=ScaleAnalysis.new(corrected_dataset_minimal) sa.name=_("%s (Scale Analysis)") % @name sa end |
#vector_mean ⇒ Object
46 47 48 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 46 def vector_mean corrected_dataset_minimal.vector_mean end |
#vector_sum ⇒ Object
43 44 45 |
# File 'lib/statsample/reliability/skillscaleanalysis.rb', line 43 def vector_sum corrected_dataset_minimal.vector_sum end |