Ejemplo n.º 1
0
        private async Task FindAnomalies()
        {
            IsBusy = true;

            PriceInfo.sensitivity = Sensitivity;
            PriceAnomalies        = new ObservableCollection <Anomaly>();
            PriceResult           = await AnomalyDetectorService.DetectAnomalies(priceInfo);

            if (PriceResult != null)
            {
                for (int i = 0; i < PriceResult.IsAnomaly.Length; i++)
                {
                    if (PriceResult.IsAnomaly[i])
                    {
                        var priceData = PriceInfo.series[i];

                        var lowerBoundary = PriceResult.ExpectedValues[i] - PriceResult.LowerMargins[i];
                        var upperBoundary = PriceResult.ExpectedValues[i] + PriceResult.UpperMargins[i];

                        PriceAnomalies.Add(new Anomaly()
                        {
                            Value      = priceData.value,
                            Timestamp  = priceData.timestamp,
                            IsPositive = PriceResult.IsPositiveAnomaly[i],
                            Range      = $"Range: [{lowerBoundary:N2}, {upperBoundary:N2}]"
                        });
                    }
                }

                CreateChart(anomalies: true);
            }

            IsBusy = false;
        }