IBM Support

Can SPSS do a second-order factor analysis?

Troubleshooting


Problem

I need to do a second-order factor analysis. That is, I want to do a factor analysis on some data, implement an oblique rotation method, then factor analyze the estimated correlation matrix among the factors. Can SPSS FACTOR do this?

Resolving The Problem

*This file shows how to do a second-order factor analysis in SPSS, using the
*hlth1 to hlth9 variables in the 1991 US General Social Survey file that comes
*with SPSS. Open that file before executing the first set of commands. In
*order to use this with other data, you would need to edit the variable list on
*the first FACTOR command and open a different data file. This is also for a
*three factor solution in the first order factor analysis. If you want more than
*three factors, you would need to change the CRITERIA subcommand in that
*first FACTOR command, and also modify the RENAME VARIABLES command
*and the set of IF commands to add additional references to the additional
*factors. This example uses the PAF extraction method. Change that in both
*FACTOR commands if you want to use a different method.

OMS
/SELECT TABLES
/IF COMMANDS = ["Factor Analysis"]
SUBTYPES = ["Factor Correlation Matrix"]
/DESTINATION FORMAT = SAV
OUTFILE = "C:\temp\Factor_correlation_matrix.sav".
FACTOR
/VARIABLES hlth1 hlth2 hlth3 hlth4 hlth5 hlth6 hlth7 hlth8 hlth9
/MISSING LISTWISE
/PRINT INITIAL EXTRACTION ROTATION
/CRITERIA FACTORS(3) ITERATE(50)
/EXTRACTION PAF
/CRITERIA ITERATE(25)
/ROTATION PROMAX(4)
/METHOD=CORRELATION .
OMSEND.
GET FILE='C:\temp\Factor_correlation_matrix.sav'.
RENAME VARIABLES (@1=factor_1) (@2=factor_2) (@3=factor_3).
STRING ROWTYPE_ (a8) VARNAME_ (a8).
COMPUTE ROWTYPE_='CORR'.
COMPUTE VARNAME_='factor_1'.
IF $CASENUM=2 VARNAME_='factor_2'.
IF $CASENUM=3 VARNAME_='factor_3'.
EXECUTE.

*You then have to manually add a case to the data file. Insert this case before
*the other cases. It should have "N" for the ROWTYPE_ variable, nothing for the
*VARNAME_ varible, and for each of the factor_ variables, the N from the original
*factor analysis. After you do this, run the SAVE command.

SAVE OUTFILE='C:\temp\Second_order_factor_input.sav'
/KEEP=ROWTYPE_ VARNAME_ factor_1 to factor_3.

*Before running the FACTOR command, you'll need to decide on the extraction
*and rotation methods and how many factors you want extracted if you don't
*want FACTOR to choose based on the eigenvalues greater than 1 default
*criterion. Replace the question marks with your choices. If you want FACTOR
*to choose the number of factors, remove the "FACTORS(?)" keyword from the
*CRITERIA subcommand. If you don't want the second order solution rotated,
*specify NONE on the ROTATION subcommand.

FACTOR /MATRIX=IN(COR='C:\temp\Second_order_factor_input.sav')
/PRINT INITIAL EXTRACTION ROTATION
/CRITERIA FACTORS(?) ITERATE(50)
/EXTRACTION PAF
/ROTATION ?

[{"Product":{"code":"SSLVMB","label":"IBM SPSS Statistics"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"Not Applicable","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"Not Applicable","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Historical Number

60245

Document Information

Modified date:
16 April 2020

UID

swg21479182