@Override public synchronized void addDatum(double datum, double weight) { super.addDatum(datum, weight); totalSquaredWeight += weight * weight; double weightedData = datum * weight; totalWeightedData += weightedData; totalWeightedSquaredData += weightedData * datum; }
@Override public synchronized void addDatum(double datum, double weight) { super.addDatum(datum, weight); totalSquaredWeight += weight * weight; double weightedData = datum * weight; totalWeightedData += weightedData; totalWeightedSquaredData += weightedData * datum; }
@Override public synchronized void addDatum(double datum, double weight) { super.addDatum(datum, weight); totalSquaredWeight += weight * weight; double weightedData = datum * weight; totalWeightedData += weightedData; totalWeightedSquaredData += weightedData * datum; }
@Override public synchronized void addDatum(double datum) { addDatum(datum, 1.0); }
@Override public synchronized void addDatum(double datum) { addDatum(datum, 1.0); }
@Override public synchronized void addDatum(double datum) { addDatum(datum, 1.0); }
@Test public void testWeighted() { WeightedRunningAverage runningAverage = new WeightedRunningAverage(); assertEquals(0, runningAverage.getCount()); assertTrue(Double.isNaN(runningAverage.getAverage())); runningAverage.addDatum(1.0, 2.0); assertEquals(1.0, runningAverage.getAverage(), EPSILON); runningAverage.addDatum(1.0); assertEquals(1.0, runningAverage.getAverage(), EPSILON); runningAverage.addDatum(8.0, 0.5); assertEquals(2.0, runningAverage.getAverage(), EPSILON); runningAverage.addDatum(-4.0); assertEquals(2.0/3.0, runningAverage.getAverage(), EPSILON); runningAverage.removeDatum(-4.0); assertEquals(2.0, runningAverage.getAverage(), EPSILON); runningAverage.removeDatum(2.0, 2.0); assertEquals(2.0, runningAverage.getAverage(), EPSILON); runningAverage.changeDatum(0.0); assertEquals(2.0, runningAverage.getAverage(), EPSILON); runningAverage.changeDatum(4.0, 0.5); assertEquals(5.0/1.5, runningAverage.getAverage(), EPSILON); }