gstlearn  0.2.1
Geostatistics & Machine Learning toolbox
PCA Class Reference

#include <PCA.hpp>

Inheritance diagram for PCA:
AStringable

Public Member Functions

 PCA (int nvar=0)
 
 PCA (const Db *db, bool verbose=false)
 
 PCA (Db *db, double h0, double dh, const DirParam &dirparam=DirParam(), bool verbose=false)
 
 PCA (const PCA &m)
 
PCAoperator= (const PCA &m)
 
virtual ~PCA ()
 
virtual String toString (const AStringFormat *strfmt=nullptr) const override
 Interface for AStringable. More...
 
void init (int nvar)
 
const VectorDoublegetEigens () const
 
double getEigen (int ivar) const
 
VectorDouble getVarianceRatio () const
 
const VectorDoublegetMeans () const
 
double getMean (int ivar) const
 
int getNVar () const
 
const VectorDoublegetF2Z () const
 
double getF2Z (int ivar, int jvar) const
 
const VectorDoublegetZ2F () const
 
double getZ2F (int ivar, int jvar) const
 
const VectorDoublegetSigmas () const
 
double getSigma (int ivar) const
 
void setPcaZ2F (const VectorDouble &pcaz2f)
 
void setPcaZ2F (int ivar, int jvar, double pcaz2f)
 
void setPcaF2Z (VectorDouble &pcaf2z)
 
void setEigen (VectorDouble &eigen)
 
void setEigen (int ivar, double eigen)
 
void setMean (const VectorDouble &mean)
 
void setSigma (const VectorDouble &sigma)
 
int pca_compute (const Db *db, bool verbose=false)
 
int maf_compute (Db *db, double h0, double dh, const DirParam &dirparam, bool verbose=false)
 
int dbZ2F (Db *db, bool verbose=false, const NamingConvention &namconv=NamingConvention("Z2F"))
 
int dbF2Z (Db *db, bool verbose=false, const NamingConvention &namconv=NamingConvention("F2Z"))
 
VectorDouble mafOfIndex () const
 
- Public Member Functions inherited from AStringable
 AStringable ()
 
 AStringable (const AStringable &r)
 
AStringableoperator= (const AStringable &r)
 
virtual ~AStringable ()
 
virtual void display (const AStringFormat *strfmt=nullptr) const final
 
virtual void display (int level) const final
 

Private Member Functions

int _getAddress (int ivar, int jvar) const
 
VectorBool _getVectorIsotopic (const Db *db)
 
void _loadData (const Db *db, int iech, VectorDouble &data)
 
int _calculateEigen (VectorDouble &c0)
 
int _pcaCalculate (const Db *db, const VectorBool &isoFlag, bool verbose)
 
int _normalization (const Db *db, const VectorBool &isoFlag, VectorDouble &mean, VectorDouble &sigma, bool verbose=false, bool flag_nm1=false)
 
void _covariance0 (const Db *db, const VectorBool &isoFlag, const VectorDouble &mean, const VectorDouble &sigma, VectorDouble &c0, bool verbose=false, bool flag_nm1=false)
 
int _covarianceh (Db *db, double h0, double dh, const DirParam &dirparam, const VectorBool &isoFlag, VectorDouble &ch, bool verbose=false)
 
void _center (VectorDouble &data, const VectorDouble &mean, const VectorDouble &sigma, bool flag_center=true, bool flag_scale=false)
 
void _uncenter (VectorDouble &data, const VectorDouble &mean, const VectorDouble &sigma, bool flag_center=true, bool flag_scale=false)
 
void _pcaZ2F (int iptr, Db *db, const VectorBool isoFlag, const VectorDouble &mean, const VectorDouble &sigma)
 
void _pcaF2Z (int iptr, Db *db, const VectorBool &isoFlag, const VectorDouble &mean, const VectorDouble &sigma)
 

Private Attributes

int _nVar
 
VectorDouble _mean
 
VectorDouble _sigma
 
VectorDouble _eigen
 
VectorDouble _Z2F
 
VectorDouble _F2Z
 

Constructor & Destructor Documentation

◆ PCA() [1/4]

PCA::PCA ( int  nvar = 0)

◆ PCA() [2/4]

PCA::PCA ( const Db db,
bool  verbose = false 
)

◆ PCA() [3/4]

PCA::PCA ( Db db,
double  h0,
double  dh,
const DirParam dirparam = DirParam(),
bool  verbose = false 
)

◆ PCA() [4/4]

PCA::PCA ( const PCA m)

◆ ~PCA()

PCA::~PCA ( )
virtual

Member Function Documentation

◆ _calculateEigen()

int PCA::_calculateEigen ( VectorDouble c0)
private

◆ _center()

void PCA::_center ( VectorDouble data,
const VectorDouble mean,
const VectorDouble sigma,
bool  flag_center = true,
bool  flag_scale = false 
)
private

Normalize the isotropic array of values

Parameters
[in,out]dataArray of information
[in]meanArray containing the mean
[in]sigmaArray containing the standard deviation
[in]flag_centerTrue if result must be centered by 'mean'
[in]flag_scaleTrue if result must be scaled by 'sigma'

◆ _covariance0()

void PCA::_covariance0 ( const Db db,
const VectorBool isoFlag,
const VectorDouble mean,
const VectorDouble sigma,
VectorDouble c0,
bool  verbose = false,
bool  flag_nm1 = false 
)
private

Internal PCA covariance calculation

Parameters
[in]dbDb descriptor
[in]isoFlagVector of active samples
[in]meanArray containing the mean
[in]sigmaArray containing the standard deviation
[in]verboseVerbose flag
[in]flag_nm1When TRUE, variance is scaled by N-1; otherwise by N
[out]c0Vector of covariances at distance 0

◆ _covarianceh()

int PCA::_covarianceh ( Db db,
double  h0,
double  dh,
const DirParam dirparam,
const VectorBool isoFlag,
VectorDouble ch,
bool  verbose = false 
)
private

Internal PCA translated covariance calculation

Error returned case

Parameters
[in]dbDb descriptor
[in]h0Reference distance
[in]dhTolerance on distance
[in]dirparamDirParam structure
[in]isoFlagVector of active samples
[in]verboseVerbose flag
[out]chVector of covariances at distance h

◆ _getAddress()

int PCA::_getAddress ( int  ivar,
int  jvar 
) const
inlineprivate

◆ _getVectorIsotopic()

VectorBool PCA::_getVectorIsotopic ( const Db db)
private

◆ _loadData()

void PCA::_loadData ( const Db db,
int  iech,
VectorDouble data 
)
private

◆ _normalization()

int PCA::_normalization ( const Db db,
const VectorBool isoFlag,
VectorDouble mean,
VectorDouble sigma,
bool  verbose = false,
bool  flag_nm1 = false 
)
private

Fill the mean and variance arrays

Parameters
[in]dbDb descriptor
[in]isoFlagVector of active samples
[in]verboseVerbose flag
[in]flag_nm1When TRUE, variance is scaled by N-1; otherwise by N
[out]meanArray of means
[out]sigmaArray of standard deviations

◆ _pcaCalculate()

int PCA::_pcaCalculate ( const Db db,
const VectorBool isoFlag,
bool  verbose 
)
private

Internal function to calculate MAF

Returns
Error return code
Parameters
[in]dbDb descriptor
[in]isoFlagVector of active samples
[in]verboseVerbose flag

◆ _pcaF2Z()

void PCA::_pcaF2Z ( int  iptr,
Db db,
const VectorBool isoFlag,
const VectorDouble mean,
const VectorDouble sigma 
)
private

Procedure for transforming the factors into variables using PCA

Parameters
[in]iptrPointer to the storage
[in]dbDb descriptor
[in]isoFlagVector of active samples
[in]meanArray containing the mean
[in]sigmaArray containing the standard deviation

◆ _pcaZ2F()

void PCA::_pcaZ2F ( int  iptr,
Db db,
const VectorBool  isoFlag,
const VectorDouble mean,
const VectorDouble sigma 
)
private

Procedure for transforming the variables into factors using PCA

Parameters
[in]iptrPointer for storing the result in db
[in]dbDb descriptor
[in]isoFlagVector of active samples
[in]meanArray containing the mean
[in]sigmaArray containing the standard deviation

◆ _uncenter()

void PCA::_uncenter ( VectorDouble data,
const VectorDouble mean,
const VectorDouble sigma,
bool  flag_center = true,
bool  flag_scale = false 
)
private

Un-normalize the isotropic array of values

Parameters
[in,out]dataArray of information
[in]meanArray containing the mean
[in]sigmaArray containing the standard deviation
[in]flag_centerTrue if result must be uncentered by 'mean'
[in]flag_scaleTrue if result must be suncaled by 'sigma'

◆ dbF2Z()

int PCA::dbF2Z ( Db db,
bool  verbose = false,
const NamingConvention namconv = NamingConvention("F2Z") 
)

◆ dbZ2F()

int PCA::dbZ2F ( Db db,
bool  verbose = false,
const NamingConvention namconv = NamingConvention("Z2F") 
)

◆ getEigen()

double PCA::getEigen ( int  ivar) const
inline

◆ getEigens()

const VectorDouble& PCA::getEigens ( ) const
inline

◆ getF2Z() [1/2]

const VectorDouble& PCA::getF2Z ( ) const
inline

◆ getF2Z() [2/2]

double PCA::getF2Z ( int  ivar,
int  jvar 
) const
inline

◆ getMean()

double PCA::getMean ( int  ivar) const
inline

◆ getMeans()

const VectorDouble& PCA::getMeans ( ) const
inline

◆ getNVar()

int PCA::getNVar ( ) const
inline

◆ getSigma()

double PCA::getSigma ( int  ivar) const
inline

◆ getSigmas()

const VectorDouble& PCA::getSigmas ( ) const
inline

◆ getVarianceRatio()

VectorDouble PCA::getVarianceRatio ( ) const

◆ getZ2F() [1/2]

const VectorDouble& PCA::getZ2F ( ) const
inline

◆ getZ2F() [2/2]

double PCA::getZ2F ( int  ivar,
int  jvar 
) const
inline

◆ init()

void PCA::init ( int  nvar)

◆ maf_compute()

int PCA::maf_compute ( Db db,
double  h0,
double  dh,
const DirParam dirparam,
bool  verbose = false 
)

Evaluate the MAF on irregular data

Returns
PCA structure (or nullptr)
Parameters
[in]dbDb descriptor
[in]dirparamDirParam structure
[in]h0Reference distance
[in]dhTolerance on distance
[in]verboseVerbose flag

◆ mafOfIndex()

VectorDouble PCA::mafOfIndex ( ) const

◆ operator=()

PCA & PCA::operator= ( const PCA m)

◆ pca_compute()

int PCA::pca_compute ( const Db db,
bool  verbose = false 
)

◆ setEigen() [1/2]

void PCA::setEigen ( VectorDouble eigen)
inline

◆ setEigen() [2/2]

void PCA::setEigen ( int  ivar,
double  eigen 
)
inline

◆ setMean()

void PCA::setMean ( const VectorDouble mean)
inline

◆ setPcaF2Z()

void PCA::setPcaF2Z ( VectorDouble pcaf2z)
inline

◆ setPcaZ2F() [1/2]

void PCA::setPcaZ2F ( const VectorDouble pcaz2f)
inline

◆ setPcaZ2F() [2/2]

void PCA::setPcaZ2F ( int  ivar,
int  jvar,
double  pcaz2f 
)
inline

◆ setSigma()

void PCA::setSigma ( const VectorDouble sigma)
inline

◆ toString()

String PCA::toString ( const AStringFormat strfmt = nullptr) const
overridevirtual

Interface for AStringable.

Reimplemented from AStringable.

Member Data Documentation

◆ _eigen

VectorDouble PCA::_eigen
private

◆ _F2Z

VectorDouble PCA::_F2Z
private

◆ _mean

VectorDouble PCA::_mean
private

◆ _nVar

int PCA::_nVar
private

◆ _sigma

VectorDouble PCA::_sigma
private

◆ _Z2F

VectorDouble PCA::_Z2F
private

The documentation for this class was generated from the following files: