Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/07/15 09:21:46 (9 years ago)
Author:
gkronber
Message:

#2283: refactoring and bug fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Common/Extensions.cs

    r11730 r11732  
    2929      }
    3030    }
     31
     32    public static double RSq(IEnumerable<double> xs, IEnumerable<double> ys) {
     33      // two pass implementation, but we don't care
     34      var meanX = xs.Average();
     35      var meanY = ys.Average();
     36
     37      var s = 0.0;
     38      var ssX = 0.0;
     39      var ssY = 0.0;
     40      foreach (var p in xs.Zip(ys, (x, y) => new { x, y })) {
     41        s += (p.x - meanX) * (p.y - meanY);
     42        ssX += Math.Pow(p.x - meanX, 2);
     43        ssY += Math.Pow(p.y - meanY, 2);
     44      }
     45
     46      if (s.IsAlmost(0)) return 0;
     47      if (ssX.IsAlmost(0) || ssY.IsAlmost(0)) return 0;
     48      return s * s / (ssX * ssY);
     49    }
     50
     51
    3152  }
    3253}
Note: See TracChangeset for help on using the changeset viewer.