Changeset 7160 for branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs
- Timestamp:
- 12/09/11 12:56:21 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs
r7099 r7160 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Linq; 24 25 using HeuristicLab.Common; 25 26 … … 52 53 53 54 public void Add(double startValue, IEnumerable<double> actualContinuation, IEnumerable<double> predictedContinuation) { 55 Add(startValue, actualContinuation.Select(x => startValue), actualContinuation, predictedContinuation); 56 } 57 58 public void Add(double startValue, IEnumerable<double> referenceContinuation, IEnumerable<double> actualContinuation, IEnumerable<double> predictedContinuation) { 54 59 if (double.IsNaN(startValue) || (errorState & OnlineCalculatorError.InvalidValueAdded) > 0) { 55 60 errorState = errorState | OnlineCalculatorError.InvalidValueAdded; … … 57 62 var actualEnumerator = actualContinuation.GetEnumerator(); 58 63 var predictedEnumerator = predictedContinuation.GetEnumerator(); 59 while (actualEnumerator.MoveNext() & predictedEnumerator.MoveNext() & ErrorState != OnlineCalculatorError.InvalidValueAdded) { 64 var referenceEnumerator = referenceContinuation.GetEnumerator(); 65 while (actualEnumerator.MoveNext() & predictedEnumerator.MoveNext() & referenceEnumerator.MoveNext() 66 & ErrorState != OnlineCalculatorError.InvalidValueAdded) { 60 67 double actual = actualEnumerator.Current; 61 68 double predicted = predictedEnumerator.Current; 62 if (double.IsNaN(actual) || double.IsNaN(predicted)) { 69 double reference = referenceEnumerator.Current; 70 if (double.IsNaN(actual) || double.IsNaN(predicted) || double.IsNaN(reference)) { 63 71 errorState = errorState | OnlineCalculatorError.InvalidValueAdded; 64 72 } else { … … 67 75 squaredErrorMeanCalculator.Add(errorPredictedChange * errorPredictedChange); 68 76 69 double error NoChange =(actual - startValue);70 unbiasedEstimatorMeanCalculator.Add(error NoChange * errorNoChange);77 double errorReference = (reference - startValue) - (actual - startValue); 78 unbiasedEstimatorMeanCalculator.Add(errorReference * errorReference); 71 79 } 72 80 } 73 81 // check if both enumerators are at the end to make sure both enumerations have the same length 74 if (actualEnumerator.MoveNext() || predictedEnumerator.MoveNext() ) {82 if (actualEnumerator.MoveNext() || predictedEnumerator.MoveNext() || referenceEnumerator.MoveNext()) { 75 83 errorState = errorState | OnlineCalculatorError.InvalidValueAdded; 76 84 } else { … … 79 87 } 80 88 } 89 81 90 82 91 public void Reset() {
Note: See TracChangeset
for help on using the changeset viewer.