All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.davidmoten.rx.Statistics Maven / Gradle / Ivy

package com.github.davidmoten.rx;

public final class Statistics {

    private final long count;
    private final double sumX;
    private final double sumX2;

    private Statistics(long count, double sumX, double sumX2) {
        this.count = count;
        this.sumX = sumX;
        this.sumX2 = sumX2;
    }

    public static Statistics create() {
        return new Statistics(0, 0, 0);
    }

    public Statistics add(Number number) {
        double x = number.doubleValue();
        return new Statistics(count + 1, sumX + x, sumX2 + x * x);
    }

    public long count() {
        return count;
    }

    public double sum() {
        return sumX;
    }

    public double sumSquares() {
        return sumX2;
    }

    public double mean() {
        return sumX / count;
    }

    public double sd() {
        double m = mean();
        return Math.sqrt(sumX2 / count - m * m);
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("Statistics [count=");
        builder.append(count);
        builder.append(", sum=");
        builder.append(sum());
        builder.append(", mean=");
        builder.append(mean());
        builder.append(", sd=");
        builder.append(sd());
        builder.append("]");
        return builder.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy