Changeset 12492 for trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs
- Timestamp:
- 06/22/15 20:04:01 (9 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs
r12491 r12492 25 25 26 26 namespace HeuristicLab.Problems.DataAnalysis { 27 public class OnlinePearsonsR SquaredCalculator : IOnlineCalculator {27 public class OnlinePearsonsRCalculator : IOnlineCalculator { 28 28 private OnlineCovarianceCalculator covCalculator = new OnlineCovarianceCalculator(); 29 29 private OnlineMeanAndVarianceCalculator sxCalculator = new OnlineMeanAndVarianceCalculator(); 30 30 private OnlineMeanAndVarianceCalculator syCalculator = new OnlineMeanAndVarianceCalculator(); 31 31 32 public double R Squared{32 public double R { 33 33 get { 34 34 double xVar = sxCalculator.PopulationVariance; … … 37 37 return 0.0; 38 38 } else { 39 double r = covCalculator.Covariance / (Math.Sqrt(xVar) * Math.Sqrt(yVar)); 40 return r * r; 39 return covCalculator.Covariance / (Math.Sqrt(xVar) * Math.Sqrt(yVar)); 41 40 } 42 41 } 43 42 } 44 43 45 public OnlinePearsonsR SquaredCalculator() { }44 public OnlinePearsonsRCalculator() { } 46 45 47 46 #region IOnlineCalculator Members … … 50 49 } 51 50 public double Value { 52 get { return R Squared; }51 get { return R; } 53 52 } 54 53 public void Reset() { … … 70 69 IEnumerator<double> firstEnumerator = first.GetEnumerator(); 71 70 IEnumerator<double> secondEnumerator = second.GetEnumerator(); 72 OnlinePearsonsRSquaredCalculator rSquaredCalculator = new OnlinePearsonsRSquaredCalculator();71 var calculator = new OnlinePearsonsRCalculator(); 73 72 74 73 // always move forward both enumerators (do not use short-circuit evaluation!) … … 76 75 double original = firstEnumerator.Current; 77 76 double estimated = secondEnumerator.Current; 78 rSquaredCalculator.Add(original, estimated);79 if ( rSquaredCalculator.ErrorState != OnlineCalculatorError.None) break;77 calculator.Add(original, estimated); 78 if (calculator.ErrorState != OnlineCalculatorError.None) break; 80 79 } 81 80 82 81 // check if both enumerators are at the end to make sure both enumerations have the same length 83 if ( rSquaredCalculator.ErrorState == OnlineCalculatorError.None &&82 if (calculator.ErrorState == OnlineCalculatorError.None && 84 83 (secondEnumerator.MoveNext() || firstEnumerator.MoveNext())) { 85 84 throw new ArgumentException("Number of elements in first and second enumeration doesn't match."); 86 85 } else { 87 errorState = rSquaredCalculator.ErrorState;88 return rSquaredCalculator.RSquared;86 errorState = calculator.ErrorState; 87 return calculator.R; 89 88 } 90 89 }
Note: See TracChangeset
for help on using the changeset viewer.