Brian O'Connor   UBCO Psychology   UBCO  

SPSS, SAS, MATLAB, and R Programs for Determining

the Number of Components and Factors Using

Parallel Analysis and Velicer's MAP Test


O'Connor, B. P. (2000). SPSS and SAS programs for determining the number of components using parallel analysis and Velicer's MAP test. Behavior Research Methods, Instrumentation, and Computers, 32, 396-402.

Popular statistical software packages do not have the proper procedures for determining the number of components or factors in correlation matrices. Parallel analysis and Velicer's minimum average partial (MAP) test are validated procedures that are widely recommended by statisticians. This paper described brief and efficient programs for conducting parallel analyses and the MAP test using SPSS, SAS, and MATLAB.

The parallel analysis programs have been revised:

Parallel analyses of both principal components and common/principal axis factors can now be conducted. The common/principal axis factor parallel analyses produce results that are essentially identical to those yielded by Montanelli and Humphreys's equation (1976, Psychometrika, vol. 41, p. 342). If your eventual goal is to conduct a principal components analysis on your data, then run the parallel analyses using the principal components option in the programs below. Unfortunately, when the eventual goal is conduct a common/principal axis factor analysis on your data, the experts disagree on whether principal component eigenvalues or common/principal axis factor eigenvalues should be used to determine the number of factors. Some (e.g., Montanelli, Humphreys, Gorsuch, Widaman) argue that if the eventual goal is to conduct a common/principal axis factor analysis, then communalities should be placed on the diagonal of a correlation matrix before extracting the eigenvalues that are then examined to determine the number of factors. Others do not follow this procedure: They extract and examine principal component eigenvalues to determine the number of common/principal axis factors!? The latter procedure was recommended by Cattell and it is the procedure that he used in his scree tests. It is also the procedure used in the SPSS and SAS factor analysis routines. The present programs permit both kinds of analyses.

The programs named "rawpar" conduct parallel analyses after first reading a raw data matrix, wherein the rows of the data matrix are cases/individuals and the columns are variables. The "rawpar" programs can run parallel analyses based on either normally distributed random data generation or on permutations of the original raw data set. In the latter case, the distributions of the original raw variables are exactly preserved in the permuted versions used in the parallel analyses. Permutations of the raw data set are thus highly accurate and most relevant, especially in cases where the raw data are not normally distributed.

map.sps map.m for Velicer's MAP test
parallel.sps parallel.m for parallel analysis
rawpar.sps rawpar.m for parallel analysis using raw data


There is an R package named "EFA.dimensions" on the R CRAN site that runs these and other analyses.

Click here for the reference manual for the EFA.dimensions package.

Important Cautions Regarding Item-Level Parallel and Factor Analyses

Brian P. O'Connor
Department of Psychology
University of British Columbia - Okanagan
Kelowna, British Columbia, Canada