Changeset 5942 for trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineEvaluators/OnlineMeanAndVarianceCalculator.cs
- Timestamp:
- 04/04/11 15:38:16 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineEvaluators/OnlineMeanAndVarianceCalculator.cs
r5904 r5942 29 29 private int n; 30 30 31 private Online EvaluatorError varianceErrorState;32 public Online EvaluatorError VarianceErrorState {31 private OnlineCalculatorError varianceErrorState; 32 public OnlineCalculatorError VarianceErrorState { 33 33 get { return varianceErrorState; } 34 34 } … … 40 40 } 41 41 42 private Online EvaluatorError errorState;43 public Online EvaluatorError PopulationVarianceErrorState {42 private OnlineCalculatorError errorState; 43 public OnlineCalculatorError PopulationVarianceErrorState { 44 44 get { return errorState; } 45 45 } … … 50 50 } 51 51 52 public Online EvaluatorError MeanErrorState {52 public OnlineCalculatorError MeanErrorState { 53 53 get { return errorState; } 54 54 } … … 69 69 public void Reset() { 70 70 n = 0; 71 errorState = Online EvaluatorError.InsufficientElementsAdded;72 varianceErrorState = Online EvaluatorError.InsufficientElementsAdded;71 errorState = OnlineCalculatorError.InsufficientElementsAdded; 72 varianceErrorState = OnlineCalculatorError.InsufficientElementsAdded; 73 73 } 74 74 75 75 public void Add(double x) { 76 if (double.IsNaN(x) || double.IsInfinity(x) || (errorState & Online EvaluatorError.InvalidValueAdded) > 0) {77 errorState = errorState | Online EvaluatorError.InvalidValueAdded;78 varianceErrorState = errorState | Online EvaluatorError.InvalidValueAdded;76 if (double.IsNaN(x) || double.IsInfinity(x) || (errorState & OnlineCalculatorError.InvalidValueAdded) > 0) { 77 errorState = errorState | OnlineCalculatorError.InvalidValueAdded; 78 varianceErrorState = errorState | OnlineCalculatorError.InvalidValueAdded; 79 79 } else { 80 80 n++; … … 83 83 m_oldM = m_newM = x; 84 84 m_oldS = 0.0; 85 errorState = errorState & (~Online EvaluatorError.InsufficientElementsAdded); // n >= 185 errorState = errorState & (~OnlineCalculatorError.InsufficientElementsAdded); // n >= 1 86 86 } else { 87 varianceErrorState = varianceErrorState & (~Online EvaluatorError.InsufficientElementsAdded); // n >= 287 varianceErrorState = varianceErrorState & (~OnlineCalculatorError.InsufficientElementsAdded); // n >= 2 88 88 m_newM = m_oldM + (x - m_oldM) / n; 89 89 m_newS = m_oldS + (x - m_oldM) * (x - m_newM); … … 96 96 } 97 97 98 public static void Calculate(IEnumerable<double> x, out double mean, out double variance, out Online EvaluatorError meanErrorState, out OnlineEvaluatorError varianceErrorState) {98 public static void Calculate(IEnumerable<double> x, out double mean, out double variance, out OnlineCalculatorError meanErrorState, out OnlineCalculatorError varianceErrorState) { 99 99 OnlineMeanAndVarianceCalculator meanAndVarianceCalculator = new OnlineMeanAndVarianceCalculator(); 100 100 foreach (double xi in x) {
Note: See TracChangeset
for help on using the changeset viewer.