Пример #1
0
        public IEnumerable <MetricEvent> Aggregate(DateTimeOffset timestamp)
        {
            if (lastEvent == null || !buckets.Any())
            {
                return(Enumerable.Empty <MetricEvent>());
            }

            var result = new List <MetricEvent>();
            var tags   = lastEvent.Tags;

            var quantiles     = lastEvent.AggregationParameters.GetQuantiles() ?? Quantiles.DefaultQuantiles;
            var sortedBuckets = buckets.OrderBy(b => b.Key.LowerBound).ToList();

            var quantileTags = Quantiles.QuantileTags(quantiles, tags);

            for (var i = 0; i < quantiles.Length; i++)
            {
                var value = GetQuantile(sortedBuckets, quantiles[i]);
                result.Add(new MetricEvent(value, quantileTags[i], timestamp, lastEvent.Unit, null, null));
            }

            var totalCount = sortedBuckets.Sum(x => x.Value);
            var countTags  = tags.Append(WellKnownTagKeys.Aggregate, WellKnownTagValues.AggregateCount);

            result.Add(new MetricEvent(totalCount, countTags, timestamp, null, null, null));

            return(result);
        }
Пример #2
0
            public DependedWilcoxonSignedRanksHomogeneition(List <double> firstSequence, List <double> secondSequence)
            {
                var z = firstSequence.Zip(secondSequence, (x, y) => x - y).Where(i => i != 0).ToList();
                var N = z.Count;

                z.Sort((x, y) => x.CompareTo(y));
                List <Tuple <double, int> > signSeria = z.Select(x => new Tuple <double, int>(Math.Abs(x), x > 0 ? 1 : 0)).ToList();

                signSeria.Sort((x, y) => x.Item1.CompareTo(y.Item1));

                List <double> zAbs = z.Select(Math.Abs).ToList();

                RankSelection zAbsRanged = new RankSelection();

                zAbsRanged.AddSelection(zAbs);
                var T  = zAbsRanged.Selection.Zip(signSeria, (r, a) => r.rank * a.Item2).Sum();
                var ET = N * (N + 1) / 4;

                double DT;

                if (zAbsRanged.Selection.Select(i => i.rank).Distinct().Count() == zAbsRanged.Selection.Count())
                {
                    DT = N * (N + 1) * (2 * N + 1) / 24;
                }
                else
                {
                    DT = (N * (N + 1) * (2 * N + 1) - zAbsRanged.Ranks.Sum(r => r.Count * (r.Count - 1) * (r.Count + 1)) / 2) / 24;
                }

                Statistic = (T - ET) / Math.Sqrt(DT);
                Statistic = double.IsNaN(Statistic) ? 0 : Statistic;
                Quantil   = Quantiles.u_Normal(1 - alpha / 2);
            }
Пример #3
0
            public DispertionHomogeneition(List <double> firstSequence, List <double> secondSequence)
            {
                var d1 = NormalDistribution.GetDispersion(firstSequence);
                var d2 = NormalDistribution.GetDispersion(secondSequence);

                Statistic = d1 >= d2 ? d1 / d2 : d2 / d1;
                var v1 = firstSequence.Count - 1;
                var v2 = secondSequence.Count - 1;

                Quantil = Quantiles.f_Fisher(1 - alpha, v1, v2);
            }
        public LinearRegression(List <double> _xData, List <double> _yData, double _alpha)
        {
            xData   = _xData;
            yData   = _yData;
            xavg    = StatCharacteristicModel.Average.GetAverage(xData);
            yavg    = StatCharacteristicModel.Average.GetAverage(yData);
            alpha   = _alpha;
            quantil = Quantiles.t_Student(1 - alpha / 2, N - 2);

            CalculateScores();
            DeterminationCoef = new DetermCoef(this, alpha);
        }
Пример #5
0
        static public void QuantitiveCharacteristics(StatisticSample valueSample)
        {
            var quantitiveCharacteristics = valueSample.QuantitiveCharactacteristics;

            double A = valueSample.Sample.Count < 40 ? 0.5 : (valueSample.Sample.Count < 100 ? 0.25 : 0.1);

            int v1 = valueSample.Sample.Count == 10 ? 10 : (valueSample.Sample.Count == 30 ? 30 : 120);

            Quantiles quantiles = new Quantiles();

            quantiles.TQuantiles();

            double ourOdeltaX = Math.Round(ourODeltaX_Find(valueSample.Sample), valueSample.RoundValue);
            double ourOSC     = Math.Round(ourOSC_Find(valueSample.Sample), valueSample.RoundValue);
            double ourOAC     = Math.Round(ourOAC_Find(valueSample.Sample), valueSample.RoundValue);
            double ourOEC     = Math.Round(ourOEC_Find(valueSample.Sample), valueSample.RoundValue);

            double t = quantiles.T_a0_05[v1];

            double pMax = 0;

            foreach (var el in valueSample.SampleDivisionINClass)
            {
                if (el.SampleDivisionDataRelativeFrequency > pMax)
                {
                    pMax = el.SampleDivisionDataRelativeFrequency;
                }
            }

            valueSample.IntervalProtocol  = "";
            valueSample.IntervalProtocol += $"\no1      |      0.95%      |      o2       |        СКВ" +
                                            $"\n{quantitiveCharacteristics.AritmeitcMean - Math.Round(t * ourOdeltaX, valueSample.RoundValue)}     |      Середнє арифметичне    |      {quantitiveCharacteristics.AritmeitcMean + Math.Round(t * ourOdeltaX, valueSample.RoundValue)}           |            " +
                                            $"{Math.Round(quantitiveCharacteristics.AritmeitcMean / Math.Sqrt(valueSample.Sample.Count), valueSample.RoundValue)}" +
                                            $"\n{quantitiveCharacteristics.RouteMeanSquare - Math.Round(t * ourOSC, valueSample.RoundValue)}       |      Середньоквадратичне    |      {quantitiveCharacteristics.RouteMeanSquare + Math.Round(t * ourOSC, valueSample.RoundValue)}           |            " +
                                            $"{Math.Round(quantitiveCharacteristics.RouteMeanSquare / Math.Sqrt(valueSample.Sample.Count), valueSample.RoundValue)}" +
                                            $"\n{quantitiveCharacteristics.Skewness - Math.Round(t * ourOAC, valueSample.RoundValue)}              |      Коефіцієнт асиметрії   |      {quantitiveCharacteristics.Skewness + Math.Round(t * ourOAC, valueSample.RoundValue)}           |            " +
                                            $"{Math.Round(quantitiveCharacteristics.Skewness / Math.Sqrt(valueSample.Sample.Count), valueSample.RoundValue)}" +
                                            $"\n{quantitiveCharacteristics.CounterKurtosis - Math.Round(t * ourOEC, valueSample.RoundValue)}       |      Коефіц контрексцесу   |      {quantitiveCharacteristics.CounterKurtosis + Math.Round(t * ourOEC, valueSample.RoundValue)}           |            " +
                                            $"{Math.Round(quantitiveCharacteristics.CounterKurtosis / Math.Sqrt(valueSample.Sample.Count), valueSample.RoundValue)}";
            //

            valueSample.QuantitiveCharactacteristics = quantitiveCharacteristics;

            valueSample.QuantitiveCharactacteristics.AritmeitcMeanConfidenceInterval = new ObservableCollection <XYData> {
                new XYData {
                    X = quantitiveCharacteristics.AritmeitcMean - quantitiveCharacteristics.RouteMeanSquare, Y = pMax / 2.0, A = 0.95
                },
                new XYData {
                    X = quantitiveCharacteristics.AritmeitcMean + quantitiveCharacteristics.RouteMeanSquare, Y = pMax / 2.0, A = 0.95
                }
            };
        }
Пример #6
0
            public DependendAverageHomogeneition(List <double> firstSequence, List <double> secondSequence)
            {
                List <double> zSelection = firstSequence.Zip(secondSequence, (x, y) => x - y).ToList();

                var N     = zSelection.Count;
                var zAvg  = StatCharacteristicModel.Average.GetAverage(zSelection);
                var sigma = NormalDistribution.GetSigmaScore(zSelection);

                Statistic = zAvg * Math.Sqrt(N) / sigma;
                Statistic = double.IsNaN(Statistic) ? 0 : Statistic;

                Quantil = Quantiles.t_Student(1 - alpha / 2, N - 1);
            }
Пример #7
0
            public IndependedWilcoxonSignedRanksHomogeneition(List <double> firstSequence, List <double> secondSequence)
            {
                int N1 = firstSequence.Count;
                int N2 = secondSequence.Count;

                Quantil = Quantiles.u_Normal(1 - alpha / 2);
                RankSelection z        = new RankSelection();
                var           fsNumber = z.AddSelection(firstSequence);

                z.AddSelection(secondSequence);

                var W = z.Selection.Where(i => i.selection == fsNumber).Select(r => r.rank).Sum();
                var E = (N1 * (N1 + N2 + 1)) / 2;
                var D = N1 * N2 * (N1 + N2 + 1) / 12;

                Statistic = (W - E) / Math.Sqrt(D);
                Statistic = double.IsNaN(Statistic) ? 0 : Statistic;
            }
Пример #8
0
            public IndependendAverageHomogeneition(List <double> firstSequence, List <double> secondSequence)
            {
                int N1 = firstSequence.Count;
                int N2 = secondSequence.Count;

                double d1 = NormalDistribution.GetDispersion(firstSequence);
                double d2 = NormalDistribution.GetDispersion(secondSequence);

                double avg1 = StatCharacteristicModel.Average.GetAverage(firstSequence);
                double avg2 = StatCharacteristicModel.Average.GetAverage(secondSequence);

                Quantil = Quantiles.t_Student(1 - alpha / 2, N1 + N2 - 2);

                if (N1 + N2 > 25)
                {
                    Statistic = (avg1 - avg2) / Math.Sqrt(d1 / N1 + d2 / N2);
                }
                else
                {
                    Statistic = ((avg1 - avg2) / Math.Sqrt(((N1 - 1) * d1 + (N2 - 1) * d2) / N1 + N2 - 2)) * Math.Sqrt(N1 * N2 / (N1 + N2));
                }

                Statistic = double.IsNaN(Statistic) ? 0 : Statistic;
            }
 public override double GetQuantil()
 {
     return(Quantiles.u_Normal(1 - alpha / 2));
 }
Пример #10
0
 public override double GetQuantil()
 {
     return(Quantiles.t_Student(1 - alpha / 2, N - 2));
 }
Пример #11
0
 public override double GetQuantil()
 {
     return(Quantiles.f_Fisher(1 - alpha, k - 1, N - k));
 }
Пример #12
0
        public ParabolicRegression(List <double> _xData, List <double> _yData, double _alpha)
        {
            alpha = _alpha;
            xData = _xData;
            xavg  = StatCharacteristicModel.Average.GetAverage(xData);

            yData = _yData;
            yavg  = StatCharacteristicModel.Average.GetAverage(yData);

            xDataPow2 = xData.Select(d => d * d).ToList();
            xPow2avg  = StatCharacteristicModel.Average.GetAverage(xDataPow2);

            xDataPow3 = xData.Select(d => d * d * d).ToList();
            xPow3avg  = StatCharacteristicModel.Average.GetAverage(xDataPow3);

            xDataDisp  = StatCharacteristicModel.StandartDeviationSkew.GetValue(xData);
            xDataDisp *= xDataDisp;

            phi0    = 1;
            quantil = Quantiles.t_Student(1 - alpha / 2, N - 3);

            var a = yavg;
            var b = GetB();
            var c = GetC();

            restDisp = RestDisp(a, b, c);

            A = new ParabolicalScoreA(restDisp, N)
            {
                Name = "a0", Value = a, Quantil = quantil
            };

            var xSd = StatCharacteristicModel.StandartDeviationSkew.GetValue(xData);

            B = new ParabolicalScoreB(restDisp, N, xSd)
            {
                Name = "a1", Value = b, Quantil = quantil
            };

            var phi2Pow2Sum = xData.Sum(x => Math.Pow(Phi2(x), 2));

            C = new ParabolicalScoreC(restDisp, N, phi2Pow2Sum)
            {
                Name = "a2", Value = c, Quantil = quantil
            };

            A.Dispersion = restDisp / N;
            B.Dispersion = restDisp / (N * xDataDisp);
            C.Dispersion = restDisp / phi2Pow2Sum;

            var regressionY = xData.Select(xi => Calculate(xi)).ToList();

            regressionYavg = StatCharacteristicModel.Average.GetAverage(regressionY);

            Scores = new List <RegressionScore>();
            Scores.Add(A);
            Scores.Add(B);
            Scores.Add(C);

            DeterminationCoef = new DetermCoef(this, alpha);
        }
Пример #13
0
        static public String UniformyElseRunIndependent(ICollection <StatisticSample> valuesSample, String RecordValue)
        {
            int sizeOfValue = valuesSample.Count;

            if (sizeOfValue == 2)
            {
                //
                int v1 = valuesSample.ElementAt(0).Sample.Count - 1 < 10 ? 10 : (valuesSample.ElementAt(0).Sample.Count - 1 < 30 ? 30 : 120),
                    v2 = valuesSample.ElementAt(0).Sample.Count - 1 < 10 ? 10 : (valuesSample.ElementAt(0).Sample.Count - 1 < 30 ? 30 : 120);

                Quantiles quantiles = new Quantiles();
                quantiles.FQuantiles();
                double A = 0;
                //Критерій Вілксона

                A = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 100 ? 0.5
                        : (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 500 ? 0.25 : 0.1;
                double UA = A == 0.5 ? 0.7 : 2;
                double uniformyWilksona = Math.Abs(UniformySamples.uniformyWilkson(valuesSample));

                String uniformyWilksonaValue = uniformyWilksona < UA ? $"\nКритерій Вілксона - {uniformyWilksona} < {UA} - вибірки однорідні" :
                                               $"\nКритерій Вілксона - {uniformyWilksona} > {UA} - вибірки неоднорідні";
                RecordValue += uniformyWilksonaValue;
                //Критерій Манна-Уїтні
                double uniformyMannaWhitney = Math.Abs(UniformySamples.uniformyMannaWhitney(valuesSample));

                String uniformyMannaWhitneyValue = uniformyMannaWhitney < UA ? $"\nКритерій Манна-Уїтні - {uniformyMannaWhitney} < {UA} - вибірки однорідні" :
                                                   $"\nКритерій Манна-Уїтні - {uniformyMannaWhitney} > {UA} - вибірки неоднорідні";
                RecordValue += uniformyMannaWhitneyValue;
                //Критерій Різниці стандартних рангів
                double uniformyMiddleRanking = Math.Abs(UniformySamples.uniformyMiddleRanking(valuesSample));

                String uniformyMiddleRankingValue = uniformyMiddleRanking < UA ? $"\nКритерій Різниці стандартних рангів - {uniformyMiddleRanking} < {UA} - вибірки однорідні" :
                                                    $"\nКритерій Різниці стандартних рангів - {uniformyMiddleRanking} > {UA} - вибірки неоднорідні";
                RecordValue += uniformyMiddleRankingValue;

                //КРитерій Колмогорова Смірнова
                double KolmogorovSmirnov = UniformySamples.uniformyKolmogorovaSmirnova(valuesSample);

                String KolmogorovSmirnovValue = KolmogorovSmirnov < A ? $"\nКритерій Колмогорова-Смірнова {KolmogorovSmirnov} < {A} - вибірки однорідні"
                    : $"\nКритерій Колмогорова-Смірнова {KolmogorovSmirnov} > {A} - вибірки неоднорідні";
                RecordValue += KolmogorovSmirnovValue;
            }
            else if (sizeOfValue > 2)
            {
                //
                int v1 = valuesSample.Count < 90 ? valuesSample.Count : 90;

                Quantiles quantiles = new Quantiles();
                quantiles.FQuantiles();
                //
                double A = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 50 ? 0.5 : 0.2;
                quantiles.XI2Quantiles();
                double XI2 = A == 0.5 ? quantiles.XI2_a0_5[v1] : quantiles.XI2_a0_2[v1];
                //Критерій Вілксона(H) для k > 2

                double uniformyHTest = UniformySamples.uniformyHTest(valuesSample);

                String uuniformyHTestValue = uniformyHTest < XI2 ? $"\nКритерій Вілксона(H тест) - {uniformyHTest} < {XI2} - виборки однорідні"
                    : $"\nКритерій Вілксона(H тест) - {uniformyHTest} > {XI2} - виборки неоднорідні";
                RecordValue += uuniformyHTestValue;
            }
            return(RecordValue);
        }
Пример #14
0
        static public String UniformyNormalRunDependent(ICollection <StatisticSample> valuesSample, String RecordValue)
        {
            int sizeOfValue = valuesSample.Count;

            if (sizeOfValue == 2)
            {
                Quantiles quantiles = new Quantiles();

                double uniformyAverage = Math.Abs(UniformySamples.uniformyAverage(valuesSample));
                //
                int v = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(0).Sample.Count - 2) < 10 ? 10 : (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(0).Sample.Count - 2) < 30 ? 30 : 120;

                double A = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 100 ? 0.5
                    : (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 500 ? 0.25 : 0.1;
                //
                quantiles.TQuantiles();
                double t = A == 0.5 ? (quantiles.T_a0_5[v]) : (A == 0.25 ? (quantiles.T_a0_25[v]) : (quantiles.T_a0_1[v]));

                String uniformyAverageValue = t > uniformyAverage ? $"\nЗбіг середніх - {uniformyAverage} < {t} - вибірки однорідні"
                : $"\nЗбіг середніх - {uniformyAverage} > {t} - вибірки неоднорідні";
                RecordValue += uniformyAverageValue;
                A            = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 100 ? 0.5
                        : (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 500 ? 0.25 : 0.1;
                double UA = A == 0.5 ? 0.7 : 2;
                //Критерій Вілксона

                double uniformyWilksona = Math.Abs(UniformySamples.uniformyWilkson(valuesSample));

                String uniformyWilksonaValue = uniformyWilksona < UA ? $"\nКритерій Вілксона - {uniformyWilksona} < {UA} - вибірки однорідні" :
                                               $"\nКритерій Вілксона - {uniformyWilksona} > {UA} - вибірки неоднорідні";
                RecordValue += uniformyWilksonaValue;
                //Критерій Манна-Уїтні
                double uniformyMannaWhitney = Math.Abs(UniformySamples.uniformyMannaWhitney(valuesSample));

                String uniformyMannaWhitneyValue = uniformyMannaWhitney < UA ? $"\nКритерій Манна-Уїтні - {uniformyMannaWhitney} < {UA} - вибірки однорідні" :
                                                   $"\nКритерій Манна-Уїтні - {uniformyMannaWhitney} > {UA} - вибірки неоднорідні";
                RecordValue += uniformyMannaWhitneyValue;
                //Критерій Різниці стандартних рангів
                double uniformyMiddleRanking = Math.Abs(UniformySamples.uniformyMiddleRanking(valuesSample));

                String uniformyMiddleRankingValue = uniformyMiddleRanking < UA ? $"\nКритерій Різниці стандартних рангів - {uniformyMiddleRanking} < {UA} - вибірки однорідні" :
                                                    $"\nКритерій Різниці стандартних рангів - {uniformyMiddleRanking} > {UA} - вибірки неоднорідні";
                RecordValue += uniformyMiddleRankingValue;
            }
            else if (sizeOfValue > 2)
            {
                double uniformyVariances = Math.Abs(UniformySamples.uniformyVariances(valuesSample));
                //
                int v1 = valuesSample.Count < 90 ? valuesSample.Count : 90;

                Quantiles quantiles = new Quantiles();
                quantiles.FQuantiles();
                //
                double A = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 50 ? 0.5 : 0.2;
                quantiles.XI2Quantiles();
                double XI2 = A == 0.5 ? quantiles.XI2_a0_5[v1] : quantiles.XI2_a0_2[v1];

                String uniformyVariacnesValue = XI2 > uniformyVariances ? $"\nКритерій Бартлетта - {uniformyVariances} < {XI2} - вибірки однорідні"
                    : $"\nКритерій Бартлетта - {uniformyVariances} > {XI2} - вибірки неоднорідні";
                RecordValue += uniformyVariacnesValue;
                //Однофакторний дисперсійний аналіз
                int N = 0;

                foreach (var el in valuesSample)
                {
                    N += el.Sample.Count;
                }

                v1 = valuesSample.Count - 1 < 10 ? 10 : (valuesSample.Count - 1 < 30 ? 30 : 120);
                int v2 = N < 10 ? 10 : (N < 30 ? 30 : 120);

                double f = v1 == 10 ? (quantiles.F_v1_10_a0_05[v2]) : (v1 == 30 ? (quantiles.F_v1_30_a0_05[v2]) : (quantiles.F_v1_120_a0_05[v2]));

                double uniformyAnalysisVariance = UniformySamples.uniformyAnalysisVariance(valuesSample);

                String uniformyAnalysisVarianceValue = f > uniformyAnalysisVariance ? $"\nОднофакторний дисперсійний аналіз - {uniformyAnalysisVariance} < {f} - вибірки однорідні"
                    : $"\nОднофакторний дисперсійний аналіз - {uniformyAnalysisVariance} > {f} - вибірки неоднорідні";
                RecordValue += uniformyAnalysisVarianceValue;
                //Критерій Вілксона(H) для k > 2

                double uniformyHTest = UniformySamples.uniformyHTest(valuesSample);

                String uuniformyHTestValue = uniformyHTest < XI2 ? $"\nКритерій Вілксона(H тест) - {uniformyHTest} < {XI2} - виборки однорідні"
                    : $"\nКритерій Вілксона(H тест) - {uniformyHTest} > {XI2} - виборки неоднорідні";
                RecordValue += uuniformyHTestValue;
            }
            return(RecordValue);
        }
Пример #15
0
        static public String UniformyElseRunDependent(ICollection <StatisticSample> valuesSample, String RecordValue)
        {
            int sizeOfValue = valuesSample.Count;

            if (sizeOfValue == 2)
            {
                Quantiles quantiles = new Quantiles();

                double uniformyAverage = Math.Abs(UniformySamples.uniformyAverage(valuesSample));
                //
                int v = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(0).Sample.Count - 2) < 10 ? 10 : (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(0).Sample.Count - 2) < 30 ? 30 : 120;

                double A = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 100 ? 0.5
                    : (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 500 ? 0.25 : 0.1;
                //
                quantiles.TQuantiles();
                double t = A == 0.5 ? (quantiles.T_a0_5[v]) : (A == 0.25 ? (quantiles.T_a0_25[v]) : (quantiles.T_a0_1[v]));
                A = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 100 ? 0.5
                        : (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 500 ? 0.25 : 0.1;
                double UA = A == 0.5 ? 0.7 : 2;
                //Критерій Вілксона

                double uniformyWilksona = Math.Abs(UniformySamples.uniformyWilkson(valuesSample));

                String uniformyWilksonaValue = uniformyWilksona < UA ? $"\nКритерій Вілксона - {uniformyWilksona} < {UA} - вибірки однорідні" :
                                               $"\nКритерій Вілксона - {uniformyWilksona} > {UA} - вибірки неоднорідні";
                RecordValue += uniformyWilksonaValue;
                //Критерій Манна-Уїтні
                double uniformyMannaWhitney = Math.Abs(UniformySamples.uniformyMannaWhitney(valuesSample));

                String uniformyMannaWhitneyValue = uniformyMannaWhitney < UA ? $"\nКритерій Манна-Уїтні - {uniformyMannaWhitney} < {UA} - вибірки однорідні" :
                                                   $"\nКритерій Манна-Уїтні - {uniformyMannaWhitney} > {UA} - вибірки неоднорідні";
                RecordValue += uniformyMannaWhitneyValue;
                //Критерій Різниці стандартних рангів
                double uniformyMiddleRanking = Math.Abs(UniformySamples.uniformyMiddleRanking(valuesSample));

                String uniformyMiddleRankingValue = uniformyMiddleRanking < UA ? $"\nКритерій Різниці стандартних рангів - {uniformyMiddleRanking} < {UA} - вибірки однорідні" :
                                                    $"\nКритерій Різниці стандартних рангів - {uniformyMiddleRanking} > {UA} - вибірки неоднорідні";
                RecordValue += uniformyMiddleRankingValue;
                //Критерій знаків
                int NValue = valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(0).Sample.Count;

                double GTestAnswer    = NValue < 15 ? Math.Abs(UniformySamples.uniformyGTest15Element(valuesSample)) : Math.Abs(UniformySamples.uniformyGTestMore15Element(valuesSample));
                String uniformyHValue = null;
                if (NValue < 15)
                {
                    uniformyHValue = GTestAnswer < A ? $"\nКритерій знаків - {GTestAnswer} < {A} - вибірки однорідні" :
                                     $"\nКритерій знаків - {GTestAnswer} > {A} - вибірки неоднорідні";
                }
                else
                {
                    uniformyHValue = GTestAnswer < UA ? $"\nКритерій знаків - {GTestAnswer} < {UA} - вибірки однорідні" :
                                     $"\nКритерій знаків - {GTestAnswer} > {UA} - вибірки неоднорідні";
                }
                RecordValue += uniformyHValue;

                //КРитерій Колмогорова Смірнова
                double KolmogorovSmirnov = UniformySamples.uniformyKolmogorovaSmirnova(valuesSample);

                String KolmogorovSmirnovValue = KolmogorovSmirnov < A ? $"\nКритерій Колмогорова-Смірнова {KolmogorovSmirnov} < {A} - вибірки однорідні"
                    : $"\nКритерій Колмогорова-Смірнова {KolmogorovSmirnov} > {A} - вибірки неоднорідні";
                RecordValue += KolmogorovSmirnovValue;

                //Q - критерій
                quantiles.XI2Quantiles();
                double XI2 = A == 0.5 ? quantiles.XI2_a0_5[1] : quantiles.XI2_a0_2[1];

                double QTest = UniformySamples.uniformyQTest(valuesSample);

                String QTestValue = XI2 > QTest ? $"\nКритерій Кохрена(Q тест) - {QTest} < { XI2}  -виборки однорідні"
                    : $"\nКритерій Кохрена(Q тест) - {QTest} > {XI2}  -виборки неоднорідні";

                RecordValue += QTestValue;
            }
            else if (sizeOfValue > 2)
            {
                double uniformyVariances = Math.Abs(UniformySamples.uniformyVariances(valuesSample));
                //
                int v1 = valuesSample.Count < 90 ? valuesSample.Count : 90;

                Quantiles quantiles = new Quantiles();
                quantiles.FQuantiles();
                //
                double A = (valuesSample.ElementAt(0).Sample.Count + valuesSample.ElementAt(1).Sample.Count) < 50 ? 0.5 : 0.2;
                quantiles.XI2Quantiles();
                double XI2 = A == 0.5 ? quantiles.XI2_a0_5[v1] : quantiles.XI2_a0_2[v1];

                String uniformyVariacnesValue = XI2 > uniformyVariances ? $"\nКритерій Бартлетта - {uniformyVariances} < {XI2} - вибірки однорідні"
                    : $"\nКритерій Бартлетта - {uniformyVariances} > {XI2} - вибірки неоднорідні";
                RecordValue += uniformyVariacnesValue;
                //Критерій Вілксона(H) для k > 2

                double uniformyHTest = UniformySamples.uniformyHTest(valuesSample);

                String uuniformyHTestValue = uniformyHTest < XI2 ? $"\nКритерій Вілксона(H тест) - {uniformyHTest} < {XI2} - виборки однорідні"
                    : $"\nКритерій Вілкоксона(H тест) - {uniformyHTest} > {XI2} - виборки неоднорідні";
                RecordValue += uuniformyHTestValue;

                //Q - критерій
                double QTest = UniformySamples.uniformyQTest(valuesSample);

                String QTestValue = XI2 > QTest ? $"\nКритерій Кохрена(Q тест) - {QTest} < { XI2}  -виборки однорідні"
                    : $"\nКритерій Кохрена(Q тест) - {QTest} > {XI2}  -виборки неоднорідні";

                RecordValue += QTestValue;
            }
            return(RecordValue);
        }
Пример #16
0
 public override string ToString()
 {
     return(Quantiles.ToString());
 }