
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