VarAggregate implements the variance aggregation.
public static class VarAggregate implements Aggregate<Number> { public void initialize(Number val) { double v = val.doubleValue(); sum = v; sum2 = v*v; count = 1; } public void accumulate(Number val) { double v = val.doubleValue(); sum += v; sum2 += v*v; count += 1; } public Object result() { return new Double((sum2 - sum*sum/count)/count); } public void merge(Aggregate<Number> other) { VarAggregate otherVar = (VarAggregate)other; sum += otherVar.sum; sum2 += otherVar.sum2; count += otherVar.count; } double sum; double sum2; long count; }