49 double tweakingConstant) {
51 setModel(modelSelection, tweakingConstant);
56 : m_model(other.m_model),
57 m_tweakingConstant(other.m_tweakingConstant) {
61 MaximumLikelihoodWFunctions::~MaximumLikelihoodWFunctions() {
65 MaximumLikelihoodWFunctions &MaximumLikelihoodWFunctions::operator=(
66 const MaximumLikelihoodWFunctions &other) {
150 if (tweakingConstant <= 0.0) {
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;
353 "Unknown estimation model enum [" +
toString(model) +
"].",
360 if (modelName.compare(
"HUBER", Qt::CaseInsensitive) == 0) {
363 else if (modelName.compare(
"HUBER_MODIFIED", Qt::CaseInsensitive) == 0) {
366 else if (modelName.compare(
"HUBERMODIFIED", Qt::CaseInsensitive) == 0) {
369 else if (modelName.compare(
"WELSCH", Qt::CaseInsensitive) == 0) {
372 else if (modelName.compare(
"CHEN", Qt::CaseInsensitive) == 0) {
377 "Unknown maximum likelihood model name " + modelName +
".",
412 QDataStream &MaximumLikelihoodWFunctions::write(QDataStream &stream)
const {
420 QDataStream &MaximumLikelihoodWFunctions::read(QDataStream &stream) {
429 QDataStream &
operator<<(QDataStream &stream,
const MaximumLikelihoodWFunctions &mlwf) {
430 return mlwf.write(stream);
435 QDataStream &
operator>>(QDataStream &stream, MaximumLikelihoodWFunctions &mlwf) {
436 return mlwf.read(stream);
442 stream << (qint32)modelEnum;
450 stream >> modelInteger;
void setTweakingConstant(double tweakingConstant)
Allows the tweaking constant to be changed without changing the maximum likelihood function...
double tweakingConstant() const
Returns the current tweaking constant.
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...
Model model() const
Accessor method to return the MaximumLikelihoodWFunctions::Model enumeration.
Model m_model
The enumerated value for the maximum likelihood estimation model to be used.
const double HALFPI(1.57079632679489661923)
The mathematical constant PI/2.
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.
Adds specific functionality to C++ strings.
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.