Isis Developer Reference
|
This class is used to approximate cumulative probibility distributions of a stream of observations without storing the observations or having any apriori knowlege of the range of the data. More...
#include <StatCumProbDistDynCalc.h>
Public Member Functions | |
StatCumProbDistDynCalc (unsigned int nodes=20, QObject *parent=0) | |
Construtor sets up the class to start recieving data. | |
StatCumProbDistDynCalc (Project *project, XmlStackedHandlerReader *xmlReader, QObject *parent=0) | |
StatCumProbDistDynCalc (const StatCumProbDistDynCalc &other) | |
~StatCumProbDistDynCalc () | |
Destroys StatCumProbDistDynCalc object. | |
StatCumProbDistDynCalc & | operator= (const StatCumProbDistDynCalc &other) |
void | initialize () |
Inializer, resets the class to start its dynamic calculation anew. | |
void | setQuantiles (unsigned int nodes) |
void | validate () |
void | addObs (double obs) |
Values for the estimated quantile positions are update as observations are added. | |
double | cumProb (double value) |
Provides the cumulative probility, that is, the proportion of the distribution that is less than or equal to the value given (according the current estimate of cumulative probility function). | |
double | value (double cumProb) |
Provides the value of the variable that has the given cumulative probility (according the current estimate of cumulative probility function) | |
double | max () |
Returns the maximum observation so far included in the dynamic calculation. | |
double | min () |
Returns the maximum observation so far included in the dynamic calculation. | |
void | save (QXmlStreamWriter &stream, const Project *project) const |
QDataStream & | write (QDataStream &stream) const |
QDataStream & | read (QDataStream &stream) |
This class is used to approximate cumulative probibility distributions of a stream of observations without storing the observations or having any apriori knowlege of the range of the data.
This class is used to approximate cumulative probibility distributions of a stream of observations without storing the observations or having any apriori knowlege of the range of the data. "The P^2 algorithim for dynamic calculation of Quantiles and Histograms without storing Observations" Raj Jain and Imrich Chlamtac, Communication of the ACM Oct 1985, is used. A finite set of evenly spaced qunatiles are dynamically updated as more observations are added. The number of quantiles is set in the construtor, and has a defualt of 20. After sufficient data points (number of observations >> number of quantiles to track) the class provides cumulative probility as a function of value or vice versa. Thus it can be used to build histograms or find any number of discrete quantiles. Specific points on the function are evaluated by fiting piece wise parabolic functions to the three nearest adjacent nodes. Preformance of algorithim is within a few percent error for most of the distribution (given sufficient data), however care should be taken if the points to be querried are within 200/(numberOfQuantiles-1)% of the edges of the distributions. Near the edges the individual quantiles are still well calculated, but the piece wise parabolic function doesn't always fit the tails well, so interpolated points are more unrealiable. Developement note: Two possible ways to improve the fitting of the tails: caculate more densely place quantiles near the edges, use exponential regression (or some other alternative–perhaps adaptively selected).
Isis::StatCumProbDistDynCalc::StatCumProbDistDynCalc | ( | unsigned int | nodes = 20, |
QObject * | parent = 0 ) |
Construtor sets up the class to start recieving data.
[in] | unsigned | int nodes – this is the number of specific evenly spaced quantiles that will be dynamically tracked |
References initialize(), and setQuantiles().
Isis::StatCumProbDistDynCalc::StatCumProbDistDynCalc | ( | Project * | project, |
XmlStackedHandlerReader * | xmlReader, | ||
QObject * | parent = 0 ) |
References initialize().
Isis::StatCumProbDistDynCalc::StatCumProbDistDynCalc | ( | const StatCumProbDistDynCalc & | other | ) |
Isis::StatCumProbDistDynCalc::~StatCumProbDistDynCalc | ( | ) |
Destroys StatCumProbDistDynCalc object.
void Isis::StatCumProbDistDynCalc::addObs | ( | double | obs | ) |
Values for the estimated quantile positions are update as observations are added.
[in] | double | obs – the individual observation to be used to dynamically readjust the cumulative probility distribution |
Referenced by Isis::BundleResults::addProbabilityDistributionObservation(), and Isis::BundleResults::addResidualsProbabilityDistributionObservation().
double Isis::StatCumProbDistDynCalc::cumProb | ( | double | value | ) |
Provides the cumulative probility, that is, the proportion of the distribution that is less than or equal to the value given (according the current estimate of cumulative probility function).
[in] | value | – the upper bound of values considered in the cumlative probility calculation |
IsisProgrammerError | – StatCumProbDistDynCalc will return no data until there has been at least m_numberQuantiles observations added |
References validate(), and value().
Referenced by value().
void Isis::StatCumProbDistDynCalc::initialize | ( | ) |
Inializer, resets the class to start its dynamic calculation anew.
[in] | unsigned | int nodes – this is the number of specific evenly spaced quantiles that will be dynamically tracked |
Referenced by setQuantiles(), StatCumProbDistDynCalc(), and StatCumProbDistDynCalc().
double Isis::StatCumProbDistDynCalc::max | ( | ) |
Returns the maximum observation so far included in the dynamic calculation.
IsisProgrammerError | – StatCumProbDistDynCalc will return no data until the number of observations added matches the number of quantiles (i.e. number of nodes) selected. |
References validate().
Referenced by Isis::BundleSolutionInfo::outputHeader().
double Isis::StatCumProbDistDynCalc::min | ( | ) |
Returns the maximum observation so far included in the dynamic calculation.
IsisProgrammerError | – StatCumProbDistDynCalc will return no data until the number of observations added matches the number of quantiles (i.e. number of nodes) selected. |
References validate().
Referenced by Isis::BundleSolutionInfo::outputHeader().
StatCumProbDistDynCalc & Isis::StatCumProbDistDynCalc::operator= | ( | const StatCumProbDistDynCalc & | other | ) |
QDataStream & Isis::StatCumProbDistDynCalc::read | ( | QDataStream & | stream | ) |
void Isis::StatCumProbDistDynCalc::save | ( | QXmlStreamWriter & | stream, |
const Project * | project ) const |
References Isis::toString().
void Isis::StatCumProbDistDynCalc::setQuantiles | ( | unsigned int | nodes | ) |
void Isis::StatCumProbDistDynCalc::validate | ( | ) |
References _FILEINFO_, Isis::IException::Programmer, and Isis::toString().
double Isis::StatCumProbDistDynCalc::value | ( | double | cumProb | ) |
Provides the value of the variable that has the given cumulative probility (according the current estimate of cumulative probility function)
[in] | cumProb | – cumlative probability, domain [0, 1] |
IsisProgrammerError | – StatCumProbDistDynCalc will return no data until the number of observations added matches the number of quantiles (i.e. number of nodes) selected. |
IsisProgrammerError | – Invalid cumulative probability passed in to StatCumProbDistDynCalc::value(double cumProb). Must be on the domain [0, 1]. |
References _FILEINFO_, cumProb(), Isis::IException::Programmer, Isis::toString(), and validate().
Referenced by cumProb(), Isis::BundleSolutionInfo::outputHeader(), and Isis::BundleResults::printMaximumLikelihoodTierInformation().
QDataStream & Isis::StatCumProbDistDynCalc::write | ( | QDataStream & | stream | ) | const |