Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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);
        }