Module dstats.pca
This module contains a basic implementation of principal component analysis, based on the NIPALS algorithm. This is fast when you only need the first few components (which is usually the case since PCA's main uses are visualization and dimensionality reduction). However, convergence slows drastically after the first few components have been removed and most of the matrix is just noise.
References
en.wikipedia.org/wiki/Principal_component_analysis#Computing_principal_components_iteratively
Author
David Simcha
Functions
Name  Description 

doubleTempdup(range, alloc)


firstComponent(data, opts, buf)

Uses expectationmaximization to compute the first principal component of mat. Since there are a lot of options, they are controlled by a PrinCompOptions struct. (See above. PrinCompOptions.init contains the default values.) To have the results returned in a preallocated space, pass an explicit value for buf. 
firstNComponents(data, n, opts, buf)

Computes the first N principal components of the matrix. More efficient than calling firstComponent and removeComponent repeatedly because copying and transposing, if enabled, only happen once. 
removeComponent(data, rotation, transposed)

Remove the principal component specified by the given rotation vector from data. data must have assignable elements. Transposed controls whether rotation is considered a loading for the transposed matrix or the matrix asis. 
Structs
Name  Description 

PrincipalComponent

Result holder 
PrinCompOptions

Sets options for principal component analysis. The default options are also the values in PrinCompOptions.init. 
Enums
Name  Description 

Transposed

Used for removeComponent(). 