49 double tweakingConstant) {
56 : m_model(other.m_model),
57 m_tweakingConstant(other.m_tweakingConstant) {
61 MaximumLikelihoodWFunctions::~MaximumLikelihoodWFunctions() {
65 MaximumLikelihoodWFunctions &MaximumLikelihoodWFunctions::operator=(
66 const MaximumLikelihoodWFunctions &other) {
151 IString msg =
"Maximum likelihood estimation tweaking constants must be > 0.0";
184 return this->
huber(residualZScore);
188 return this->
welsch(residualZScore);
190 return this->
chen(residualZScore);
279 return exp(-(weightFactor)*(weightFactor));
298 - residualZScore * residualZScore;
299 return 6 * weightFactor * weightFactor;
360 if (modelName.compare(
"HUBER", Qt::CaseInsensitive) == 0) {
363 else if (modelName.compare(
"HUBER_MODIFIED", Qt::CaseInsensitive) == 0 ||
364 modelName.compare(
"HUBERMODIFIED", Qt::CaseInsensitive) == 0 ||
365 modelName.compare(
"HUBER MODIFIED", Qt::CaseInsensitive) == 0) {
368 else if (modelName.compare(
"WELSCH", Qt::CaseInsensitive) == 0) {
371 else if (modelName.compare(
"CHEN", Qt::CaseInsensitive) == 0) {
376 "Unknown maximum likelihood model name " + modelName +
".",
411 QDataStream &MaximumLikelihoodWFunctions::write(QDataStream &stream)
const {
419 QDataStream &MaximumLikelihoodWFunctions::read(QDataStream &stream) {
428 QDataStream &
operator<<(QDataStream &stream,
const MaximumLikelihoodWFunctions &mlwf) {
429 return mlwf.write(stream);
434 QDataStream &
operator>>(QDataStream &stream, MaximumLikelihoodWFunctions &mlwf) {
435 return mlwf.read(stream);
441 stream << (qint32)modelEnum;
449 stream >> modelInteger;
void setTweakingConstant(double tweakingConstant)
Allows the tweaking constant to be changed without changing the maximum likelihood function...
double tweakingConstantQuantile()
Suggest a quantile of the probility distribution of the residuals to use as the tweaking constants ba...
double sqrtWeightScaler(double residualZScore)
This provides the scaler to the sqrt of the weight, which is very useful for building normal equation...
According to Zhang (Parameter Estimation: A Tutorial with application to conic fitting) "[Huber's] es...
double weightScaler(double residualZScore)
This provides the scalar for the weight (not the scaler for the square root of the weight...
QString weightedResidualCutoff()
Method to return a string represtentation of the weighted residual cutoff (if it exists) for the Maxi...
const double HALFPI
The mathematical constant PI/2.
Model m_model
The enumerated value for the maximum likelihood estimation model to be used.
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
double chen(double residualZScore)
Modified Huber maximum likelihood estimation function evaluation.
Model
The supported maximum likelihood estimation models.
This error is for when a programmer made an API call that was illegal.
double huber(double residualZScore)
Huber maximum likelihood estimation function evaluation.
The Chen method was found in "Robust Regression with Projection Based M-estimators" Chen...
A modification to Huber's method propsed by William J.J.
The Welsch method aggresively discounts measures with large resiudals.
void setModel(Model modelSelection)
Allows the maximum likelihood model to be changed together and the default tweaking constant to be se...
MaximumLikelihoodWFunctions()
Sets up a maximumlikelihood estimation function with Huber model and default tweaking constant...
void setTweakingConstantDefault()
Sets default tweaking constants based on the maximum likelihood estimation model being used...
double m_tweakingConstant
The tweaking constant for the maximum likelihood models.
#define _FILEINFO_
Macro for the filename and line number.
std::istream & operator>>(std::istream &is, CSVReader &csv)
Input read operator for input stream sources.
Class provides maximum likelihood estimation functions for robust parameter estimation, e.g.
double huberModified(double residualZScore)
Modified Huber maximum likelihood estimation function evaluation.
double welsch(double residualZScore)
Modified Huber maximum likelihood estimation function evaluation.
Model model() const
Accessor method to return the MaximumLikelihoodWFunctions::Model enumeration.
Adds specific functionality to C++ strings.
Namespace for ISIS/Bullet specific routines.
double tweakingConstant() const
Returns the current tweaking constant.
static QString modelToString(Model model)
Static method to return a string represtentation for a given MaximumLikelihoodWFunctions::Model enum...
QDebug operator<<(QDebug debug, const Hillshade &hillshade)
Print this class out to a QDebug object.