EFA Procedure

PROC EFA Statement

  • PROC EFA <options>;

The PROC EFA statement invokes the procedure. Table 2 summarizes the available options in this statement. The options are described fully after the table.

Table 2: Options Available in the PROC EFA Statement

Option Description
Data Set Option
DATA= Specifies the input data table
Factor Extraction and Communalities
HEYWOOD Sets to 1 any communality greater than 1
METHOD= Specifies the estimation method
NFACTORS= Specifies how to determine the number of factors
PRIORS= Specifies the method of computing prior communality estimates
SEED= Specifies the seed for pseudorandom number generation
ULTRAHEYWOOD Allows communalities to exceed 1
Data Analysis
NOBS= Specifies the number of observations
VARDEF= Specifies the divisor to use in calculating covariances or correlations
Rotation Method and Properties
GAMMA= Specifies the orthomax weight
NOPROMAXNORM Turns off row normalization in promax rotation
NORM= Specifies the row normalization method in rotation
POWER= Specifies the power to be used in promax rotation
PREROTATE= Specifies the prerotation method in promax rotation
RCONVERGE= Specifies the convergence criterion for rotation cycles
RITER= Specifies the maximum number of cycles for rotation
ROTATE= Specifies the rotation method
TAU= Specifies the oblimin weight
Control Display Output
FUZZ= Specifies the maximum absolute value to display as missing in the correlation and loading matrices
REFSTRUCT Prints the reference structure and reference axis correlations
REORDER Reorders the rows (variables) of various factor matrices
Numerical Properties
CONVERGE= Specifies the convergence criterion
MAXITER= Specifies the maximum number of iterations
NTHREADS= Specifies the maximum number of simultaneous computational threads to use
SINGULAR= Specifies the singularity criterion


CONVERGE=p
CONV=p

specifies the convergence criterion for the METHOD=ALPHA, METHOD=ML, METHOD=PRINIT, or METHOD=ULS option. Iteration stops when the maximum change in the communalities is less than the value of the CONVERGE= option. By default, CONVERGE=0.001. Negative values are not allowed.

DATA=libref.data-table

names the input data table for PROC EFA to use. The default is the most recently created data table. libref.data-table is a two-level name, where

libref

refers to a collection of information that is defined in the LIBNAME statement and includes the library, which includes a path to the data, and a session identifier, which defaults to the active session but which can be explicitly defined in the LIBNAME statement. For more information about libref, see the section Using CAS Sessions and CAS Engine Librefs.

data-table

specifies the name of the input data table.

FUZZ=p

specifies how certain correlation and factor loading values are printed. When you specify this option, PROC EFA prints elements whose absolute values are less than p as missing. The exact values in any matrix can be obtained from the ODS output data sets. Negative values are not allowed.

GAMMA=p

specifies the orthomax weight to be used together with the option ROTATE=ORTHOMAX or PREROTATE=ORTHOMAX. Alternatively, you can specify ROTATE=ORTHOMAX(p), where p represents the orthomax weight. If you specify both GAMMA=p and ROTATE=ORTHOMAX(p), the ROTATE= option value takes precedence.

There is no restriction on valid values for the orthomax weight, although the most common values are between 0 and the number of variables. By default, GAMMA=1, which results in the varimax rotation. For more information, see the section Simplicity Functions.

HEYWOOD
HEY

sets to 1 any communality greater than 1, allowing iterations to proceed. See the section Heywood Cases and Other Anomalies of Communality Estimates for a discussion of Heywood cases. This option has no effect if you specify METHOD=PRINCIPAL.

MAXITER=n

specifies the maximum number of iterations for factor extraction. You can use the MAXITER= option with the ALPHA, ML, PRINIT, or ULS method. By default, MAXITER=30.

METHOD=name
M=name

specifies the method of extracting factors. You can specify the following names:

ALPHA | A

produces alpha factor analysis.

ML | M

performs maximum likelihood factor analysis by using an algorithm due, except for minor details, to Fuller (1987). This option requires a nonsingular correlation matrix.

NONE

specifies that factor extraction should not be performed. This is useful if you want to use one or more NFACTORS statements to investigate the number of latent factors that should be used to describe the data, but you do not want to extract those factors. You cannot specify this option if you use the NFACTORS=n option to specify that n factors should be extracted.

PRINCIPAL | PRIN | P

performs a principal factor analysis unless you also specify PRIORS=ONE, in which case a principal component analysis is performed.

PRINIT

performs an iterated principal factor analysis.

ULS | U

performs an unweighted least squares factor analysis.

By default, METHOD=PRINCIPAL.

NFACTORS=n | method
NFACT=n | method
N=n | method

specifies how to determine the number of factors. If you specify a numeric value n, then n is a positive integer that represents the number of factors to be extracted. Alternatively, you can specify a method that is used to determine the number of factors. You can specify the following methods:

MAX

sets the number of factors to the maximum number that is suggested by the criteria that you specify in the NFACTORS statements.

MEAN

sets the number of factors to the mean of the numbers suggested by the criteria that you specify in the NFACTORS statements. If the computed mean is not an integer, the value is rounded to the nearest integer.

MEDIAN

sets the number of factors to the median of the numbers suggested by the criteria that you specify in the NFACTORS statements. If the computed median is not an integer, the value is rounded to the nearest integer.

MIN

sets the number of factors to the minimum number that is suggested by the criteria that you specify in the NFACTORS statements.

With PROC EFA, you can use one or more NFACTORS statements to specify criteria that are used to suggest numbers of factors to extract. You use the NFACTORS=method option in the PROC EFA statement to determine how to combine the numbers from these criteria to produce the final number of factors to extract. Any criteria for which you specify the STATUS=INACTIVE option in the PROC EFA statement are excluded from the calculation.

You must specify either the NFACTORS=n option or at least one NFACTORS statement. If you specify multiple NFACTORS statements but not the NFACTORS=method option, PROC EFA uses NFACTORS=MIN by default. If you specify both NFACTORS=n and one or more NFACTORS statements, the results for the NFACTORS statements are computed and displayed, but n factors are extracted.

NOBS=n

specifies the number of observations to use when computing significance tests. If the DATA= input data set is a raw data set, this number is defined by default to be the number of observations in the raw data set that are used for the analysis. The NOBS= option overrides this default definition. This option has no effect unless you specify METHOD=ML.

NOPROMAXNORM
NOPMAXNORM

turns off the default row normalization of the prerotated factor pattern, which is used to compute the promax target matrix.

NORM=method

specifies the method of normalizing the rows of the factor pattern for rotation. You can specify the following methods:

COV

rescales the rows of the pattern matrix to represent covariances rather than correlations.

KAISER

uses Kaiser’s normalization. This means that the rows of the factor pattern matrix are normalized so that the sum of squares of each row is 1 .

NONE | RAW

turns off row normalization.

WEIGHT

weights the rows by the Cureton-Mulaik technique (Cureton and Mulaik 1975).

By default, NORM=KAISER.

NTHREADS=n
THREADS=n

specifies the number of threads to use in the computation, where n is an integer between 1 and 64, inclusive. The default value is the number of CPUs available in the machine.

POWER=n

specifies the power to use in computing the target pattern for the option ROTATE=PROMAX. Alternatively, you can specify ROTATE=PROMAX(p), where p represents the power. If you specify both POWER=n and ROTATE=PROMAX(p), the ROTATE= option value takes precedence.

Valid values must be integers greater than or equal to 1. By default, POWER=3.

PREROTATE=name
PRE=name

specifies the prerotation method for the option ROTATE=PROMAX. You can use any rotation method other than promax. See the ROTATE= option for a list of available methods.

By default, PREROTATE=VARIMAX.

PRIORS=name

specifies a method of computing prior communality estimates. You can specify the following names:

ASMC | A

sets the prior communality estimates proportional to the squared multiple correlations but adjusted so their sum is equal to that of the maximum absolute correlations (Cureton 1968).

INPUT | I

sets the prior communality estimates to the values that you specify in the PRIORS statement.

MAX | M

sets the prior communality estimate for each variable to its maximum absolute correlation with any other variable.

ONE | O

sets all prior communalities to 1.

RANDOM | R

sets the prior communality estimates to pseudorandom numbers uniformly distributed between 0 and 1. You can use the SEED= option to specify the random number seed to use so that the analysis is repeatable.

SMC | S

sets the prior communality estimate for each variable to its squared multiple correlation with all other variables.

By default, PRIORS=SMC.

RCONVERGE=p
RCONV=p

specifies the convergence criterion value p (p ) for rotation cycles. Rotation stops when the scaled change of the simplicity function value is less than p. Mathematically, the convergence criterion is

where and are simplicity function values of the current cycle and the previous cycle, respectively, and is a scaling factor. By default, RCONVERGE=1E–9.

REFSTRUCT
RS

prints the reference structure and reference axis correlations. This option has no effect unless you use the ROTATE= option to specify an oblique rotation.

REORDER
RE

reorders the rows (variables) of various factor matrices in the output. Variables whose highest absolute loading (reference structure loading for oblique rotations) is on the first factor are displayed first, from largest to smallest loading, followed by variables whose highest absolute loading is on the second factor, and so on.

RITER=n

specifies the maximum number of cycles for factor rotation. Except for promax and Procrustes, you can use this option with all rotation methods. The default n is either 10 times the number of variables or 100, whichever is greater.

ROTATE=name
R=name

specifies the rotation method. By default, ROTATE=NONE.

You can specify the following name to skip the factor rotation step:

NONE | N

specifies that no rotation be performed, leaving the original orthogonal solution.

You can specify the following names for orthogonal rotations:

BIQUARTIMAX | BIQMAX

specifies orthogonal biquartimax rotation. This corresponds to specifying ROTATE=ORTHOMAX(.5).

EQUAMAX | E

specifies orthogonal equamax rotation. This corresponds to specifying ROTATE=ORTHOMAX with GAMMA=number of factors/2.

FACTORPARSIMAX | FPA

specifies orthogonal factor parsimax rotation. This corresponds to specifying ROTATE=ORTHOMAX with GAMMA=number of variables.

ORTHCF(p1,p2) |  ORCF(p1,p2)

specifies the orthogonal Crawford-Ferguson rotation with the weights p1 and p2 for variable parsimony and factor parsimony, respectively. See the definitions of weights in the section Simplicity Functions.

ORTHGENCF(p1,p2,p3,p4) |  ORGENCF(p1,p2,p3,p4)

specifies the orthogonal generalized Crawford-Ferguson rotation with the four weights p1, p2, p3, and p4. See the definitions of weights in the section Simplicity Functions.

ORTHOMAX<(p)> | ORMAX<(p)>

specifies the orthomax rotation with orthomax weight p. When ROTATE=ORTHOMAX, the default p value is 1 unless specified otherwise in the GAMMA= option. Alternatively, ROTATE=ORTHOMAX(p) specifies p as the orthomax weight or the GAMMA= value. See the definition of the orthomax weight in the section Simplicity Functions.

PARSIMAX | PA

specifies orthogonal parsimax rotation. This corresponds to specifying ROTATE=ORTHOMAX with

where nvar is the number of variables and nfact is the number of factors.

QUARTIMAX | QMAX | Q

specifies orthogonal quartimax rotation. This corresponds to specifying ROTATE=ORTHOMAX(0).

VARIMAX | V

specifies orthogonal varimax rotation. This corresponds to specifying ROTATE=ORTHOMAX with GAMMA=1.

You can specify the following names for oblique rotations:

BIQUARTIMIN | BIQMIN

specifies biquartimin rotation. This corresponds to specifying ROTATE=OBLIMIN(.5) or ROTATE=OBLIMIN with TAU=0.5.

COVARIMIN | CVMIN

specifies covarimin rotation. This corresponds to specifying ROTATE=OBLIMIN(1) or ROTATE=OBLIMIN with TAU=1.

OBBIQUARTIMAX | OBIQMAX

specifies oblique biquartimax rotation.

OBEQUAMAX | OE

specifies oblique equamax rotation.

OBFACTORPARSIMAX | OFPA

specifies oblique factor parsimax rotation.

OBLICF(p1,p2) |  OBCF(p1,p2)

specifies the oblique Crawford-Ferguson rotation with the weights p1 and p2 for variable parsimony and factor parsimony, respectively. See the definitions of weights in the section Simplicity Functions.

OBLIGENCF(p1,p2,p3,p4) |  OBGENCF(p1,p2,p3,p4)

specifies the oblique generalized Crawford-Ferguson rotation with the four weights p1, p2, p3, and p4. See the definitions of weights in the section Simplicity Functions.

OBLIMIN<(p)> | OBMIN<(p)>

specifies the oblimin rotation with oblimin weight p. When ROTATE=OBLIMIN, the default p value is 0 unless specified otherwise in the TAU= option. Alternatively, ROTATE=OBLIMIN(p) specifies p as the oblimin weight or the TAU= value. See the definition of the oblimin weight in the section Simplicity Functions.

OBPARSIMAX | OPA

specifies oblique parsimax rotation.

OBQUARTIMAX | OQMAX

specifies oblique quartimax rotation. This is the same as the quartimin method.

OBVARIMAX | OV

specifies oblique varimax rotation.

PROMAX<(n)> | P<(n)>

specifies oblique promax rotation. You can use the PREROTATE= option to specify the desirable prerotation method, either orthogonal or oblique. When used with ROTATE=PROMAX, the POWER= option enables you to specify the power for forming the target. You can also use ROTATE=PROMAX(n), where n is the POWER= option value.

QUARTIMIN | QMIN

specifies quartimin rotation. This is the same as the oblique quartimax method. It also corresponds to specifying ROTATE=OBLIMIN(0) or ROTATE=OBLIMIN with TAU=0.

SEED=n
RANDOM=n

specifies the initial seed for the pseudorandom number generator for use with the option PRIORS=RANDOM. The value of the SEED= option must be an integer. If you omit the SEED= option or if the specified value is negative or 0, the time of day from the computer’s clock is used to obtain the initial seed.

SINGULAR=p
SING=p

specifies the singularity criterion, where . By default, SINGULAR=1E–8.

TAU=p

specifies the oblimin weight to use with the option ROTATE=OBLIMIN or PREROTATE=OBLIMIN. Alternatively, you can use ROTATE=OBLIMIN(p), where p represents the oblimin weight. If you specify both TAU=p and ROTATE=OBLIMIN(p), the ROTATE= option value takes precedence.

There is no restriction on valid values for the oblimin weight, although for practical purposes a negative or zero value is recommended. By default TAU=0, which results in the quartimin rotation. See the section Simplicity Functions for more information.

ULTRAHEYWOOD
ULTRA

allows communalities to exceed 1. This option can cause convergence problems, because communalities can become extremely large and ill-conditioned Hessians might occur. See the section Heywood Cases and Other Anomalies of Communality Estimates for a discussion of Heywood cases. This option has no effect if you specify METHOD=PRINCIPAL.

VARDEF=DF | N | WDF | WEIGHT | WGT

specifies the divisor to use for calculating variances and covariances. By default, VARDEF=DF. The values and associated divisors are displayed in the following table.

Value Description Divisor
DF Degrees of freedom
N Number of observations n
WDF Sum of weights DF
WEIGHT | WGT Sum of weights

Last updated: June 22, 2026