00001 00023 #ifndef GALOIS_ONLINESTATS_H 00024 #define GALOIS_ONLINESTATS_H 00025 00026 class OnlineStat { 00027 unsigned int n; 00028 double mean; 00029 double M2; 00030 00031 public: 00032 OnlineStat() :n(0), mean(0.0), M2(0.0) {} 00033 00034 void reset() { 00035 M2 = mean = 0.0; 00036 n = 0; 00037 } 00038 00039 void insert(double x) { 00040 n += 1; 00041 double delta = x - mean; 00042 mean += delta / n; 00043 M2 += delta * (x - mean); 00044 } 00045 00046 double getVariance() const { 00047 return M2/(n - 1); 00048 } 00049 00050 double getStdDeviation() const { 00051 return M2/n; 00052 } 00053 00054 unsigned int getCount() const { 00055 return n; 00056 } 00057 00058 double getMean() const { 00059 return mean; 00060 } 00061 00062 }; 00063 00064 #endif