From fa12b10c6f94b93e28383e937119352749729b11 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Wed, 18 Dec 2019 09:32:00 +0100 Subject: [PATCH] OO-4426: Calculate variance if exactly two users have participated in a survey --- .../manager/RubricStatisticCalculator.java | 2 +- .../RubricStatisticCalculatorTest.java | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/olat/modules/forms/manager/RubricStatisticCalculator.java b/src/main/java/org/olat/modules/forms/manager/RubricStatisticCalculator.java index 18021e82c3e..57543d01ea6 100644 --- a/src/main/java/org/olat/modules/forms/manager/RubricStatisticCalculator.java +++ b/src/main/java/org/olat/modules/forms/manager/RubricStatisticCalculator.java @@ -203,7 +203,7 @@ class RubricStatisticCalculator { size++; } } - return size > 2? varianceDividend/(size - 1): null; + return size > 1? varianceDividend/(size - 1): null; } Double getStdDev(Double variance) { diff --git a/src/test/java/org/olat/modules/forms/manager/RubricStatisticCalculatorTest.java b/src/test/java/org/olat/modules/forms/manager/RubricStatisticCalculatorTest.java index 007d1181eef..fba4312069f 100644 --- a/src/test/java/org/olat/modules/forms/manager/RubricStatisticCalculatorTest.java +++ b/src/test/java/org/olat/modules/forms/manager/RubricStatisticCalculatorTest.java @@ -201,6 +201,35 @@ public class RubricStatisticCalculatorTest { assertThat(variance).isEqualTo(1.5); } + @Test + public void shouldCalculateSliderVarianceOfTwoResponses() { + ScaleType scaleType = ScaleType.oneToMax; + StepCountsBuilder stepCountsBuilder = StepCountsBuilder.builder(4); + stepCountsBuilder.withCount(1, Long.valueOf(1)); + stepCountsBuilder.withCount(2, Long.valueOf(1)); + stepCountsBuilder.withCount(3, Long.valueOf(0)); + stepCountsBuilder.withCount(4, Long.valueOf(0)); + SumMean sumMean = sut.getSumMean(stepCountsBuilder.build(), scaleType); + + Double variance = sut.getVariance(stepCountsBuilder.build(), scaleType, sumMean.getMean()); + + assertThat(variance).isEqualTo(0.5); + } + @Test + public void shouldCalculateSliderVarianceOfOneResponse() { + ScaleType scaleType = ScaleType.oneToMax; + StepCountsBuilder stepCountsBuilder = StepCountsBuilder.builder(4); + stepCountsBuilder.withCount(1, Long.valueOf(1)); + stepCountsBuilder.withCount(2, Long.valueOf(0)); + stepCountsBuilder.withCount(3, Long.valueOf(0)); + stepCountsBuilder.withCount(4, Long.valueOf(0)); + SumMean sumMean = sut.getSumMean(stepCountsBuilder.build(), scaleType); + + Double variance = sut.getVariance(stepCountsBuilder.build(), scaleType, sumMean.getMean()); + + assertThat(variance).isNull(); + } + @Test public void shouldCalculateSliderVarianceScaled() { ScaleType scaleType = ScaleType.zeroBallanced; -- GitLab