Sha256: f679e414676b822ec06cd1c3de8f27dd1829ca1843aae799ab77af4f08eb2349
Contents?: true
Size: 1.68 KB
Versions: 13
Compression:
Stored size: 1.68 KB
Contents
# frozen_string_literal: true require "spout/models/graphables/default" require "spout/helpers/array_statistics" module Spout module Models module Graphables class NumericVsNumeric < Spout::Models::Graphables::Default def categories ["Quartile One", "Quartile Two", "Quartile Three", "Quartile Four"] end def units @variable.units end 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 private 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 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 end end end end
Version data entries
13 entries across 13 versions & 1 rubygems