Class: ChurnVsComplexity::Timetravel::Serializer::StatsCalculator
- Inherits:
-
Object
- Object
- ChurnVsComplexity::Timetravel::Serializer::StatsCalculator
- Defined in:
- lib/churn_vs_complexity/timetravel/serializer/stats_calculator.rb
Instance Method Summary collapse
-
#summaries(result) ⇒ Object
- ‘some_sha’, { ‘end_date’ => ‘2024-01-01’, ‘values’ => [[1, 2], [3, 4]
-
}].
Instance Method Details
#summaries(result) ⇒ Object
- ‘some_sha’, { ‘end_date’ => ‘2024-01-01’, ‘values’ => [[1, 2], [3, 4]
-
}]
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/churn_vs_complexity/timetravel/serializer/stats_calculator.rb', line 8 def summaries(result) observations = result.sort_by do |_sha, summary| summary['end_date'] end.map { |entry| entry[1] } quality_calculator = QualityCalculator.new(**extrema(observations)) observations.map do |o| end_date = o['end_date'] scores = o['values'].map do |(churn, complexity)| alpha = quality_calculator.alpha_score(churn, complexity) beta = quality_calculator.beta_score(churn, complexity) [churn, complexity, alpha, beta] end { 'end_date' => end_date, 'mean_churn' => mean(scores.map { |s| s[0] }), 'median_churn' => median(scores.map { |s| s[0] }), 'mean_complexity' => mean(scores.map { |s| s[1] }), 'median_complexity' => median(scores.map { |s| s[1] }), 'mean_alpha_score' => mean(scores.map { |s| s[2] }), 'median_alpha_score' => median(scores.map { |s| s[2] }), 'mean_beta_score' => mean(scores.map { |s| s[3] }), 'median_beta_score' => median(scores.map { |s| s[3] }), } end end |