Reading Centroid extracted factor matrix into SPSS

2019-06-01 08:44发布

问题:

UPDATE: 4/28 I found the proper syntax to import my centriod factor extraction into SPSS and rotate it. Because of limitations in SPSS on what subcommands can be used when reading a matrix in via MATRIX IN (...), I still need to find a way to get the FSCORE and save the new variable (/SAVE REG(ALL) ), but that is another post.

What I believe to be the correct syntax is below, along with the proper setup of the matrix. Please correct me if I'm wrong!

ORIGINAL POST: I've been struggling with this for the last 4 days. I have concluded that I'm not smart enough to sort this out on my own, and I want to do this right.

Desired Outcome: I want to instruct SPSS to read a matrix of extracted factors calculated from another program and proceed with factor analysis. Put another way, instead of having SPSS extract the factors using PCA (or whatever method fits the data), I needed to use the centroid extraction method (unavailable, to my knowledge, in SPSS).

I would like to use this centroid factor extraction data and create a new variable into Dataset A with the factor scores for each variable.

So...performing the following analysis but instead using my own extracted factors:

 FACTOR 
   /VARIABLES VAR00001 VAR00002 VAR00003 VAR00004 VAR00005 VAR00006 VAR00007 VAR00008 VAR00009 VAR00010 VAR00011 VAR00012 VAR00013 VAR00014 VAR00015 VAR00016 VAR00017 VAR00018 VAR00019 VAR00020 VAR00021 VAR00022 VAR00023 VAR00024 VAR00025 VAR00026 VAR00027 VAR00028 VAR00029 VAR00030 VAR00031 VAR00032 VAR00033 VAR00034 VAR00035 VAR00036 VAR00037 VAR00038 VAR00039 VAR00040 VAR00041 VAR00042 VAR00043 VAR00044 VAR00045 VAR00046 VAR00047 VAR00048 VAR00049 VAR00050 VAR00051 VAR00052 VAR00053 VAR00054 VAR00055 VAR00056 VAR00057 VAR00058 VAR00059 VAR00060 VAR00061 VAR00062 VAR00063 VAR00064 VAR00065 VAR00066 VAR00067 VAR00068 VAR00069 VAR00070 VAR00071 VAR00072 VAR00073 VAR00074 
   /MISSING LISTWISE 
   /ANALYSIS VAR00001 VAR00002 VAR00003 VAR00004 VAR00005 VAR00006 VAR00007 VAR00008 VAR00009 VAR00010 VAR00011 VAR00012 VAR00013 VAR00014 VAR00015 VAR00016 VAR00017 VAR00018 VAR00019 VAR00020 VAR00021 VAR00022 VAR00023 VAR00024 VAR00025 VAR00026 VAR00027 VAR00028 VAR00029 VAR00030 VAR00031 VAR00032 VAR00033 VAR00034 VAR00035 VAR00036 VAR00037 VAR00038 VAR00039 VAR00040 VAR00041 VAR00042 VAR00043 VAR00044 VAR00045 VAR00046 VAR00047 VAR00048 VAR00049 VAR00050 VAR00051 VAR00052 VAR00053 VAR00054 VAR00055 VAR00056 VAR00057 VAR00058 VAR00059 VAR00060 VAR00061 VAR00062 VAR00063 VAR00064 VAR00065 VAR00066 VAR00067 VAR00068 VAR00069 VAR00070 VAR00071 VAR00072 VAR00073 VAR00074 
 /PRINT INITIAL CORRELATION SIG DET INV REPR AIC EXTRACTION ROTATION FSCORE 
 /FORMAT BLANK(.544) 
 /CRITERIA FACTORS(6) ITERATE(60) 
 /EXTRACTION PC 
 /CRITERIA ITERATE(100) DELTA(0) 
 /ROTATION OBLIMIN 
 /SAVE REG(ALL) 
 /METHOD=CORRELATION.

Assets: Dataset A (consists of 74 survey responses across 36 nominal, commeasurable variables); Centroid matrix (six extracted factors for each respondent)

ID    f1      f2       f3      f4      f5       f6
1    .79778 .02151  -.07729 -.04738 .09509  -.06625
2    .65029 .02050   .29293  .04123 .24523  -.13920
3    .75398 .14790   .03987 -.09101 .16572   .24866
   etc..

SOLUTION

First, make sure your centroid extraction matrix is set up properly. This means:

ROWTYPE_ as system variable with FACTOR as a string value for each row/case.

FACTOR_ as system variable with numeric values that labels each row/case.

Each factor in this matrix is one row/case. (I had mine transposed since that was how it was extracted...sigh...)

FACTOR MATRIX IN (FAC='path to centroid extraction matrix.sav')
/MISSING LISTWISE
 /PRINT ROTATION 
 /FORMAT BLANK(.544) 
 /CRITERIA ITERATE(80) DELTA(0) 
  /ROTATION OBLIMIN 
  /METHOD=CORRELATION.

Failed Attempts as Monuments to My Syntax Inadequacies I'm sure that I'm messing this up somehow (note: yep!), but here's the syntax I've tried:

Approach 1: With Dataset A open and set as the active dataset in the syntax editor, instruct SPSS to read the centroid factors and proceed with the analysis.

FACTOR 
/MATRIX=IN (FAC= 'C:/YYYY/cent.sav')
/PRINT ALL
/ROTATION OBLIMIN 
/METHOD=CORRELATION.

Approach 2: Manually reading the centroid matrix into SPSS then proceeding with the factor analysis with Dataset 1 set as active.

MATRIX DATA VARIABLES=varlist
/N=74
/CONTENTS= MAT.
BEGIN DATA
.79778   .02151   -.07729   -.04738   .09509   -.06625
.65029   .02050   .29293   .04123   .24523   -.13920
.75398   .14790   .03987   -.09101  .16572  .24866
etc.
END DATA.
EXECUTE.
FACTOR
/PRINT ROTATION
/ROTATION OBLIMIN
/SAVE REG(ALL) 
/METHOD=CORRELATION. 

Please forgive the weak code of my syntax. I'm trying to learn the rules and have been reading the SPSS manual (online and off) trying (and failing) to get it right.

Thank you for any assistance you can offer, and sorry for the length of the question.

回答1:

SOLUTION FOR ROTATION

First, make sure your centroid extraction matrix is set up properly. This means:

ROWTYPE_ as system variable with FACTOR as a string value for each row/case.

FACTOR_ as system variable with numeric values that labels each row/case.

Each factor in this matrix is one row/case. (I had mine transposed since that was how it was extracted...sigh...)

FACTOR MATRIX IN (FAC='path to centroid extraction matrix.sav')
/MISSING LISTWISE
/PRINT ROTATION 
/FORMAT BLANK(.544) 
/CRITERIA ITERATE(80) DELTA(0) 
/ROTATION OBLIMIN 
/METHOD=CORRELATION.


回答2:

"I would like to use this centroid factor extraction data and create a new variable into Dataset A with the factor scores for each variable."

Perhaps you mean Factor Scores for Each case? That is NOT possible with simply the Factor Loadings. You need the case level data. Presumably you have that and want to acquire the corresponding factor scores. I would suggest you look into how these are calculated (see Algorithms) and write the necessary code using the MATRIX procedure. You won't get very far without it.