/** * @param list the list * @param start the start index * @param end the end index * @return sublist */ public static DoubleList subList(DoubleList list, int start, int end) { if (list.isEmpty()) { return list; } if (start < 0 || end > list.size()) { throw new IndexOutOfBoundsException(""); } return new DoubleList(copyOfRange(list.toArray(), start, end), end - start); } }
/** * Performs a linear regression on the data points * * @throws IllegalArgumentException if the lengths of the two arrays are not equal */ public LinearRegression(LongList timestamps, DoubleList values) { double[] x = new double[timestamps.size()]; double[] y = new double[values.size()]; for (int i = 0; i < timestamps.size(); i++) { x[i] = timestamps.get(i); y[i] = values.get(i); } double sumX = 0.0; double sumY = 0.0; for (int i = 0; i < x.length; i++) { sumX += x[i]; sumY += y[i]; } double xBar = sumX / x.length; double yBar = sumY / x.length; double xxBar = 0.0; double xyBar = 0.0; for (int i = 0; i < x.length; i++) { xxBar += (x[i] - xBar) * (x[i] - xBar); xyBar += (x[i] - xBar) * (y[i] - yBar); } intercept = xyBar / xxBar; }
/** * Sorts the time series values. */ public void sort() { if (needsSort && timestamps.size() > 1) { LongList sortedTimes = new LongList(timestamps.size()); DoubleList sortedValues = new DoubleList(values.size()); points().sorted((o1, o2) -> Long.compare(o1.getTimestamp(), o2.getTimestamp())).forEachOrdered(p -> { sortedTimes.add(p.getTimestamp()); sortedValues.add(p.getValue()); }); timestamps = sortedTimes; values = sortedValues; needsSort = false; } }
/** * Sorts the time series values. */ public void sort() { if (timestamps.size() > 1) { LongList sortedTimes = new LongList(timestamps.size()); DoubleList sortedValues = new DoubleList(values.size()); points().sorted((o1, o2) -> Long.compare(o1.getTimestamp(), o2.getTimestamp())).forEachOrdered(p -> { sortedTimes.add(p.getTimestamp()); sortedValues.add(p.getValue()); }); timestamps = sortedTimes; values = sortedValues; } }
assertThat(server01.getTimestamps().size(), is(1)); assertThat(server01.getTimestamps().get(0), is(NOW.toEpochMilli())); assertThat(server01.getValues().size(), is(1)); assertThat(server01.getValues().get(0), is(0.67)); assertThat(server01.getAttributesReference().get("host"), is("server01")); assertThat(server02.getTimestamps().size(), is(1)); assertThat(server02.getTimestamps().get(0), is(1422568543702900L)); assertThat(server02.getValues().size(), is(1)); assertThat(server02.getValues().get(0), is(0.55)); assertThat(server02.getAttributesReference().get("host"), is("server02")); assertThat(server03.getTimestamps().get(0), is(1422568543702900L)); assertThat(server03.getTimestamps().get(1), is(1422568544702900L)); assertThat(server03.getValues().size(), is(2)); assertThat(server03.getValues().get(0), is(2.0)); assertThat(server03.getValues().get(1), is(3.0));
assertThat(bashSeries.getTimestamps().get(4), is(1475754115000L)); assertThat(bashSeries.getValues().size(), is(5)); assertThat(bashSeries.getValues().get(0), is(1.0)); assertThat(bashSeries.getValues().get(1), is(2.0)); assertThat(psSeries.getTimestamps().get(3), is(1475754119000L)); assertThat(psSeries.getValues().size(), is(4)); assertThat(psSeries.getValues().get(0), is(6.0)); assertThat(psSeries.getValues().get(1), is(7.0));
for (int i = 0; i < points.size(); i++) { double point = points.get(i); if (point > threshold) {