Untitled
unknown
plain_text
9 months ago
2.2 kB
3
Indexable
foreach(var obj in objectAgregate) { sum_x = sum_X + obj.SeriesValue; sum_Y = Sum_Y + obj.Value; sum_XY = sum_XY + obj.SeriesValue * obj.Value; squareSum_X = squareSum_X + obj.SeriesValue * obj.SeriesValue; squareSum_Y = squareSum_Y + obj.Value * obj.Value; } var corr = (n * sum_XY - sum_X * sum_Y) / (Math.sqrt((n * squareSum_X - sum_X * sum_X) * (n * squareSum_Y - sum_Y * sum_Y))); obj = mew ObjectAggregate(); -------------------------------------------------------------------------------- original: 172ms nou: 172ms -------------------------------------------------------------------------------- using System; using System.Collections.Generic; public class Program { public static void Pearson1(List<double> list1, List<double> list2) { double sum_X = 0; double sum_Y = 0; double sum_XY = 0; double squareS_X = 0; double squareS_Y = 0; for(int i = 0; i < list1.Count; i++) { sum_X += list1[i]; sum_Y += list2[i]; sum_XY += list1[i] * list2[i]; squareS_X += list1[i]*list1[i]; squareS_Y += list2[i]*list2[i]; } var corr = (list1.Count * sum_XY - sum_X * sum_Y) / (Math.Sqrt((list1.Count * squareS_X - sum_X * sum_X) * (list1.Count * squareS_Y - sum_Y * sum_Y))); } public static void Pearson2(List<double> list1, List<double> list2){ var sum_X = list1.Sum(); var sum_Y = list2.Sum(); var sum_XY = list1.Zip(list2, (x,y) => x*y).ToList().Sum(); var squareS_X = list1.Select(x => x*x).ToList().Sum(); var squareS_Y = list2.Select(x => x*x).ToList().Sum(); var corr = (list1.Count * sum_XY - sum_X * sum_Y) / (Math.Sqrt((list1.Count * squareS_X - sum_X * sum_X) * (list1.Count * squareS_Y - sum_Y * sum_Y))); } public static void Main() { List<double> list1 = new List<double>(); List<double> list2 = new List<double>(); Random random = new Random(); for (int i = 0; i < 2; i++) { for (int j = 0; j < 10000; j++) { list1.Add(random.NextDouble()); list2.Add(random.NextDouble()); } } Pearson1(list1, list2); } }
Editor is loading...
Leave a Comment