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); }
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); }
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); }
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 } }; }
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); }
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; }
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)); }
public override double GetQuantil() { return(Quantiles.t_Student(1 - alpha / 2, N - 2)); }
public override double GetQuantil() { return(Quantiles.f_Fisher(1 - alpha, k - 1, N - k)); }
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); }
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); }
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); }
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); }
public override string ToString() { return(Quantiles.ToString()); }