# Do Stata and SPSS give conflicting versions of Anti-Image matrices?

I read on p1 of the Stata Manual glossary that:

The image of a variable is defined as that part which is predictable by regressing each variable on all the other variables; hence, the anti-image is the part of the variable that cannot be predicted. The anti-image correlation matrix $A$ is a matrix of the negatives of the partial correlations among variables. Partial correlations represent the degree to which the factors explain each other in the results. The diagonal of the anti-image correlation matrix is the Kaiser–Meyer–Olkin measure of sampling adequacy for the individual variables. Variables with small values should be eliminated from the analysis. The anti-image covariance matrix $C$ contains the negatives of the partial covariances and has one minus the squared multiple correlations in the principal diagonal. Most of the off-diagonal elements should be small in both anti-image matrices in a good factor model. Both anti-image matrices can be calculated from the inverse of the correlation matrix $R$ via

$A = \{{diag(R)}\}^{-1}R\{{diag(R)}\}^{-1}$
$C =\{{diag(R)}\}^{-1/2}R\{{diag(R)}\}^{-1/2}$

I generated some Anti-Image Covariance and Correlation Matrices in SPSS. On the SPSS website I couldn't find any explanation of how they calculated Anti-Image matrices.

For no particular reason I decided to use those Stata formulae to generate the Anti-Image correlation and covariance matrices in MATLAB, using a data matrix from here.

corr_mat = corr(data);
R = inv(corr_mat);
DiagR = diag(diag(R));
Dcov = DiagR^-(1/2);
Dcorr = inv(DiagR);
AntiImageCov = Dcov * R * Dcov;
AntiImageCorr = Dcorr * R * Dcorr;


When I ran the code in SPSS (using their factor analysis function) and in MATLAB (using my code, based on the Stata Manual) I got the following results:

The 'a' just leads to a footnote saying

I find this really weird, because the SPSS Anti-Image Covariance Matrix perfectly matches the Anti-Image Correlation Matrix I got using my code. Meanwhile, aside from the diagonal the SPSS Anti-Image Correlation Matrix perfectly matches the Anti-Image Covariance Matrix I got using my code.

Does anyone know how I can resolve this seeming inconsistency? For example, are the Stata formulae simply wrong, or I have I implemented them in an incorrect way?

• On the SPSS website I couldn't find any explanation Explanations could be found on this site, stats.stackexchange.com/q/213060/3277. Can it help? Also, you should be aware that SPSS outputs (in FACTOR command), in "Anti-image matrices" table the anti-image covariance matrix obtained from correlation matrix, not from covariance matrix, - even if you base the analysis on the covariances. – ttnphns Jun 15 '16 at 3:27
• Note also that MSA measures on the diagonal of anti-image correlation matrix are put there for convenience. The original diagonal values of the matrix is of course 1. – ttnphns Jun 15 '16 at 4:14
• @ttnphns is there a difference between the formula at the link you provided, and the Stata formula? It seemed you got the Anti-Image Covariance Matrix through $\{{diag(R)}\}^{-1}R\{{diag(R)}\}^{-1}$, but Stata wants to get it through $\{{diag(R)}\}^{-1/2}R\{{diag(R)}\}^{-1/2}$. – user1205901 Jun 15 '16 at 7:52
• The correct formula for anti-image covariance matrix (shown in matrix notation in my answer) is $\{{diag(R^{-1})}\}^{-1} R^{-1}\{{diag(R^{-1})}\}^{-1}$. SPSS uses it. In your Stata citation from the inverse of the correlation matrix R I suppose they mean R is the inverse of correlation matrix. – ttnphns Jun 15 '16 at 10:38
• Ah, I see. Yes, I suppose Stata mixed it up. Probably a typo in their text. – ttnphns Jun 16 '16 at 8:45