10 #ifndef __MESTIMATOR_H
11 #define __MESTIMATOR_H
21 inline static double FindSigmaSquared(std::vector<double> &vdErrorSquared);
22 inline static double SquareRootWeight(
double dErrorSquared,
double dSigmaSquared);
23 inline static double Weight(
double dErrorSquared,
double dSigmaSquared);
24 inline static double ObjectiveScore(
double dErrorSquared,
double dSigmaSquared);
29 inline static double FindSigmaSquared(std::vector<double> &vdErrorSquared);
30 inline static double SquareRootWeight(
double dErrorSquared,
double dSigmaSquared);
31 inline static double Weight(
double dErrorSquared,
double dSigmaSquared);
32 inline static double ObjectiveScore(
double dErrorSquared,
double dSigmaSquared);
37 inline static double FindSigmaSquared(std::vector<double> &vdErrorSquared);
38 inline static double SquareRootWeight(
double dErrorSquared,
double dSigmaSquared);
39 inline static double Weight(
double dErrorSquared,
double dSigmaSquared);
40 inline static double ObjectiveScore(
double dErrorSquared,
double dSigmaSquared);
45 inline static double FindSigmaSquared(std::vector<double> &vdErrorSquared);
46 inline static double SquareRootWeight(
double dErrorSquared,
double dSigmaSquared);
47 inline static double Weight(
double dErrorSquared,
double dSigmaSquared);
48 inline static double ObjectiveScore(
double dErrorSquared,
double dSigmaSquared);
54 double dSqrt = SquareRootWeight(dErrorSquared, dSigmaSquared);
60 if(dErrorSquared > dSigmaSquared)
63 return 1.0 - (dErrorSquared / dSigmaSquared);
70 if(dErrorSquared > dSigmaSquared)
72 double d = 1.0 - dErrorSquared / dSigmaSquared;
80 assert(vdErrorSquared.size() > 0);
81 std::sort(vdErrorSquared.begin(), vdErrorSquared.end());
82 double dMedianSquared = vdErrorSquared[vdErrorSquared.size() / 2];
83 double dSigma = 1.4826 * (1 + 5.0 / (vdErrorSquared.size() * 2 - 6)) * sqrt(dMedianSquared);
84 dSigma = 4.6851 * dSigma;
85 dSigmaSquared = dSigma * dSigma;
97 return 1.0 / (1.0 + dErrorSquared / dSigmaSquared);
102 return sqrt(Weight(dErrorSquared, dSigmaSquared));
107 return log(1.0 + dErrorSquared / dSigmaSquared);
113 double dSigmaSquared;
114 assert(vdErrorSquared.size() > 0);
115 std::sort(vdErrorSquared.begin(), vdErrorSquared.end());
116 double dMedianSquared = vdErrorSquared[vdErrorSquared.size() / 2];
117 double dSigma = 1.4826 * (1 + 5.0 / (vdErrorSquared.size() * 2 - 6)) * sqrt(dMedianSquared);
118 dSigma = 4.6851 * dSigma;
119 dSigmaSquared = dSigma * dSigma;
120 return dSigmaSquared;
131 if(dErrorSquared < dSigmaSquared)
134 return sqrt(dSigmaSquared / dErrorSquared);
139 return sqrt(Weight(dErrorSquared, dSigmaSquared));
144 if(dErrorSquared< dSigmaSquared)
145 return 0.5 * dErrorSquared;
148 double dSigma = sqrt(dSigmaSquared);
149 double dError = sqrt(dErrorSquared);
150 return dSigma * ( dError - 0.5 * dSigma);
157 double dSigmaSquared;
158 assert(vdErrorSquared.size() > 0);
159 std::sort(vdErrorSquared.begin(), vdErrorSquared.end());
160 double dMedianSquared = vdErrorSquared[vdErrorSquared.size() / 2];
161 double dSigma = 1.4826 * (1 + 5.0 / (vdErrorSquared.size() * 2 - 6)) * sqrt(dMedianSquared);
162 dSigma = 1.345 * dSigma;
163 dSigmaSquared = dSigma * dSigma;
164 return dSigmaSquared;
184 return dErrorSquared;
190 if(vdErrorSquared.size() == 0)
193 for(
unsigned int i=0; i<vdErrorSquared.size(); i++)
194 dSum+=vdErrorSquared[i];
195 return dSum / vdErrorSquared.size();
static double Weight(double dErrorSquared, double dSigmaSquared)
static double ObjectiveScore(double dErrorSquared, double dSigmaSquared)
static double SquareRootWeight(double dErrorSquared, double dSigmaSquared)
static double Weight(double dErrorSquared, double dSigmaSquared)
Everything lives inside this namespace.
static double SquareRootWeight(double dErrorSquared, double dSigmaSquared)
static double FindSigmaSquared(std::vector< double > &vdErrorSquared)
static double FindSigmaSquared(std::vector< double > &vdErrorSquared)
static double Weight(double dErrorSquared, double dSigmaSquared)
static double ObjectiveScore(double dErrorSquared, double dSigmaSquared)
static double Weight(double dErrorSquared, double dSigmaSquared)
static double ObjectiveScore(double dErrorSquared, double dSigmaSquared)
static double FindSigmaSquared(std::vector< double > &vdErrorSquared)
static double SquareRootWeight(double dErrorSquared, double dSigmaSquared)
static double FindSigmaSquared(std::vector< double > &vdErrorSquared)
static double ObjectiveScore(double dErrorSquared, double dSigmaSquared)
static double SquareRootWeight(double dErrorSquared, double dSigmaSquared)