Brief description of class still missing. More...
#include <StatisticalValue.h>
Public Member Functions | |
void | average (const StatisticalValue &p) |
bool | isValid () const |
const numberType & | mean () const |
double | misfit (int &nValues, int &nData, const Value< numberType > &value, MisfitType type, double min) const |
void | operator= (const StatisticalValue &o) |
bool | operator== (const StatisticalValue &o) const |
void | setMean (const numberType &v) |
void | setStddev (double v) |
void | setValid (bool f) |
void | setWeight (double v) |
StatisticalValue () | |
StatisticalValue (const numberType &mean, double stddev=0.0, double weight=1.0, bool valid=true) | |
double | stddev () const |
double | weight () const |
Static Public Member Functions | |
static MisfitType | misfitType (QString type) |
static QString | misfitTypeString (MisfitType type) |
Protected Member Functions | |
virtual XMLMember | xml_member (XML_MEMBER_ARGS) |
virtual bool | xml_setProperty (XML_SETPROPERTY_ARGS) |
virtual void | xml_writeProperties (XML_WRITEPROPERTIES_ARGS) const |
Protected Attributes | |
numberType | _mean |
double | _stddev |
bool | _valid |
double | _weight |
Brief description of class still missing.
Full description of class still missing
QGpCoreTools::StatisticalValue< numberType >::StatisticalValue | ( | ) | [inline] |
QGpCoreTools::StatisticalValue< numberType >::StatisticalValue | ( | const numberType & | mean, |
double | stddev = 0.0 , |
||
double | weight = 1.0 , |
||
bool | valid = true |
||
) | [inline] |
void QGpCoreTools::StatisticalValue< numberType >::average | ( | const StatisticalValue< numberType > & | p | ) | [inline] |
References QGpCoreTools::StatisticalValue< numberType >::_mean, QGpCoreTools::StatisticalValue< numberType >::_stddev, QGpCoreTools::StatisticalValue< numberType >::_weight, QGpCoreTools::abs2(), QGpCoreTools::StatisticalValue< numberType >::isValid(), QGpCoreTools::sqrt(), and TRACE.
{ TRACE; if(isValid()) { if(o.isValid()) { double wt=_weight+o._weight; _mean=(_mean*_weight+o._mean*o._weight)/wt; double sigma2=_weight*abs2(_mean); if(_weight>1.0) sigma2 += (_weight -1.0)* _stddev*_stddev; else sigma2 += _weight* _stddev*_stddev; sigma2 += o._weight *abs2(o._mean); if(o._weight>1.0) sigma2 += (o._weight-1.0) * o._stddev*o._stddev; else sigma2 += o._weight * o._stddev*o._stddev; sigma2 -= abs2(_mean) * wt; sigma2 /= wt-1; _stddev=::sqrt(sigma2); _weight=wt; } } else if(o.isValid()) { *this=o; } }
bool QGpCoreTools::StatisticalValue< numberType >::isValid | ( | ) | const [inline] |
Referenced by QGpCoreTools::StatisticalValue< numberType >::average(), QGpCoreWave::ModalCurve::determinantMisfit(), QGpCoreWave::AutocorrCurves::dispersionCurve(), SpacSelector::inverse(), DinverDCCore::TargetList::isEmpty(), QGpCoreWave::ModalCurve::misfit(), TargetListWidget::setFrom(), DinverDCGui::EllipticityViewer::setTarget(), DinverDCCore::TargetList::surfaceMisfit(), and DinverDCCore::TargetList::validateTargets().
{return _valid;}
const numberType& QGpCoreTools::StatisticalValue< numberType >::mean | ( | ) | const [inline] |
Referenced by QGpGuiWave::EllipticityProxy::columnValue(), QGpGuiWave::DispersionProxy::columnValue(), QGpGuiWave::AutocorrProxy::columnValue(), SciFigs::ComplexStatisticalProxy::columnValue(), SciFigs::RealStatisticalProxy::columnValue(), QGpGuiWave::RefractionProxy::columnValue(), QGpCoreTools::StatisticalPoint< numberType >::interpole(), QGpCoreTools::StatisticalPoint< numberType >::operator<(), QGpGuiWave::DispersionProxy::parse(), QGpGuiWave::EllipticityProxy::parse(), QGpGuiWave::RefractionProxy::parse(), QGpCoreWave::Ellipticity::peakMisfit(), SciFigs::ComplexStatisticalLine::point(), SciFigs::RealStatisticalLine::point(), QGpGuiWave::MagnetoTelluricLine::point(), QGpGuiWave::ModalLine::point(), QGpGuiWave::RefractionLine::point(), SciFigs::ComplexStatisticalProxy::setColumnValue(), DinverDCGui::EllipticityViewer::setTarget(), EllipticityPeakTargetWidget::setValue(), SciFigs::ComplexStatisticalLine::setY(), QGpGuiWave::MagnetoTelluricLine::setY(), and TargetListWidget::updateInfo().
{return _mean;}
double QGpCoreTools::StatisticalValue< numberType >::misfit | ( | int & | nValues, |
int & | nData, | ||
const Value< numberType > & | value, | ||
MisfitType | type, | ||
double | min | ||
) | const |
Returns a misfit value comparing val with the mean and stddev.
nValues is incremented by one if the value and this point are valid. nData is incremented by one if this point is valid.
If min is greater than 0, the difference between val and mean (eventually normalized) is clipped to min.
References QGpCoreTools::abs(), QGpCoreTools::Akaike, QGpCoreTools::AkaikeFewSamples, QGpCoreTools::Value< numberType >::isValid(), QGpCoreTools::L1, QGpCoreTools::L1_LogNormalized, QGpCoreTools::L1_Normalized, QGpCoreTools::L1_NormalizedBySigmaOnly, QGpCoreTools::L2, QGpCoreTools::L2_LogNormalized, QGpCoreTools::L2_Normalized, QGpCoreTools::L2_NormalizedBySigmaOnly, QGpCoreTools::log(), TRACE, and QGpCoreTools::Value< numberType >::value().
Referenced by Spac3CForward::misfit(), QGpCoreWave::MagnetoTelluricCurve::misfit(), QGpCoreWave::RefractionCurve::misfit(), and QGpCoreWave::ModalCurve::misfit().
{ TRACE; if(isValid()) { nData++; if(val.isValid()) { nValues++; double diff; switch (type) { case L1: diff=abs(_mean - val.value()); if(diff<min) diff=min; return diff; case L1_Normalized: if(_stddev>0.0) { diff=abs((_mean - val.value())/_stddev); } else { diff=abs((_mean - val.value())/_mean); } if(diff<min) diff=min; return diff; case L1_LogNormalized: if(_stddev>1.0) { diff=abs((log(_mean/val.value()))/log(_stddev)); } else { diff=abs((log(_mean/val.value()))/log(_mean)); } if(diff<min) diff=min; return diff; case L1_NormalizedBySigmaOnly: if(_stddev>0.0) { diff=abs((_mean - val.value())/_stddev); } else { diff=abs(_mean - val.value()); } if(diff<min) diff=min; return diff; case L2: diff=abs(_mean - val.value()); if(diff<min) diff=min; return diff*diff; case L2_Normalized: if(_stddev>0.0) { diff=abs((_mean - val.value())/_stddev); } else { diff=abs((_mean - val.value())/_mean); } if(diff<min) diff=min; return diff*diff; case L2_LogNormalized: if(_stddev>1.0) { diff=abs((log(_mean/val.value()))/log(_stddev)); } else { diff=abs((log(_mean/val.value()))/log(_mean)); } if(diff<min) diff=min; return diff*diff; case L2_NormalizedBySigmaOnly: if(_stddev>0.0) { diff=abs((_mean - val.value())/_stddev); } else { diff=abs(_mean - val.value()); } if(diff<min) diff=min; return diff*diff; case Akaike: case AkaikeFewSamples: diff=abs(_mean - val.value()); if(diff<min) diff=min; return diff*diff; } return 0.0; } else { return 0.0; } } else { return 0.0; } }
MisfitType QGpCoreTools::StatisticalValue< numberType >::misfitType | ( | QString | type | ) | [static] |
References QGpCoreTools::Akaike, QGpCoreTools::AkaikeFewSamples, QGpCoreTools::L1, QGpCoreTools::L1_Normalized, QGpCoreTools::L2, QGpCoreTools::L2_Normalized, QGpCoreTools::L2_NormalizedBySigmaOnly, and TRACE.
{ TRACE; if(type.count()>1) { switch(type[1].unicode()) { case '1': if(type=="L1") return L1; else return L1_Normalized; case '2': if(type=="L2") return L2; else if(type=="L2_Normalized") return L2_Normalized; else return L2_NormalizedBySigmaOnly; case 'k': if(type=="Akaike") return Akaike; else return AkaikeFewSamples; break; default: break; } } return L2_Normalized; }
QString QGpCoreTools::StatisticalValue< numberType >::misfitTypeString | ( | MisfitType | type | ) | [static] |
References QGpCoreTools::Akaike, QGpCoreTools::AkaikeFewSamples, QGpCoreTools::L1, QGpCoreTools::L1_LogNormalized, QGpCoreTools::L1_Normalized, QGpCoreTools::L1_NormalizedBySigmaOnly, QGpCoreTools::L2, QGpCoreTools::L2_LogNormalized, QGpCoreTools::L2_Normalized, QGpCoreTools::L2_NormalizedBySigmaOnly, and TRACE.
{ TRACE; switch (type) { case L1: return "L1"; case L1_Normalized: return "L1_Normalized"; case L1_LogNormalized: return "L1_LogNormalized"; case L1_NormalizedBySigmaOnly: return "L1_NormalizedBySigmaOnly"; case L2: return "L2"; case L2_Normalized: return "L2_Normalized"; case L2_LogNormalized: return "L2_LogNormalized"; case L2_NormalizedBySigmaOnly: return "L2_NormalizedBySigmaOnly"; case Akaike: return "Akaike"; case AkaikeFewSamples: return "AkaikeFewSamples"; } return QString::null; }
void QGpCoreTools::StatisticalValue< numberType >::operator= | ( | const StatisticalValue< numberType > & | o | ) | [inline] |
Reimplemented in QGpCoreTools::StatisticalPoint< numberType >.
References QGpCoreTools::StatisticalValue< numberType >::_mean, QGpCoreTools::StatisticalValue< numberType >::_stddev, QGpCoreTools::StatisticalValue< numberType >::_valid, QGpCoreTools::StatisticalValue< numberType >::_weight, and TRACE.
Referenced by QGpCoreTools::StatisticalPoint< numberType >::operator=().
bool QGpCoreTools::StatisticalValue< numberType >::operator== | ( | const StatisticalValue< numberType > & | o | ) | const [inline] |
References QGpCoreTools::StatisticalValue< numberType >::_mean, QGpCoreTools::StatisticalValue< numberType >::_stddev, QGpCoreTools::StatisticalValue< numberType >::_valid, and QGpCoreTools::StatisticalValue< numberType >::_weight.
Referenced by QGpCoreTools::StatisticalPoint< numberType >::operator==().
void QGpCoreTools::StatisticalValue< numberType >::setMean | ( | const numberType & | v | ) | [inline] |
Referenced by QGpCoreWave::MagnetoTelluricFactory::curve(), QGpCompatibility::CompatMultiModalData::curve(), QGpCoreTools::StatisticalPoint< numberType >::fromString(), Histogram2D::meanCurve(), Histogram2D::medianCurve(), Histogram2D::modeCurve(), QGpCoreTools::operator>>(), QGpGuiWave::DispersionProxy::parse(), QGpGuiWave::EllipticityProxy::parse(), QGpGuiWave::AutocorrProxy::parse(), SciFigs::ComplexStatisticalProxy::parse(), SciFigs::RealStatisticalProxy::parse(), QGpGuiWave::RefractionProxy::parse(), SPACLoopTask::run(), QGpGuiWave::EllipticityProxy::setColumnValue(), QGpGuiWave::DispersionProxy::setColumnValue(), QGpGuiWave::AutocorrProxy::setColumnValue(), SciFigs::ComplexStatisticalProxy::setColumnValue(), SciFigs::RealStatisticalProxy::setColumnValue(), QGpGuiWave::RefractionProxy::setColumnValue(), SciFigs::ComplexStatisticalLine::setY(), QGpGuiWave::MagnetoTelluricLine::setY(), QGpCoreTools::ProcessStatistics::value(), QGpCoreTools::ProcessStatistics::valueLog(), and DinverDCCore::TargetList::xml_polishChild().
{_mean=v;}
void QGpCoreTools::StatisticalValue< numberType >::setStddev | ( | double | v | ) | [inline] |
Referenced by QGpCompatibility::CompatMultiModalData::curve(), SpacSelector::inverseAt(), Histogram2D::meanCurve(), Histogram2D::medianCurve(), Histogram2D::modeCurve(), QGpCoreTools::operator>>(), QGpGuiWave::DispersionProxy::parse(), QGpGuiWave::EllipticityProxy::parse(), QGpGuiWave::AutocorrProxy::parse(), SciFigs::ComplexStatisticalProxy::parse(), SciFigs::RealStatisticalProxy::parse(), QGpGuiWave::RefractionProxy::parse(), SPACLoopTask::run(), QGpGuiWave::EllipticityProxy::setColumnValue(), QGpGuiWave::DispersionProxy::setColumnValue(), QGpGuiWave::AutocorrProxy::setColumnValue(), SciFigs::ComplexStatisticalProxy::setColumnValue(), SciFigs::RealStatisticalProxy::setColumnValue(), QGpGuiWave::RefractionProxy::setColumnValue(), EllipticityPeakTargetWidget::value(), QGpCoreTools::ProcessStatistics::value(), QGpCoreTools::ProcessStatistics::valueLog(), and DinverDCCore::TargetList::xml_polishChild().
{_stddev=v;}
void QGpCoreTools::StatisticalValue< numberType >::setValid | ( | bool | f | ) | [inline] |
void QGpCoreTools::StatisticalValue< numberType >::setWeight | ( | double | v | ) | [inline] |
Referenced by QGpCompatibility::CompatMultiModalData::curve(), QGpCoreTools::StatisticalPoint< numberType >::fromString(), Histogram2D::meanCurve(), Histogram2D::medianCurve(), Histogram2D::modeCurve(), QGpCoreTools::operator>>(), QGpGuiWave::DispersionProxy::parse(), QGpGuiWave::EllipticityProxy::parse(), QGpGuiWave::AutocorrProxy::parse(), SciFigs::ComplexStatisticalProxy::parse(), SciFigs::RealStatisticalProxy::parse(), QGpGuiWave::RefractionProxy::parse(), SPACLoopTask::run(), QGpGuiWave::EllipticityProxy::setColumnValue(), QGpGuiWave::DispersionProxy::setColumnValue(), QGpGuiWave::AutocorrProxy::setColumnValue(), SciFigs::RealStatisticalProxy::setColumnValue(), SciFigs::ComplexStatisticalProxy::setColumnValue(), QGpGuiWave::RefractionProxy::setColumnValue(), QGpCoreTools::ProcessStatistics::value(), QGpCoreTools::ProcessStatistics::valueLog(), DinverDCCore::ValueTarget::ValueTarget(), and DinverDCCore::TargetList::xml_polishChild().
double QGpCoreTools::StatisticalValue< numberType >::stddev | ( | ) | const [inline] |
Referenced by QGpGuiWave::EllipticityProxy::columnValue(), QGpGuiWave::DispersionProxy::columnValue(), QGpGuiWave::AutocorrProxy::columnValue(), SciFigs::RealStatisticalProxy::columnValue(), SciFigs::ComplexStatisticalProxy::columnValue(), QGpGuiWave::RefractionProxy::columnValue(), QGpCoreTools::StatisticalPoint< numberType >::interpole(), QGpGuiWave::DispersionProxy::parse(), QGpGuiWave::EllipticityProxy::parse(), QGpCoreWave::Ellipticity::peakMisfit(), SciFigs::ComplexStatisticalLine::point(), SciFigs::RealStatisticalLine::point(), QGpGuiWave::MagnetoTelluricLine::point(), QGpGuiWave::ModalLine::point(), QGpGuiWave::RefractionLine::point(), DinverDCGui::EllipticityViewer::setTarget(), and EllipticityPeakTargetWidget::setValue().
{return _stddev;}
double QGpCoreTools::StatisticalValue< numberType >::weight | ( | ) | const [inline] |
Referenced by QGpGuiWave::EllipticityProxy::columnValue(), QGpGuiWave::DispersionProxy::columnValue(), QGpGuiWave::AutocorrProxy::columnValue(), SciFigs::RealStatisticalProxy::columnValue(), SciFigs::ComplexStatisticalProxy::columnValue(), QGpGuiWave::RefractionProxy::columnValue(), and QGpCoreTools::StatisticalPoint< numberType >::interpole().
{return _weight;}
XMLMember QGpCoreTools::StatisticalValue< numberType >::xml_member | ( | XML_MEMBER_ARGS | ) | [protected, virtual] |
Re-implement this function to offer XML restore (children and properties) support to your class.
From tag and map (with contains the attibute value) return a unique identifier under the format of a XMLMember. XMLMember is initialized with 3 types of contructors:
Map of attributes can be inspected in this way (can be achived also in xml_setProperty()):
static const QString tmp("childrenName"); XMLRestoreAttributeIterator it=map.find(tmp); if(it!=map.end()) { // found attribute "childrenName" }
If the map of attributes is not used:
Q_UNUSED(attributes); if(tag=="x1") return XMLMember(0); else if(tag=="y1") return XMLMember(1); else if(tag=="x2") return XMLMember(2); else if(tag=="y2") return XMLMember(3); else return XMLMember(XMLMember::Unknown);
Arithmetic operations + and - apply to XMLMember to avoid confusion of property id numbers between inherited objects. Offset 3 corresponds to the number of properties defined in this object.
if(tag=="anInteger") return XMLMember(0); else if(tag=="aString") return XMLMember(1); else if(tag=="aDouble") return XMLMember(2); return AbstractLine::xml_member(tag, attributes, context)+3;
For the arguments of this function use Macro XML_MEMBER_ARGS.
Reimplemented from QGpCoreTools::XMLClass.
Reimplemented in QGpCoreTools::StatisticalPoint< numberType >, QGpCoreTools::StatisticalPoint< double >, and QGpCoreTools::StatisticalPoint< Complex >.
References TRACE.
Referenced by QGpCoreTools::StatisticalPoint< numberType >::xml_member().
{ TRACE; Q_UNUSED(attributes); Q_UNUSED(context); if(tag=="mean") return XMLMember(0); else if(tag=="stddev") return XMLMember(1); else if(tag=="weight") return XMLMember(2); else if(tag=="valid") return XMLMember(3); else return false; }
bool QGpCoreTools::StatisticalValue< numberType >::xml_setProperty | ( | XML_SETPROPERTY_ARGS | ) | [protected, virtual] |
Re-implement this function to offer XML restore properties support to your class.
From memberID set the corresponding property with value content. The map of attributes is given as a supplementary information (not useful in all cases).
For a general case:
Q_UNUSED(attributes); double val=content.toDouble(); switch (memberID) { case 0: _x1=val; return true; case 1: _y1=val; return true; case 2: _x2=val; return true; case 3: _y2=val; return true; default: return false; }
For classes inheriting other classes (see also xml_member())
switch (memberID) { case 0: _anInteger=content.toString(); return true; case 1: _aString=content.toInt(); return true; case 2: _aDouble=content.toDouble(); return true; default: return AbstractLine::xml_setProperty(memberID-3, map, content);
For the arguments of this function use Macro XML_SETPROPERTY_ARGS.
Reimplemented from QGpCoreTools::XMLClass.
Reimplemented in QGpCoreTools::StatisticalPoint< numberType >, QGpCoreTools::StatisticalPoint< double >, and QGpCoreTools::StatisticalPoint< Complex >.
References SAFE_UNINITIALIZED, and TRACE.
Referenced by QGpCoreTools::StatisticalPoint< numberType >::xml_setProperty().
{ TRACE; Q_UNUSED(tag); Q_UNUSED(attributes); Q_UNUSED(context); switch (memberID) { case 0: { numberType tmp; SAFE_UNINITIALIZED(tmp, 0); _mean=content.to(tmp); } return true; case 1: _stddev=content.toDouble(); return true; case 2: _weight=content.toDouble(); return true; case 3: _valid=content.toBool(); return true; default: return false; } }
void QGpCoreTools::StatisticalValue< numberType >::xml_writeProperties | ( | XML_WRITEPROPERTIES_ARGS | ) | const [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
Reimplemented in QGpCoreTools::StatisticalPoint< numberType >, QGpCoreTools::StatisticalPoint< double >, and QGpCoreTools::StatisticalPoint< Complex >.
References TRACE.
Referenced by QGpCoreTools::StatisticalPoint< numberType >::xml_writeProperties().
{ TRACE; Q_UNUSED(context); writeProperty(s,"mean",_mean); writeProperty(s,"stddev",_stddev); writeProperty(s,"weight",_weight); writeProperty(s,"valid",_valid); }
numberType QGpCoreTools::StatisticalValue< numberType >::_mean [protected] |
double QGpCoreTools::StatisticalValue< numberType >::_stddev [protected] |
bool QGpCoreTools::StatisticalValue< numberType >::_valid [protected] |
double QGpCoreTools::StatisticalValue< numberType >::_weight [protected] |