# How to do primary component analysis on multi-mode data with non-orthogonal primary components?

Consider the following picture representing the experimental data sequence obtained by two 1D-sensors (each point of the sequence is plotted on XY plane according to the respective sensor reading):

It's visually obvious that two modes have been registered. Let's assume that generally those two modes interfere, so there's no easy possibility to separate them by isolating certain sequence segments. I try the classic principal component analysis by finding the covariance matrix, then finding the set of eigenvalues and corresponding eigenvectors:

White box dimensions represents the magnitude if the eigenvalues, box orientation represents the direction of eigenvectors.

It's clear that PCA first component deviates slightly from the high-magnitude mode direction, while the second component deviates greatly due to skewness of the lower-magnitude mode original direction.

It is known that PCA, being based on eigenvectors, results in orthogonal basis of primary components.

Is there other elegant methods (or PCA-derived methods) to obtain the non-orthogonal basis of primary skewed components?

• Rotation is not limited to FA models: You can use it on any loadings or pattern matrix, provided it makes sense. In fact, there is a promax() function in base R which takes as input the loadings matrix, and other oblique rotations methods can be found in the GPArotation package. This is basically what principal() from the psych package uses. – chl Jan 27 '11 at 10:56