|
virtual int | IsA (const char *type) |
|
vtkPCAStatistics * | NewInstance () const |
|
virtual void | PrintSelf (ostream &os, vtkIndent indent) |
|
|
virtual void | SetNormalizationScheme (int) |
|
virtual int | GetNormalizationScheme () |
|
virtual void | SetNormalizationSchemeByName (const char *sname) |
|
virtual const char * | GetNormalizationSchemeName (int scheme) |
|
|
virtual vtkTable * | GetSpecifiedNormalization () |
|
virtual void | SetSpecifiedNormalization (vtkTable *) |
|
|
void | GetEigenvalues (int request, vtkDoubleArray *) |
|
void | GetEigenvalues (vtkDoubleArray *) |
|
double | GetEigenvalue (int request, int i) |
|
double | GetEigenvalue (int i) |
|
|
void | GetEigenvectors (int request, vtkDoubleArray *eigenvectors) |
|
void | GetEigenvectors (vtkDoubleArray *eigenvectors) |
|
void | GetEigenvector (int i, vtkDoubleArray *eigenvector) |
|
void | GetEigenvector (int request, int i, vtkDoubleArray *eigenvector) |
|
|
virtual void | SetBasisScheme (int) |
|
virtual int | GetBasisScheme () |
|
virtual const char * | GetBasisSchemeName (int schemeIndex) |
|
virtual void | SetBasisSchemeByName (const char *schemeName) |
|
|
virtual void | SetFixedBasisSize (int) |
|
virtual int | GetFixedBasisSize () |
|
|
virtual void | SetFixedBasisEnergy (double) |
|
virtual double | GetFixedBasisEnergy () |
|
|
virtual bool | SetParameter (const char *parameter, int index, vtkVariant value) |
|
vtkMultiCorrelativeStatistics * | NewInstance () const |
|
virtual void | Aggregate (vtkDataObjectCollection *, vtkMultiBlockDataSet *) |
|
vtkStatisticsAlgorithm * | NewInstance () const |
|
void | PrintSelf (ostream &os, vtkIndent indent) |
|
virtual void | SetColumnStatus (const char *namCol, int status) |
|
virtual void | ResetAllColumnStates () |
|
virtual int | RequestSelectedColumns () |
|
virtual void | ResetRequests () |
|
virtual vtkIdType | GetNumberOfRequests () |
|
virtual vtkIdType | GetNumberOfColumnsForRequest (vtkIdType request) |
|
void | AddColumn (const char *namCol) |
|
void | AddColumnPair (const char *namColX, const char *namColY) |
|
virtual void | SetLearnOptionParameterConnection (vtkAlgorithmOutput *params) |
|
virtual void | SetLearnOptionParameters (vtkDataObject *params) |
|
virtual void | SetInputModelConnection (vtkAlgorithmOutput *model) |
|
virtual void | SetInputModel (vtkDataObject *model) |
|
virtual void | SetLearnOption (bool) |
|
virtual bool | GetLearnOption () |
|
virtual void | SetDeriveOption (bool) |
|
virtual bool | GetDeriveOption () |
|
virtual void | SetAssessOption (bool) |
|
virtual bool | GetAssessOption () |
|
virtual void | SetTestOption (bool) |
|
virtual bool | GetTestOption () |
|
virtual void | SetNumberOfPrimaryTables (vtkIdType) |
|
virtual vtkIdType | GetNumberOfPrimaryTables () |
|
virtual void | SetAssessNames (vtkStringArray *) |
|
virtual vtkStringArray * | GetAssessNames () |
|
virtual const char * | GetColumnForRequest (vtkIdType r, vtkIdType c) |
|
virtual int | GetColumnForRequest (vtkIdType r, vtkIdType c, vtkStdString &columnName) |
|
|
virtual vtkObjectBase * | NewInstanceInternal () const |
|
| vtkPCAStatistics () |
|
| ~vtkPCAStatistics () |
|
virtual int | FillInputPortInformation (int port, vtkInformation *info) |
|
virtual void | Derive (vtkMultiBlockDataSet *) |
|
virtual vtkDoubleArray * | CalculatePValues (vtkIdTypeArray *, vtkDoubleArray *) |
|
|
virtual void | Test (vtkTable *, vtkMultiBlockDataSet *, vtkTable *) |
|
|
virtual void | Assess (vtkTable *, vtkMultiBlockDataSet *, vtkTable *) |
|
|
virtual void | SelectAssessFunctor (vtkTable *inData, vtkDataObject *inMeta, vtkStringArray *rowNames, AssessFunctor *&dfunc) |
|
| vtkMultiCorrelativeStatistics () |
|
| ~vtkMultiCorrelativeStatistics () |
|
virtual void | Learn (vtkTable *, vtkTable *, vtkMultiBlockDataSet *) |
|
| vtkStatisticsAlgorithm () |
|
| ~vtkStatisticsAlgorithm () |
|
virtual int | FillOutputPortInformation (int port, vtkInformation *info) |
|
virtual int | RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
void | Assess (vtkTable *, vtkMultiBlockDataSet *, vtkTable *, int) |
|
A class for multivariate principal component analysis.
This class derives from the multi-correlative statistics algorithm and uses the covariance matrix and Cholesky decomposition computed by it. However, when it finalizes the statistics in learn operation, the PCA class computes the SVD of the covariance matrix in order to obtain its eigenvectors.
In the assess operation, the input data are
- projected into the basis defined by the eigenvectors,
- the energy associated with each datum is computed,
- or some combination thereof. Additionally, the user may specify some threshold energy or eigenvector entry below which the basis is truncated. This allows projection into a lower-dimensional state while minimizing (in a least squares sense) the projection error.
In the test operation, a Jarque-Bera-Srivastava test of n-d normality is performed.
- Thanks:
- Thanks to David Thompson, Philippe Pebay and Jackson Mayo from Sandia National Laboratories for implementing this class. Updated by Philippe Pebay, Kitware SAS 2012
- Tests:
- vtkPCAStatistics (Tests)
Definition at line 58 of file vtkPCAStatistics.h.
virtual void vtkPCAStatistics::SetNormalizationScheme |
( |
int |
| ) |
|
|
virtual |
This determines how (or if) the covariance matrix cov is normalized before PCA. When set to NONE, no normalization is performed. This is the default. When set to TRIANGLE_SPECIFIED, each entry cov(i,j) is divided by V(i,j). The list V of normalization factors must be set using the SetNormalization method before the filter is executed. When set to DIAGONAL_SPECIFIED, each entry cov(i,j) is divided by sqrt(V(i)*V(j)). The list V of normalization factors must be set using the SetNormalization method before the filter is executed. When set to DIAGONAL_VARIANCE, each entry cov(i,j) is divided by sqrt(cov(i,i)*cov(j,j)). Warning: Although this is accepted practice in some fields, some people think you should not turn this option on unless there is a good physically-based reason for doing so. Much better instead to determine how component magnitudes should be compared using physical reasoning and use DIAGONAL_SPECIFIED, TRIANGLE_SPECIFIED, or perform some pre-processing to shift and scale input data columns appropriately than to expect magical results from a shady normalization hack.
virtual int vtkPCAStatistics::GetNormalizationScheme |
( |
| ) |
|
|
virtual |
This determines how (or if) the covariance matrix cov is normalized before PCA. When set to NONE, no normalization is performed. This is the default. When set to TRIANGLE_SPECIFIED, each entry cov(i,j) is divided by V(i,j). The list V of normalization factors must be set using the SetNormalization method before the filter is executed. When set to DIAGONAL_SPECIFIED, each entry cov(i,j) is divided by sqrt(V(i)*V(j)). The list V of normalization factors must be set using the SetNormalization method before the filter is executed. When set to DIAGONAL_VARIANCE, each entry cov(i,j) is divided by sqrt(cov(i,i)*cov(j,j)). Warning: Although this is accepted practice in some fields, some people think you should not turn this option on unless there is a good physically-based reason for doing so. Much better instead to determine how component magnitudes should be compared using physical reasoning and use DIAGONAL_SPECIFIED, TRIANGLE_SPECIFIED, or perform some pre-processing to shift and scale input data columns appropriately than to expect magical results from a shady normalization hack.
virtual void vtkPCAStatistics::SetNormalizationSchemeByName |
( |
const char * |
sname | ) |
|
|
virtual |
This determines how (or if) the covariance matrix cov is normalized before PCA. When set to NONE, no normalization is performed. This is the default. When set to TRIANGLE_SPECIFIED, each entry cov(i,j) is divided by V(i,j). The list V of normalization factors must be set using the SetNormalization method before the filter is executed. When set to DIAGONAL_SPECIFIED, each entry cov(i,j) is divided by sqrt(V(i)*V(j)). The list V of normalization factors must be set using the SetNormalization method before the filter is executed. When set to DIAGONAL_VARIANCE, each entry cov(i,j) is divided by sqrt(cov(i,i)*cov(j,j)). Warning: Although this is accepted practice in some fields, some people think you should not turn this option on unless there is a good physically-based reason for doing so. Much better instead to determine how component magnitudes should be compared using physical reasoning and use DIAGONAL_SPECIFIED, TRIANGLE_SPECIFIED, or perform some pre-processing to shift and scale input data columns appropriately than to expect magical results from a shady normalization hack.
virtual const char* vtkPCAStatistics::GetNormalizationSchemeName |
( |
int |
scheme | ) |
|
|
virtual |
This determines how (or if) the covariance matrix cov is normalized before PCA. When set to NONE, no normalization is performed. This is the default. When set to TRIANGLE_SPECIFIED, each entry cov(i,j) is divided by V(i,j). The list V of normalization factors must be set using the SetNormalization method before the filter is executed. When set to DIAGONAL_SPECIFIED, each entry cov(i,j) is divided by sqrt(V(i)*V(j)). The list V of normalization factors must be set using the SetNormalization method before the filter is executed. When set to DIAGONAL_VARIANCE, each entry cov(i,j) is divided by sqrt(cov(i,i)*cov(j,j)). Warning: Although this is accepted practice in some fields, some people think you should not turn this option on unless there is a good physically-based reason for doing so. Much better instead to determine how component magnitudes should be compared using physical reasoning and use DIAGONAL_SPECIFIED, TRIANGLE_SPECIFIED, or perform some pre-processing to shift and scale input data columns appropriately than to expect magical results from a shady normalization hack.
virtual vtkTable* vtkPCAStatistics::GetSpecifiedNormalization |
( |
| ) |
|
|
virtual |
These methods allow you to set/get values used to normalize the covariance matrix before PCA. The normalization values apply to all requests, so you do not specify a single vector but a 3-column table. The first two columns contain the names of columns from input 0 and the third column contains the value to normalize the corresponding entry in the covariance matrix. The table must always have 3 columns even when the NormalizationScheme is DIAGONAL_SPECIFIED. When only diagonal entries are to be used, only table rows where the first two columns are identical to one another will be employed. If there are multiple rows specifying different values for the same pair of columns, the entry nearest the bottom of the table takes precedence. These functions are actually convenience methods that set/get the third input of the filter. Because the table is the third input, you may use other filters to produce a table of normalizations and have the pipeline take care of updates. Any missing entries will be set to 1.0 and a warning issued. An error will occur if the third input to the filter is not set and the NormalizationScheme is DIAGONAL_SPECIFIED or TRIANGLE_SPECIFIED. NOTE: SetSpecifiedNormalization( table ) is equivalent to SetInputData(3, table) and therefore does not make a pipeline connection.
virtual void vtkPCAStatistics::SetSpecifiedNormalization |
( |
vtkTable * |
| ) |
|
|
virtual |
These methods allow you to set/get values used to normalize the covariance matrix before PCA. The normalization values apply to all requests, so you do not specify a single vector but a 3-column table. The first two columns contain the names of columns from input 0 and the third column contains the value to normalize the corresponding entry in the covariance matrix. The table must always have 3 columns even when the NormalizationScheme is DIAGONAL_SPECIFIED. When only diagonal entries are to be used, only table rows where the first two columns are identical to one another will be employed. If there are multiple rows specifying different values for the same pair of columns, the entry nearest the bottom of the table takes precedence. These functions are actually convenience methods that set/get the third input of the filter. Because the table is the third input, you may use other filters to produce a table of normalizations and have the pipeline take care of updates. Any missing entries will be set to 1.0 and a warning issued. An error will occur if the third input to the filter is not set and the NormalizationScheme is DIAGONAL_SPECIFIED or TRIANGLE_SPECIFIED. NOTE: SetSpecifiedNormalization( table ) is equivalent to SetInputData(3, table) and therefore does not make a pipeline connection.
virtual void vtkPCAStatistics::SetBasisScheme |
( |
int |
| ) |
|
|
virtual |
This variable controls the dimensionality of output tuples in Assess operation. Consider the case where you have requested a PCA on D columns. When set to vtkPCAStatistics::FULL_BASIS, the entire set of basis vectors is used to derive new coordinates for each tuple being assessed. In this mode, you are guaranteed to have output tuples of the same dimension as the input tuples. (That dimension is D, so there will be D additional columns added to the table for the request.) When set to vtkPCAStatistics::FIXED_BASIS_SIZE, only the first N basis vectors are used to derive new coordinates for each tuple being assessed. In this mode, you are guaranteed to have output tuples of dimension min(N,D). You must set N prior to assessing data using the SetFixedBasisSize() method. When N < D, this turns the PCA into a projection (instead of change of basis). When set to vtkPCAStatistics::FIXED_BASIS_ENERGY, the number of basis vectors used to derive new coordinates for each tuple will be the minimum number of columns N that satisfy
You must set T prior to assessing data using the SetFixedBasisEnergy() method. When T < 1, this turns the PCA into a projection (instead of change of basis). By default BasisScheme is set to vtkPCAStatistics::FULL_BASIS.
virtual int vtkPCAStatistics::GetBasisScheme |
( |
| ) |
|
|
virtual |
This variable controls the dimensionality of output tuples in Assess operation. Consider the case where you have requested a PCA on D columns. When set to vtkPCAStatistics::FULL_BASIS, the entire set of basis vectors is used to derive new coordinates for each tuple being assessed. In this mode, you are guaranteed to have output tuples of the same dimension as the input tuples. (That dimension is D, so there will be D additional columns added to the table for the request.) When set to vtkPCAStatistics::FIXED_BASIS_SIZE, only the first N basis vectors are used to derive new coordinates for each tuple being assessed. In this mode, you are guaranteed to have output tuples of dimension min(N,D). You must set N prior to assessing data using the SetFixedBasisSize() method. When N < D, this turns the PCA into a projection (instead of change of basis). When set to vtkPCAStatistics::FIXED_BASIS_ENERGY, the number of basis vectors used to derive new coordinates for each tuple will be the minimum number of columns N that satisfy
You must set T prior to assessing data using the SetFixedBasisEnergy() method. When T < 1, this turns the PCA into a projection (instead of change of basis). By default BasisScheme is set to vtkPCAStatistics::FULL_BASIS.
virtual const char* vtkPCAStatistics::GetBasisSchemeName |
( |
int |
schemeIndex | ) |
|
|
virtual |
This variable controls the dimensionality of output tuples in Assess operation. Consider the case where you have requested a PCA on D columns. When set to vtkPCAStatistics::FULL_BASIS, the entire set of basis vectors is used to derive new coordinates for each tuple being assessed. In this mode, you are guaranteed to have output tuples of the same dimension as the input tuples. (That dimension is D, so there will be D additional columns added to the table for the request.) When set to vtkPCAStatistics::FIXED_BASIS_SIZE, only the first N basis vectors are used to derive new coordinates for each tuple being assessed. In this mode, you are guaranteed to have output tuples of dimension min(N,D). You must set N prior to assessing data using the SetFixedBasisSize() method. When N < D, this turns the PCA into a projection (instead of change of basis). When set to vtkPCAStatistics::FIXED_BASIS_ENERGY, the number of basis vectors used to derive new coordinates for each tuple will be the minimum number of columns N that satisfy
You must set T prior to assessing data using the SetFixedBasisEnergy() method. When T < 1, this turns the PCA into a projection (instead of change of basis). By default BasisScheme is set to vtkPCAStatistics::FULL_BASIS.
virtual void vtkPCAStatistics::SetBasisSchemeByName |
( |
const char * |
schemeName | ) |
|
|
virtual |
This variable controls the dimensionality of output tuples in Assess operation. Consider the case where you have requested a PCA on D columns. When set to vtkPCAStatistics::FULL_BASIS, the entire set of basis vectors is used to derive new coordinates for each tuple being assessed. In this mode, you are guaranteed to have output tuples of the same dimension as the input tuples. (That dimension is D, so there will be D additional columns added to the table for the request.) When set to vtkPCAStatistics::FIXED_BASIS_SIZE, only the first N basis vectors are used to derive new coordinates for each tuple being assessed. In this mode, you are guaranteed to have output tuples of dimension min(N,D). You must set N prior to assessing data using the SetFixedBasisSize() method. When N < D, this turns the PCA into a projection (instead of change of basis). When set to vtkPCAStatistics::FIXED_BASIS_ENERGY, the number of basis vectors used to derive new coordinates for each tuple will be the minimum number of columns N that satisfy
You must set T prior to assessing data using the SetFixedBasisEnergy() method. When T < 1, this turns the PCA into a projection (instead of change of basis). By default BasisScheme is set to vtkPCAStatistics::FULL_BASIS.