Isis 3.0
Back | Home
MaximumLikelihoodWFunctions.h
Go to the documentation of this file.
1 #ifndef MaximumLikelihoodWFunctions_h
2 #define MaximumLikelihoodWFunctions_h
3 
27 #include <QString>
28 
29 namespace Isis {
63  public:
67  // Each model has an accompannying private method that converts from a
68  // resiuduals to a weight scaler.
69  enum Model {
70 
79 
87 
98 
108  };
109  static QString modelToString(Model model);
110  static MaximumLikelihoodWFunctions::Model stringToModel(QString modelName);
111 
113  MaximumLikelihoodWFunctions(Model modelSelection);
114  MaximumLikelihoodWFunctions(Model modelSelection, double tweakingConstant);
118 
119  void setModel(Model modelSelection); // uses default tweaking constant
121 
122  void setModel(Model modelSelection, double tweakingConstant);
124 
125  Model model() const;
126  double tweakingConstant() const;
127 
128  // the W functions provide an additional weighting factor W which is used
129  // to 're-weight' each observation dynamically during an adjustment, the
130  // scalar functions provide access to various flavors of this scalar (as
131  // a function of the residual divided by the residuals sigma)
132 
133  double sqrtWeightScaler(double residualZScore); //it is often convient to use square roots of
134  //weights when building normals, this function
135  // provides the scaler for the square root of
136  // the weight directly
137  double tweakingConstantQuantile(); // returns which quantile of the residuals is recommended to
138  // use as the tweaking constant, this varies as a function of
139  // the model being employed
140 
141  QString weightedResidualCutoff();
142 
143  QDataStream &write(QDataStream &stream) const;
144  QDataStream &read(QDataStream &stream);
145 
146  private:
147  double weightScaler(double residualZScore); // This directly provides the scaler for the weight
148  // (instead of the radical weight), thus it provides
149  // sqrtWeightScaler^2
150  double huber(double residualZScore);
151  double huberModified(double residualZScore);
152  double welsch(double residualZScore);
153  double chen(double residualZScore);
154 
155  Model m_model;
156  double m_tweakingConstant;
164  };
165  // operators to read/write to/from binary data
166  QDataStream &operator<<(QDataStream &stream, const MaximumLikelihoodWFunctions &mlwf);
167  QDataStream &operator>>(QDataStream &stream, MaximumLikelihoodWFunctions &mlwf);
168 
169  QDataStream &operator<<(QDataStream &stream, const MaximumLikelihoodWFunctions::Model &modelEnum);
170  QDataStream &operator>>(QDataStream &stream, MaximumLikelihoodWFunctions::Model &modelEnum);
171 
172 };// end namespace Isis
173 
174 #endif
void setTweakingConstant(double tweakingConstant)
Allows the tweaking constant to be changed without changing the maximum likelihood function...
Definition: MaximumLikelihoodWFunctions.cpp:148
double tweakingConstant() const
Returns the current tweaking constant.
Definition: MaximumLikelihoodWFunctions.cpp:162
~MaximumLikelihoodWFunctions()
Definition: MaximumLikelihoodWFunctions.cpp:61
QDataStream & write(QDataStream &stream) const
Definition: MaximumLikelihoodWFunctions.cpp:412
double tweakingConstantQuantile()
Suggest a quantile of the probility distribution of the residuals to use as the tweaking constants ba...
Definition: MaximumLikelihoodWFunctions.cpp:316
double sqrtWeightScaler(double residualZScore)
This provides the scaler to the sqrt of the weight, which is very useful for building normal equation...
Definition: MaximumLikelihoodWFunctions.cpp:209
QDataStream & read(QDataStream &stream)
Definition: MaximumLikelihoodWFunctions.cpp:420
According to Zhang (Parameter Estimation: A Tutorial with application to conic fitting) "[Huber&#39;s] es...
Definition: MaximumLikelihoodWFunctions.h:78
QString weightedResidualCutoff()
Method to return a string represtentation of the weighted residual cutoff (if it exists) for the Maxi...
Definition: MaximumLikelihoodWFunctions.cpp:392
Model model() const
Accessor method to return the MaximumLikelihoodWFunctions::Model enumeration.
Definition: MaximumLikelihoodWFunctions.cpp:406
Model
The supported maximum likelihood estimation models.
Definition: MaximumLikelihoodWFunctions.h:69
The Chen method was found in &quot;Robust Regression with Projection Based M-estimators&quot; Chen...
Definition: MaximumLikelihoodWFunctions.h:107
A modification to Huber&#39;s method propsed by William J.J.
Definition: MaximumLikelihoodWFunctions.h:86
The Welsch method aggresively discounts measures with large resiudals.
Definition: MaximumLikelihoodWFunctions.h:97
void setModel(Model modelSelection)
Allows the maximum likelihood model to be changed together and the default tweaking constant to be se...
Definition: MaximumLikelihoodWFunctions.cpp:79
MaximumLikelihoodWFunctions()
Sets up a maximumlikelihood estimation function with Huber model and default tweaking constant...
Definition: MaximumLikelihoodWFunctions.cpp:17
void setTweakingConstantDefault()
Sets default tweaking constants based on the maximum likelihood estimation model being used...
Definition: MaximumLikelihoodWFunctions.cpp:90
std::istream & operator>>(std::istream &is, CSVReader &csv)
Input read operator for input stream sources.
Definition: CSVReader.cpp:463
Class provides maximum likelihood estimation functions for robust parameter estimation, e.g.
Definition: MaximumLikelihoodWFunctions.h:62
MaximumLikelihoodWFunctions & operator=(const MaximumLikelihoodWFunctions &other)
Definition: MaximumLikelihoodWFunctions.cpp:65
static QString modelToString(Model model)
Static method to return a string represtentation for a given MaximumLikelihoodWFunctions::Model enum...
Definition: MaximumLikelihoodWFunctions.cpp:347
QDebug operator<<(QDebug debug, const Hillshade &hillshade)
Print this class out to a QDebug object.
Definition: Hillshade.cpp:308
static MaximumLikelihoodWFunctions::Model stringToModel(QString modelName)
Definition: MaximumLikelihoodWFunctions.cpp:359

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the ISIS Support Center
File Modified: 07/12/2023 23:22:57