Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

statistics

Maven Central javadoc

Implementations of DoubleElement, which are based on calculating standard deviations on sets of incoming data, and use that as the uncertainty value.

Also, it includes some classes to keep track of 'sliding window' values of averages.

Windowed events

example of WindowedEventRate
WindowedEventRate rate = WindowedEventRate.builder()
            .bucketCount(50)
            .window(Duration.ofMinutes(50))
            .build();
rate.newEvent();
...
..
log.info("Measured rate: {} /s",  rate.getRate(TimeUnit.SECONDS) + " #/s");

log.info("Measured rate: {}", rate); // toString
another example of WindowedEventRate
import org.meeuw.configuration.ConfigurationService;
import org.meeuw.math.Interval;
import org.meeuw.math.abstractalgebra.reals.RealNumber;
import org.meeuw.math.text.configuration.UncertaintyConfiguration;
import org.meeuw.theories.abstractalgebra.UncertainDoubleTheory;
import org.meeuw.time.TestClock;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.data.Percentage.withPercentage;
import static org.meeuw.math.text.configuration.UncertaintyConfiguration.Notation.PARENTHESES;


...

ConfigurationService.withAspect(UncertaintyConfiguration.class, e -> e.withNotation(PARENTHESES),
    () -> {
        TestClock clock = new TestClock();
        try (WindowedEventRate rate = WindowedEventRate.builder()
            .window(Duration.ofSeconds(100))
            .bucketCount(10)
            .clock(clock)
            .build()) {
            for (int i = 0; i < 100; i++) {
                rate.accept(5 + (i % 3));
                clock.tick();
            }
            clock.tick(50);
            assertThat(rate.isWarmingUp()).isFalse();
            assertThat(rate.getRate()).isEqualTo(5.930038867295947);
            assertThat(rate.toString()).isEqualTo("5.9(1.8) /s");
        }
    });

Statisticals

Just to keep track of averages and standard deviations of incoming data.

Statistical Long

Allow to enter 'longs' and similar objects.

Like durations

keeps tracks of durations (in nanoseconds)
StatisticalLong mes = new StatisticalLong(DURATION_NS);

mes.enter(Duration.ofNanos(10), Duration.ofNanos(20));
assertThat(mes.durationValue()).isEqualTo(Duration.ofNanos(15));
assertThat(mes.optionalDurationValue()).contains(Duration.ofNanos(15));

assertThat(mes.getStandardDeviation()).isEqualTo(5.0d); // 5 ns

mes.enter(Duration.ofMinutes(5));

assertThat(mes.optionalDurationValue()).contains(Duration.parse("PT1M40.00000001S"));

Statistical Double