**Procrustean Factor Rotation**

**Aim**: To make factor structures maximally comparable & provide a statistical estimate of factor similarity

**Why are we concerned with Procrustean Rotation?**Factor rotation is arbitrary, therefore apparently dissimilar factor structures might be more similar than we think; procrustean rotation is necessary to judge structural and metric equivalence

**Statistical Procedure:**

A SPSS routine to carry out target rotation needs to be run (adapted from van de Vijver & Leung, 1997)

The following routine can be used to carry out a target rotation and evaluate the similarity between the original and the target-rotated factor loadings. One cultural group is being assigned as the source and the second group is the target group. The varimax rotated (or unrotated) factor loadings for at least two factors obtained in two groups need to be inserted. The loadings need to be inserted, separated by commas and each line is ended with a semicolon. The last line is not to end with a semicolon, but with a ‘}’. Failure to pay attention to this will result in an error message and no rotation will be carried out. To use an example, Fischer and Smith (2006) measured self-reported extra-role behaviour in British and East German samples. Extra-role behaviour is related to citizenship behaviour, voluntary and discretationary behaviour that goes beyond what is expected of employees, but helps the larger organization to survive and prosper. These items were supposed to measure a more passive component (factor 1) and a more proactive component (factor 2). The selection of the target solution is arbitrary, in this case we rotated the East German data towards the UK matrix.

Table 1. Items and varimax-rotated loadings in each sample separately

| | | | |

| Factor 1 | Factor 2 | Factor 1 | Factor 2 |

I am always punctual. | .783 | -.163 | .778 | -.066 |

I do not take extra breaks. | .811 | .202 | .875 | .081 |

I follow work rules and instructions with extreme care. | .724 | .209 | .751 | .079 |

I never take long lunches or breaks. | .850 | .064 | .739 | .092 |

I search for causes for something that did not function properly. | -.031 | .592 | .195 | .574 |

I often motivate others to express their ideas and opinions. | -.028 | .723 | -.030 | .807 |

During the last year I changed something. in my work.... | .388 | .434 | -.135 | .717 |

I encourage others to speak up at meetings. | .141 | .808 | .125 | .738 |

I continuously try to submit suggestions to improve my work. | .215 | .709 | .060 | .691 |

**Syntax:**

This can not be done using the windows interface within SPSS. You should run a factor analysis in each sample separately first. Use Varimax (orthogonal) rotation. Then insert the loadings in the loadings and norm matrices in the SPSS syntax described in Fischer and Fontaine (2011, in Matsumoto and Van de Vijver’s Cross-Cultural Research Methods in Psychology). I can also email this syntax to you (contact me at Ronald.Fischer@vuw.ac.nz).

The start of the syntax is printed below. Be careful to separate the loadings by a ‘,’ and the last loading for each item needs to be followed by ‘;’. The last loading should be indicated by }.

matrix.

compute LOADINGS={

.778, -.066;

.875, .081;

.751, .079;

.739, .092;

.195, .574;

-.030, .807;

-.135, .717;

.125, .738;

.060, .691 }.

compute NORMs = {

.783, -.163;

.811, .202;

.724, .209;

.850, .064;

-.031, .592;

-.028, .723;

.388, .434;

.141, .808;

.215, .709}.

…

**Output and Interpretation:**

The edited output for this example is shown below. It shows the rotated matrix of the group (East Germany in our case) that was rotated to maximal similarity:

*********************************************************************

Run MATRIX procedure:

FACTOR LOADINGS AFTER TARGET ROTATION

.77 -.10

.88 .04

.75 .05

.74 .06

.22 .57

.00 .81

-.10 .72

.16 .73

.09 .69

DIFFERENCE IN LOADINGS AFTER TARGET ROTATION

-.01 .06

.07 -.16

.03 -.16

-.11 .00

.25 -.03

.03 .08

-.49 .29

.02 -.08

-.13 -.02

Square Root of the Mean Squared Difference per Variable (Item)

.05

.12

.12

.08

.18

.06

.40

.05

.09

Square Root of the Mean Squared Difference per Factor

.19 .13

IDENTITY COEFFICIENT per Factor

.94 .97

ADDITIVITY COEFFICIENT per Factor

.86 .92

PROPORTIONALITY COEFFICIENT per Factor

.94 .97

CORRELATION COEFFICIENT per Factor

.86 .93

------ END MATRIX -----

The output shows the factor loadings following rotation, the difference in loadings between the original structure and the rotated structure as well as the differences of each loading squared and then averaged across all factors (square root of the mean squared difference per variable column).

The first matrix could be pasted in a new table, showing the rotated loadings (instead of using the loadings from the original analysis as reported above in the table). The second matrix shows the differences after rotation. You should look for large values, because they indicate that some items are problematic. A low value would indicate good correspondence.

The column of values entitled: Square Root of the Mean Squared Difference per Variable (Item) gives you information about each item. The larger the value, the more problematic is an individual item. The next row (Square Root of the Mean Squared Difference per Factor) shows the same information per factor. Again, smaller values are better, larger values indicate trouble for a particular factor. There are no hard and fast criteria for any of these indices above, you should look at the relative values and particular discrepant values.

The most important information is reported in the last four lines, namely the various agreement coefficients. As can be seen there, the values are all above .85 and generally are beyond the commonly accepted value of .90. The most common indicator is Tucker’s Phi which is called Proportionality coefficient here.

It is also worth noting the first factor shows lower congruence and that the estimate vary across indicators. An examination of the differences between the loadings shows that one item (During the last year I changed something. in my work....) in particular shows somewhat different loadings. In the British sample, it loads moderately on both factors, whereas it loads highly on the proactivity factor in the German sample. Therefore, among the British participants making some changes in their workplace is a relatively routine and passive task, whereas for German participants this is a behaviour that is associated more with proactivity and initiative (e.g., Frese et al., 1996). We might want to exclude this item and re-run the analyses. Overall, we could cautiously conclude that our scales meet structural equivalence and most items might even meet metric equivalence (although this syntax routine does not provide a statistical test for this higher level of equivalence).

Good on ya... if you made it to this point ; ) Hope your eyes are looking slightly better than that of a Tarsier...

Cooool~ thanks Ron for sharing!

ReplyDeleteHi Ron,

ReplyDeleteIs it necessary to calculate the coefficient of congruence before the Procrustean Factor Rotation, or will this alone suffice when forming a index of structural similarity?

Many Thanks

Hey Kieran, calculate the congruence coefficients after the procrustean rotation. EFA results can be somewhat arbitrary, so you want to rotate to similarity before comparing the structures.

DeleteDear Ron,

ReplyDeletethank's for sharing! Very cool!

Just to make sure that I understand everything correctly: It's impossible to compare many groups (>40) simultaneously without running EFA in each sample separately, right?

My initial idea was to use the loadings of an overall EFA as target to see how the other groups differ from "the mean"... Seems to be much handwork here...

Hi! Great tutorial. I was wondering, can it both be used after factor analysis AND principal component analysis, of with either one?

ReplyDeleteRegards, Dirk

Hi Ron,

ReplyDeleteThank you very much for sharing !

I tried this with many different samples. While it works for most of them, I get an error message about an attempt to divide by zero for others (I re-checked syntaxes and they are OK. I guess problems arise from one of the matrix).

Do you have any idea why it occurs and how I can fix it ?

Many thanks

Camille