In reply to Warren Kuhfeld.

Regarding the robust covariance matrix, the MCD algorithm randomly chooses K observations, computes the covariance matrix for those points, repeats the process many times, and returns the covariance matrix that has the smallest determinant. (In the example, K is 75% of the total observations.) Thus the robust matrix is a REAL covariance matrix, and consequently is always positive semidefinite.

Your idea about using a TYPE=COV data set is excellent. You could write the matrix from IML and then input it as a type=COV data set. You could then get the eigenvectors/PCs and scree plots. You would use PROC SCORE to get the PC scores, which has the advantage that PROC SCORE handles missing values. The following SAS calls give the general idea:

/* If you have created a type=COV data set called ROBUSTCOV, do the following. */
/* Read in COV matrix; write out PCs, which are scoring coefficients */
proc princomp data=RobustCOV outstat=PCModel;
var Murder Rape Robbery Assault Burglary Larceny Auto_Theft;
run;

/* use PROC SCORE to do the matrix multiplication */
proc score data=Crime score=PCModel out=PCScores;
var Murder Rape Robbery Assault Burglary Larceny Auto_Theft;
run;