예제 #1
0
                ) Measure()
        {
            var groups            = this.Items.GroupBy(c => c.Target).OrderBy(c => c.Key).ToList();
            var totals            = groups.Select(c => c.Sum(d => d.Total.GetValueOrDefault())).ToArray();
            var bad               = groups.Select(c => c.Sum(d => d.Bad.GetValueOrDefault())).ToArray();
            var dailyInteractions = new List <DateInteractionModel>();

            foreach (var item in groups)
            {
                dailyInteractions.Add(
                    new DateInteractionModel(item.Key,
                                             item.Sum(c => c.Total).GetValueOrDefault(),
                                             item.Sum(c => c.Good).GetValueOrDefault())
                    );
            }

            var pairs = totals.Zip(bad).OrderBy(c => c.First);

            totals = pairs.Select(c => c.First).ToArray();
            bad    = pairs.Select(c => c.Second).ToArray();

            double correlation = QualityUtils.MeasureCorrelation(totals, bad);

            var(b0, b1, r2) = QualityUtils.LinealRegression(totals, bad);
            return(correlation, totals, bad, b0, b1, r2, dailyInteractions);
        }