public double getStatistics(Attribute attribute, String name, String parameter) { if (AVERAGE.equals(name)) { return this.sum / this.valueCounter; } else if (VARIANCE.equals(name)) { if (valueCounter <= 1) { return 0; } double variance = (squaredSum - (sum * sum) / valueCounter) / (valueCounter - 1); if (variance < 0) // this is due to rounding errors above return 0; return variance; } else if (SUM.equals(name)) { return this.sum; } else { LogService.getGlobal() .log("Cannot calculate statistics, unknown type: " + name, LogService.WARNING); return Double.NaN; } }
public boolean handleStatistics(String name) { return AVERAGE.equals(name) || VARIANCE.equals(name) || SUM.equals(name); }