I have a financial dataset with 9500 observations with 4000 variables. There are around 2500 variables highly correlated (higher than 0.95). Without removing any variable, I have applied PCA. According to my results, first 100 components explain 78.8%. When I check the PCs in detail, I observed that the highest loadings range between 0.01 - 0.05. On the other hand, the original variables having the highest loadings make sense. That is, same group of variables are appearing on the top (top positive) or on the bottom for PCs (bottom negative).

Besides the approach above, I have removed one variable from the pairs with a correlation higher than 0.95.This reduced my variable set to 1200. Then I again applied PCA. However, there happened no significant change on loadings.

In short, how should I pick the most important components for each PC when such very low loadings present?

  • $\begingroup$ Is it possible you have some co-linear variables? Perhaps checking for this among your variables that are highly correlated would be a good sanity check. $\endgroup$
    – guy
    Dec 11, 2017 at 13:48
  • $\begingroup$ Yes @guy. I have many variables even having a correlation of 1. I have removed one variable from those pairs having very high correlations and applied pca again. However, I did not observe a significant increase in coefficients. $\endgroup$ Dec 11, 2017 at 19:29
  • 2
    $\begingroup$ Are you speaking of loadings or of eigenvectors? stats.stackexchange.com/q/143905/3277. Also, did you do the analysis based on correlations or on covariances? If the latter, how big are variances in your matrix? $\endgroup$
    – ttnphns
    Dec 12, 2017 at 1:50

1 Answer 1


Have you performed a varimax rotation on your coefficients?

If not then that might explain why they are so low. Varimax can be applied to your coefficients in MATLAB using the 'rotatefactors' command on the coefficients from your selected principle components (not all the components). So if you want to look at the varimax rotated coefficients of the first 5 principle components then the code would be:

RotatedCoefficients = rotatefactors(PCACoefficients(:,5));

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.