public synchronized double var() { // E(X^2) - E(X)^2 if (count <= 1) { return 0.0; } double mean = mean(); return Math.max((sumSquares/count) - mean * mean, 0.0d); }
public synchronized double var() { // E(X^2) - E(X)^2 if (count <= 1) { return 0.0; } double mean = mean(); return Math.max((sumSquares/count) - mean * mean, 0.0d); }
public synchronized double var() { // E(X^2) - E(X)^2 if (count <= 1) { return 0.0; } double mean = mean(); return Math.max((sumSquares/count) - mean * mean, 0.0d); }
public synchronized double outlier(float sigma) { if (count != 0.0) { return mean() + std() * sigma; } return 0.0; }
public synchronized double outlier(float sigma) { if (count != 0.0) { return mean() + std() * sigma; } return 0.0; }
public synchronized double outlier(float sigma) { if (count != 0.0) { return mean() + std() * sigma; } return 0.0; }
public String toString() { return "DataStatistics: count is " + count + ", sum is " + sum + ", sumSquares is " + sumSquares + " mean is " + mean() + " std() is " + std(); } }
@Override public long estimatedNewAttemptRuntime(TaskId id) { DataStatistics statistics = dataStatisticsForTask(id); if (statistics == null) { return -1L; } return (long)statistics.mean(); }
@Override public long estimatedNewAttemptRuntime(TaskId id) { DataStatistics statistics = dataStatisticsForTask(id); if (statistics == null) { return -1L; } return (long)statistics.mean(); }
public String toString() { return "DataStatistics: count is " + count + ", sum is " + sum + ", sumSquares is " + sumSquares + " mean is " + mean() + " std() is " + std(); } }
@Override public long estimatedNewAttemptRuntime(TaskId id) { DataStatistics statistics = dataStatisticsForTask(id); if (statistics == null) { return -1L; } return (long)statistics.mean(); }
public String toString() { return "DataStatistics: count is " + count + ", sum is " + sum + ", sumSquares is " + sumSquares + " mean is " + mean() + " std() is " + std(); } }
@Test public void testUpdateStatistics() throws Exception { DataStatistics statistics = new DataStatistics(17); statistics.add(29); Assert.assertEquals(2, statistics.count(), TOL); Assert.assertEquals(23.0, statistics.mean(), TOL); Assert.assertEquals(36.0, statistics.var(), TOL); statistics.updateStatistics(17, 29); Assert.assertEquals(2, statistics.count(), TOL); Assert.assertEquals(29.0, statistics.mean(), TOL); Assert.assertEquals(0.0, statistics.var(), TOL); } }
@Test public void testSingleEntryDataStatistics() throws Exception { DataStatistics statistics = new DataStatistics(17.29); Assert.assertEquals(1, statistics.count(), TOL); Assert.assertEquals(17.29, statistics.mean(), TOL); Assert.assertEquals(0, statistics.var(), TOL); Assert.assertEquals(0, statistics.std(), TOL); Assert.assertEquals(17.29, statistics.outlier(1.0f), TOL); }
@Test public void testEmptyDataStatistics() throws Exception { DataStatistics statistics = new DataStatistics(); Assert.assertEquals(0, statistics.count(), TOL); Assert.assertEquals(0, statistics.mean(), TOL); Assert.assertEquals(0, statistics.var(), TOL); Assert.assertEquals(0, statistics.std(), TOL); Assert.assertEquals(0, statistics.outlier(1.0f), TOL); }
@Test public void testMutiEntryDataStatistics() throws Exception { DataStatistics statistics = new DataStatistics(); statistics.add(17); statistics.add(29); Assert.assertEquals(2, statistics.count(), TOL); Assert.assertEquals(23.0, statistics.mean(), TOL); Assert.assertEquals(36.0, statistics.var(), TOL); Assert.assertEquals(6.0, statistics.std(), TOL); Assert.assertEquals(29.0, statistics.outlier(1.0f), TOL); }