class Spout::Models::Graphables::NumericVsNumeric

Public Instance Methods

categories() click to toggle source
# File lib/spout/models/graphables/numeric_vs_numeric.rb, line 11
def categories
  ["Quartile One", "Quartile Two", "Quartile Three", "Quartile Four"]
end
series() click to toggle source
# File lib/spout/models/graphables/numeric_vs_numeric.rb, line 19
def series
  @stratification_variable.domain.options.collect do |option|
    filtered_subjects = filter_and_sort_subjects_by_stratification_option(option)
    next if filtered_subjects.size == 0

    data = [:quartile_one, :quartile_two, :quartile_three, :quartile_four].collect do |quartile|
      array = filtered_subjects.send(quartile).collect(&@variable.id.to_sym)
      array_statistics(array)
    end

    { name: option.display_name, data: data }
  end.compact
end
units() click to toggle source
# File lib/spout/models/graphables/numeric_vs_numeric.rb, line 15
def units
  @variable.units
end

Private Instance Methods

array_statistics(array) click to toggle source
# File lib/spout/models/graphables/numeric_vs_numeric.rb, line 45
def array_statistics(array)
  {      y: (array.mean.round(1) rescue 0.0),
    stddev: ("%0.1f" % array.standard_deviation rescue ""),
    median: ("%0.1f" % array.median rescue ""),
       min: ("%0.1f" % array.min rescue ""),
       max: ("%0.1f" % array.max rescue ""),
         n: array.n }
end
filter_and_sort_subjects_by_stratification_option(option) click to toggle source
# File lib/spout/models/graphables/numeric_vs_numeric.rb, line 35
def filter_and_sort_subjects_by_stratification_option(option)
  begin
    @subjects.select do |s|
      s._visit == option.value and s.send(@variable.id) != nil and s.send(@chart_variable.id) != nil
    end.sort_by(&@chart_variable.id.to_sym)
  rescue
    []
  end
end