public void Calculate_FileWithDuplicates_ReturnsCorrectKendall() { // Create lists to feed into test IEnumerable <decimal> listA = new List <decimal>(); IEnumerable <decimal> listB = new List <decimal>(); for (int i = 1; i <= 10; i++) { listA = listA.Append(i); listB = listB.Append(11 - i); } // Add some duplicated numbers to the list listA = listA.Append(2); listB = listB.Append(5); listA = listA.Append(7); listB = listB.Append(3); listA = listA.Append(1); listB = listB.Append(11); listA = listA.Append(11); listB = listB.Append(6); // Calculate using CorrelationCalculator Correlations.Calculate("A", listA.ToList(), "B", listB.ToList()); // Use Extreme.Statistics Kendall method to test result against double kendallActual = Stats.KendallTau(listA.ToList(), listB.ToList()); // Check answer Assert.AreEqual(Math.Round(kendallActual, numberOfDpAccuracy), Math.Round((double)Correlations.kendall, numberOfDpAccuracy)); }
Brush _SignificanceHighlighter(int i, int j, object o) { if (Correlations.IsSignificance((double)o)) { return(Brushes.LightGreen); } return(Brushes.White); }
public Result AbsoluteResult() { var absCorr = Correlations.Select(Math.Abs).ToList(); return(new Result() { Correlations = absCorr.ToArray(), MaxIndex = absCorr.IndexOf(absCorr.Max()) }); }
private async Task DoCalcCorrelations(object o) { Correlations.Clear(); foreach (var sample in Samples) { Correlations.Add(new CorrelateVm(MainSample, sample)); } await Task.WhenAll(Correlations.Select(c => c.CalculateCorrelationAsync())); }
public double[,] GetCoefficientsMatrix() { double[,] matrix = new double[Correlations.GetLength(0), Correlations.GetLength(1)]; for (int i = 0; i < Correlations.GetLength(0); i++) { for (int j = 0; j < Correlations.GetLength(1); j++) { matrix[i, j] = Correlations[i, j].Coefficient; } } return(matrix); }
void LoadFile(string path) { Table = new Table(path); Table.Normalize(); DescriptiveStatistics[] ds = new DescriptiveStatistics[Table.ColumnsCount]; for (int i = 0; i < Table.ColumnsCount; i++) { ds[i] = new DescriptiveStatistics(Table.Headers[i], Table.ColumnsValues[i]); } DS = ds; ChiSquaredIntervalsCount = 5; Correlations = new Correlations(Table, DS); }
public void Calculate_RandomFile_ReturnsCorrectKendall() { // Create random lists to feed into test IEnumerable <decimal> listA = CreateRandomList(numberOfDataPoints); IEnumerable <decimal> listB = CreateRandomList(numberOfDataPoints); // Use Extreme.Statistics Kendall method to test result against double kendallActual = Stats.KendallTau(listA.ToList(), listB.ToList()); // Calculate using CorrelationCalculator Correlations.Calculate("A", listA.ToList(), "B", listB.ToList()); // Check answer Assert.AreEqual(Math.Round(kendallActual, numberOfDpAccuracy), Math.Round((double)Correlations.kendall, numberOfDpAccuracy)); }
Brush _MultipleCorrelationsHighlighter(int i, int j, object o) { double d = (double)o; double F = Correlations.MultipleCorrSignificance[j]; if (i == 0 && Correlations.IsMultipleCoeffSignificance(F)) { return(Brushes.LightGreen); } else if (i == 1 && d >= 0.8) { return(Brushes.LightGreen); } return(Brushes.White); }
public void Calculate_PerfectlyCorrelatedFile_ReturnsCorrectSpearman() { // Create lists to feed into test IEnumerable <decimal> listA = new List <decimal>(); IEnumerable <decimal> listB = new List <decimal>(); for (int i = 1; i <= 10; i++) { listA = listA.Append(i); listB = listB.Append(i); } // Calculate using CorrelationCalculator Correlations.Calculate("A", listA.ToList(), "B", listB.ToList()); // Check answer Assert.AreEqual(1, Math.Round((double)Correlations.spearman, numberOfDpAccuracy)); }
public void Calculate_RandomFile_ReturnsCorrectSpearman() { // Create random lists to feed into test IEnumerable <decimal> listA = CreateRandomList(numberOfDataPoints); IEnumerable <decimal> listB = CreateRandomList(numberOfDataPoints); double[] arrayA = listA.Select(dec => (double)dec).ToArray(); double[] arrayB = listB.Select(dec => (double)dec).ToArray(); // Use Extreme.Statistics RankCorrelation method to test result against double spearmanActual = Stats.RankCorrelation(arrayA, arrayB); // Calculate using CorrelationCalculator Correlations.Calculate("A", listA.ToList(), "B", listB.ToList()); // Check answer Assert.AreEqual(Math.Round(spearmanActual, numberOfDpAccuracy), Math.Round((double)Correlations.spearman, numberOfDpAccuracy)); }
public void AdjustToPositiveSemiDefinite() { int iNum = Correlations.GetLength(0); double minEigen = eigenvalues.Min(); if (minEigen < 0) { for (int i = 0; i < iNum; i++) { Correlations[i, i].Coefficient = Correlations[i, i].Coefficient - minEigen * 1.000000001; } for (int i = 0; i < iNum; i++) { for (int j = 0; j < iNum; j++) { Correlations[i, j].Coefficient = Correlations[i, j].Coefficient / (1 - minEigen * 1.000000001); } } } }
void Start() { KSpray = GameObject.FindGameObjectWithTag("Spray").GetComponent <Spray>(); Correlation = GameObject.FindGameObjectWithTag("Correlation").GetComponent <Correlations>(); _particleCenter = KSpray.transform; _sprayMaterial = KSpray.material; _color = _sprayMaterial.color; //_emitter = GameObject.FindGameObjectWithTag("Emitter").transform; _rightHand = GameObject.FindGameObjectWithTag("RightHand").transform; _leftHand = GameObject.FindGameObjectWithTag("LeftHand").transform; _bodyCenter = GameObject.FindGameObjectWithTag("BodyCenter").transform; _rightFoot = GameObject.FindGameObjectWithTag("RightFoot").transform; _leftFoot = GameObject.FindGameObjectWithTag("LeftFoot").transform; _lastHandPos = Vector3.zero; //_particleCenter.position = _emitter.position; _tmpRightHandPos = transform.position; }
public static void Draw(Canvas canvas, Correlations correlations) { canvas.Children.Clear(); double size = Math.Min(canvas.ActualWidth, canvas.ActualHeight); const double margin = 30.0; double centX, centY; centX = centY = size / 2; double radius = size / 2 - margin; // круг GeometryGroup ggCircle = new GeometryGroup(); ggCircle.Children.Add(new EllipseGeometry(new Point(centX, centY), radius, radius)); // точки List <Point> points = new List <Point>(); double angle = 2 * Math.PI / correlations.ParametersCount; for (int i = 0; i < correlations.ParametersCount; i++) { var point = new Point(radius * Math.Cos(angle * i) + centX, radius * Math.Sin(angle * i) + centY); points.Add(point); ggCircle.Children.Add(new EllipseGeometry(point, 2, 2)); } // линии /* * GeometryGroup ggLinesStrong = new GeometryGroup(); * GeometryGroup ggLinesCollinear = new GeometryGroup(); * for (int i = 1; i < correlations.ParametersCount; i++) * { * for (int j = 0; j < i; j++) * { * if (Math.Abs(correlations.CorrMatrix[i, j]) >= 0.7) * ggLinesCollinear.Children.Add(new LineGeometry(points[i], points[j])); * else if (Math.Abs(correlations.CorrMatrix[i, j]) >= 0.6) * ggLinesStrong.Children.Add(new LineGeometry(points[i], points[j])); * } * } */ // метки for (int i = 0; i < correlations.ParametersCount; i++) { double x = (radius + margin / 2) * Math.Cos(angle * i) + centX - margin * 0.3; double y = (radius + margin / 2) * Math.Sin(angle * i) + centY - margin * 0.3; var tbMark = new TextBlock(); tbMark.Text = "X" + i; Canvas.SetLeft(tbMark, x); Canvas.SetTop(tbMark, y); canvas.Children.Add(tbMark); } var pathCircle = new Path() { Stroke = Brushes.Black, Data = ggCircle }; /* * var pathLinesStrong = new Path() * { * Stroke = Brushes.LightGray, * StrokeDashArray = new DoubleCollection(new[] { 4.0, 4.0 }), * Data = ggLinesStrong * }; * var pathLinesCollinear = new Path() * { * Stroke = Brushes.LightGray, * Data = ggLinesCollinear * }; */ canvas.Children.Add(pathCircle); canvas.Children.Add(GetLines(points, correlations.CorrMatrix, 0.4, 0.6)); canvas.Children.Add(GetLines(points, correlations.CorrMatrix, 0.6, 0.9)); canvas.Children.Add(GetLines(points, correlations.CorrMatrix, 0.9, 1.0)); }