/** * Setup of the test case. * * @throws Exception * Thrown if exception appears */ @Before public void setUp() throws Exception { final long deltaTime = 1000; this.timeUnit = TimeUnit.MILLISECONDS; this.startTime = System.currentTimeMillis() - (deltaTime * 10); this.unboundTS = new TimeSeries<Double>(this.startTime, this.timeUnit, deltaTime, this.timeUnit); this.bounds = 3; this.boundedTS = new TimeSeries<Integer>(this.startTime, this.timeUnit, deltaTime, this.timeUnit, this.bounds); }
/** * * @return TS */ protected ITimeSeries<T> prepareForecastTS() { final ITimeSeries<T> history = this.getTsOriginal(); final long startTime = history.getStartTime(); final TimeSeries<T> tsFC = new TimeSeries<T>(startTime, history.getTimeSeriesTimeUnit(), history.getDeltaTime(), history.getDeltaTimeUnit()); return tsFC; }
/** * * @return TS */ protected ITimeSeries<T> prepareForecastTS() { final ITimeSeries<T> history = this.getTsOriginal(); final long startTime = history.getStartTime(); final TimeSeries<T> tsFC = new TimeSeries<>(startTime, history.getTimeSeriesTimeUnit(), history.getDeltaTime(), history.getDeltaTimeUnit()); return tsFC; }
/** * Represents the input port for measurements. * * @param input * Incoming measurements */ @InputPort(eventTypes = { NamedDoubleTimeSeriesPoint.class }, name = ForecastingFilter.INPUT_PORT_NAME_TSPOINT) public void inputEvent(final NamedDoubleTimeSeriesPoint input) { if (this.checkInitialization(input.getName())) { this.processInput(input, input.getTime(), input.getName()); } else { // Initialization of the forecasting variables for a new application this.applicationForecastingWindow.put(input.getName(), new TimeSeries<Double>(input.getTime(), super.recordsTimeUnitFromProjectContext, this.deltat.get(), this.timeSeriesWindowCapacity.get())); this.processInput(input, input.getTime(), input.getName()); } }
/** * Represents the input port for measurements. * * @param input * Incoming measurements */ @InputPort(eventTypes = { NamedDoubleTimeSeriesPoint.class }, name = ForecastingFilter.INPUT_PORT_NAME_TSPOINT) public void inputEvent(final NamedDoubleTimeSeriesPoint input) { if (this.checkInitialization(input.getName())) { this.processInput(input, input.getTime(), input.getName()); } else { // Initialization of the forecasting variables for a new application this.applicationForecastingWindow.put(input.getName(), new TimeSeries<Double>(input.getTime(), super.recordsTimeUnitFromProjectContext, this.deltat.get(), this.timeSeriesWindowCapacity.get())); this.processInput(input, input.getTime(), input.getName()); } }
/** * Test the append method of the time series. */ @Test public void testAppendAll() { final Double[] values = { 600.9, 400.2, 223.9 }; final List<Double> expectedValues = new ArrayList<Double>(values.length); for (final Double curVal : values) { expectedValues.add(curVal); } final TimeSeries<Double> ts = new TimeSeries<Double>(TimeSeriesTestNoState.STARTTIME, TimeUnit.MILLISECONDS, TimeSeriesTestNoState.DELTATIMEMILIS); ts.appendAll(values); final List<Double> tsValues = ts.getValues(); Assert.assertEquals("Unexpected size of time series", values.length, ts.size()); Assert.assertEquals("Unexpected size of values list", values.length, tsValues.size()); Assert.assertEquals("values not equal", expectedValues, tsValues); } }
/** * Returns a new time series object shortened to the last x values. * * @param ts * timeseries * @param x * last x value * @return new time series object */ private static ITimeSeries<Double> getLastXofTS(final ITimeSeries<Double> ts, final int x) { if (ts.size() >= x) { Double[] a = new Double[ts.size()]; a = ts.getValues().toArray(a); final Double[] b = new Double[x]; for (int i = 0; i < x; i++) { b[i] = a[(ts.size() - x) + i]; } long newStartTime = ts.getStartTime(); newStartTime += (ts.size() - x) * ts.getDeltaTimeUnit().toMillis(ts.getDeltaTime()); final ITimeSeries<Double> tsLastX = new TimeSeries<Double>(newStartTime, ts.getTimeSeriesTimeUnit(), ts.getDeltaTime(), ts.getDeltaTimeUnit(), ts.getCapacity()); tsLastX.appendAll(b); return tsLastX; } else { return ts; } } }
/** * Returns a new time series object shortened to the last x values. * * @param ts * timeseries * @param x * last x value * @return new time series object */ private static ITimeSeries<Double> getLastXofTS(final ITimeSeries<Double> ts, final int x) { if (ts.size() >= x) { Double[] a = new Double[ts.size()]; a = ts.getValues().toArray(a); final Double[] b = new Double[x]; for (int i = 0; i < x; i++) { b[i] = a[(ts.size() - x) + i]; } long newStartTime = ts.getStartTime(); newStartTime += (ts.size() - x) * ts.getDeltaTimeUnit().toMillis(ts.getDeltaTime()); final ITimeSeries<Double> tsLastX = new TimeSeries<Double>(newStartTime, ts.getTimeSeriesTimeUnit(), ts.getDeltaTime(), ts.getDeltaTimeUnit(), ts.getCapacity()); tsLastX.appendAll(b); return tsLastX; } else { return ts; } } }
new TimeSeries<Double>(ARIMA101ForecasterTest.START_TIME, TimeUnit.MILLISECONDS, ARIMA101ForecasterTest.DELTA_TIME_MILLIS); ts.appendAll(values);
/** * Initiation of the test, setting up the test time series. * * @param timeUnit * Used time unit */ private void initForecastWithTimeUnit(final TimeUnit tu) { this.ts = new TimeSeries<Double>(this.startTime, TimeUnit.MILLISECONDS, this.deltaTime, tu); this.steps = 1; this.mean = Double.valueOf(2.0); this.ts.append(this.mean - 2); this.ts.append(this.mean - 1); this.ts.append(this.mean); this.ts.append(this.mean + 1); this.ts.append(this.mean + 2); this.forecaster = new MeanForecaster(this.ts, MeanForecasterTest.CONFIDENCE_LEVEL); this.forecast = this.forecaster.forecast(this.steps); this.forecastSeries = this.forecast.getForecast(); this.upperSeries = this.forecast.getUpper(); this.lowerSeries = this.forecast.getLower(); }
/** * Test of the ETSForecaster via Rserve. */ @Test public void testETSPredictor() { // NOPMD assertEqualsWithTolerance is a custom method final Double[] values = { 1.0, 2.0, 3.0, 4.0 }; final List<Double> expectedValues = new ArrayList<Double>(values.length); for (final Double curVal : values) { expectedValues.add(curVal); } final TimeSeries<Double> ts = new TimeSeries<Double>(ETSForecasterTest.START_TIME, TimeUnit.NANOSECONDS, ETSForecasterTest.DELTA_TIME_MILLIS, TimeUnit.MILLISECONDS); ts.appendAll(values); final ETSForecaster forecaster = new ETSForecaster(ts, ETSForecasterTest.CONFIDENCE_LEVEL); final IForecastResult forecast = forecaster.forecast(ETSForecasterTest.STEPS); final ITimeSeries<Double> forecastSeries = forecast.getForecast(); final double expectedForecast = 4.0; this.assertEqualsWithTolerance("Unexpected forecast value", expectedForecast, 0.1, AbstractKiekerRTest.getTsPoint(forecastSeries)); final ITimeSeries<Double> upperSeries = forecast.getUpper(); final double expectedUpper = 5.424480; this.assertEqualsWithTolerance("Unexpected upper value", expectedUpper, 0.1, AbstractKiekerRTest.getTsPoint(upperSeries)); final ITimeSeries<Double> lowerSeries = forecast.getLower(); final double expectedLower = 2.57531997; this.assertEqualsWithTolerance("Unexpected lower value", expectedLower, 0.1, AbstractKiekerRTest.getTsPoint(lowerSeries)); }
/** * Test of the SESRForecaster via Rserve. */ @Test public void test() { final int deltaTime = 1000; final TimeUnit timeUnit = TimeUnit.MILLISECONDS; final long startTime = System.currentTimeMillis() - (deltaTime * 10); final TimeSeries<Double> ts = new TimeSeries<Double>(startTime, TimeUnit.NANOSECONDS, deltaTime, timeUnit); ts.append(1.0); ts.append(2.0); ts.append(3.0); ts.append(1.0); ts.append(2.0); ts.append(3.0); final SESRForecaster forecaster = new SESRForecaster(ts); final IForecastResult forecast = forecaster.forecast(1); final ITimeSeries<Double> forecastSeries = forecast.getForecast(); // final ITimeSeriesPoint<Double> stepFC = forecastSeries.getPoints().get(0); Assert.assertEquals(2.000054d, AbstractKiekerRTest.getTsPoint(forecastSeries), 0.001d); } }
@Test public void testTimeUnitPropagation() { final TimeSeries<Double> testTS = new TimeSeries<Double>(1L, TimeUnit.NANOSECONDS, 10L, TimeUnit.MILLISECONDS); testTS.append(1.0); Assert.assertEquals(TimeUnit.NANOSECONDS, testTS.getTimeSeriesTimeUnit()); Assert.assertEquals(TimeUnit.MILLISECONDS, testTS.getDeltaTimeUnit()); Assert.assertEquals(1L, testTS.getStartTime()); Assert.assertEquals(1L, testTS.getEndTime()); Assert.assertEquals(10000000L, testTS.getStepSize()); testTS.append(1.0); Assert.assertEquals(10000001L, testTS.getEndTime()); } }