Example #1
0
        public static PlotlyChart BuildChart(TimeSeriesAnalysis analysis)
        {
            IEnumerable <Graph.Trace> traces = BuildTraces(analysis);
            PlotlyChart chart = BuildPlotlyChart(analysis.TimeSeries.Name, traces);

            return(chart);
        }
Example #2
0
        private static IEnumerable <Graph.Trace> BuildTraces(TimeSeriesAnalysis analysis)
        {
            yield return(BuildTrace("Historical", analysis.Historical));

            yield return(BuildTrace("Actual", analysis.Actual));

            foreach (ForecastDetails forecastDetails in analysis.Forecasts)
            {
                string name = $"{forecastDetails.AlgorithmName} Forecast";
                yield return(BuildTrace(name, forecastDetails.Forecast));
            }
        }
Example #3
0
        private static IEnumerable <TimeSeriesAnalysis> Analyze(IEnumerable <TimeSeries> timeSeriesList)
        {
            const int horizon = 100;

            foreach (TimeSeries timeSeries in timeSeriesList)
            {
                Observation[] observations = GapFiller.FillGaps(timeSeries.Observations, timeSeries.Interval).ToArray();
                Observation[] historical   = observations.Take(observations.Length - horizon).ToArray();
                Observation[] actual       = observations.Skip(observations.Length - horizon).ToArray();

                var           forecasts = new List <ForecastDetails>();
                Observation[] linearRegressionForecast = LinearRegressionForecaster
                                                         .Forecast(historical, horizon, timeSeries.Interval);
                RegressionMetrics linearRegressionMetrics = ForecastScorer.Evaluate(actual, linearRegressionForecast);
                forecasts.Add(new ForecastDetails("Linear Regression", linearRegressionForecast, linearRegressionMetrics));

                Observation[]     ssaForecast = SsaForecaster.Forecast(historical, horizon, timeSeries.Interval);
                RegressionMetrics ssaMetrics  = ForecastScorer.Evaluate(actual, ssaForecast);
                forecasts.Add(new ForecastDetails("SSA", ssaForecast, ssaMetrics));

                var analysis = new TimeSeriesAnalysis(timeSeries, historical, actual, forecasts);
                yield return(analysis);
            }
        }