/** * @param ts * timeseries * @return maximum value of the time series */ private static double calcMaximum(final ITimeSeries<Double> ts) { final List<Double> values = ts.getValues(); double max = 0; for (final double t : values) { if (t > max) { max = t; } } return max; } }
/** * @param ts * timeseries * @return maximum value of the time series */ private static double calcMaximum(final ITimeSeries<Double> ts) { final List<Double> values = ts.getValues(); double max = 0; for (final double t : values) { if (t > max) { max = t; } } return max; } }
/** * Checks whether the input seems to be plausible. * * @return true if plausible, else false */ @Override public boolean isPlausible() { if ((this.meanAbsoluteScaledError == 0) || Double.isNaN(this.meanAbsoluteScaledError)) { return false; } final double maximumObserved = ForecastResult.calcMaximum(this.tsOriginal); final List<Double> values = this.tsForecast.getValues(); for (final Double value : values) { if ((value > (maximumObserved * 2)) || (value < 0)) { return false; } } return true; }
/** * Checks whether the input seems to be plausible. * * @return true if plausible, else false */ @Override public boolean isPlausible() { if ((this.meanAbsoluteScaledError == 0) || Double.isNaN(this.meanAbsoluteScaledError)) { return false; } final double maximumObserved = ForecastResult.calcMaximum(this.tsOriginal); final List<Double> values = this.tsForecast.getValues(); for (final Double value : values) { if ((value > (maximumObserved * 2)) || (value < 0)) { return false; } } return true; }
/** * @param numForecastSteps * number of values the forecaster is going to forecast * * @return Forecast Result */ @Override public IForecastResult forecast(final int numForecastSteps) { final ITimeSeries<Double> history = this.getTsOriginal(); final ITimeSeries<Double> tsFC = this.prepareForecastTS(); final List<Double> allHistory = new ArrayList<Double>(history.getValues()); final Double[] histValuesNotNull = MeanForecasterJava.removeNullValues(allHistory); final double mean = StatUtils.mean(ArrayUtils.toPrimitive(histValuesNotNull)); final Double[] forecastValues = new Double[numForecastSteps]; Arrays.fill(forecastValues, mean); tsFC.appendAll(forecastValues); return new ForecastResult(tsFC, this.getTsOriginal(), ForecastMethod.MEAN); }
/** * @param numForecastSteps * number of values the forecaster is going to forecast * * @return Forecast Result */ @Override public IForecastResult forecast(final int numForecastSteps) { final ITimeSeries<Double> history = this.getTsOriginal(); final ITimeSeries<Double> tsFC = this.prepareForecastTS(); final List<Double> allHistory = new ArrayList<Double>(history.getValues()); final Double[] histValuesNotNull = MeanForecasterJava.removeNullValues(allHistory); final double mean = StatUtils.mean(ArrayUtils.toPrimitive(histValuesNotNull)); final Double[] forecastValues = new Double[numForecastSteps]; Arrays.fill(forecastValues, mean); tsFC.appendAll(forecastValues); return new ForecastResult(tsFC, this.getTsOriginal(), ForecastMethod.MEAN); }
/** * 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; } } }
final String varNameForecast = RBridgeControl.uniqueVarname(); final List<Double> allHistory = new ArrayList<Double>(history.getValues()); final Double[] histValuesNotNull = AbstractRForecaster.removeNullValues(allHistory); final double[] values = ArrayUtils.toPrimitive(histValuesNotNull);
final String varNameForecast = RBridgeControl.uniqueVarname(); final List<Double> allHistory = new ArrayList<>(history.getValues()); final Double[] histValuesNotNull = AbstractRForecaster.removeNullValues(allHistory); final double[] values = ArrayUtils.toPrimitive(histValuesNotNull);