Lots of problems here. As Paige says, it would be useful to know why you are doing these things.
1. You need to show how you generate the eigenvalues table. What options do you pass into the %EFA macro?
2. When you use the MSA option, the resulting reduced correlation matrix is usually not positive definite. Get rid of that option if you want positive definite estimates. Other options can also contribute to negative eigenvalues. To be safe, use METHOD=PRINCIPAL CORR.
3. You can conduct a parallel analysis by adding the PARALLEL option to the PROC FACTOR statement. No need to do the simulation yourself.
Is the fact that all my eigenvalues in the PRINCOMP output are non-negative sufficient evidence for my matrix being full rank?
Thank you for your help! Do you have any suggestions for testing if my matrix is ill-conditioned? This link (https://mathworld.wolfram.com/ConditionNumber.html) explains how to check for it, but I am unsure of how to do the Singular Value Decomposition in SAS and then conduct this test.
1. Everyone who responds to a post is automatically "subscribed" and gets notified every time there is a new comment.
2. Yes, the fact that all eigenvalues of X`X are positive means that X`X is positive definite and full rank.
3. Ill-conditioning has nothing to do with your problem.
4. Negative eigenvalues are discussed in the doc. You will often get negative eigenvalues unless you use METHOD=PRINCIPAL. The doc explains many reasons why this can happen.
5. Polychoric correlations are merely the correlations for underlying (latent) continuous variables. As such, the resulting correlation matrix must be positive definite. I still don't know what code you are submitting, but I think that the eigenvalues you are reporting are for the REDUCED correlation matrix. A reduced correlation matrix is the correlation matrix of the original variables, except that the 1’s on the diagonal are replaced by prior communality estimates. These estimates are less than 1, and so the reduced correlation matrix might not be positive definite.
Unfortunately, I am very busy this week, and I doubt I'll have the time to respond further.
Thank you for your help. To clarify the code I am using is:
proc factor data=sport_polychoric rotate=quartimin method=uls;
run;
where sport_polychoric is my polychoric correlation matrix. I was under the impression that if I set my method to PRINCIPAL then I would no longer be doing a factor analysis and would instead be running a principal component analysis. I think the diagonals of the correlation matrix not being 1 is a central assumption of factor analysis.
Thank you for your assistance and I will look over that link you shared.
Also, with the negative eigenvalues I was expecting to have a heywood or ultra heywood case but that does not appear to be the situation. I would attach the table but it is too large to get a decent screenshot and the formatting gets messed up when I paste it here. At the top of the table is does say Prior Communality Estimates: SMC, so maybe there is a different communality estimate I should be using?
One more thing I would like to add is that the negative eigenvalues are the initial ones calculated from the reduced correlation matrix (the diagonals are not 1). The 11th eigenvalue is the first of these initially calculated eigenvalues to turn negative.
Coincidentally, SAS will use no more than 10 factors, even if I specify 12 or 20 or whatever. My gut is saying this is because it might lead to a heywood or ultraheywood case, so SAS prohibits this from happening. I did try specifying HEYWOOD and ULTRAHEYWOOD in the PROC FACTOR statement, but it still would only retain a max of 10 factors regardless of what value I put in for nfactors.
This leads to me to believe that the negative values are not necessarily an issue, but instead provide me an upperbound for the number of factors I could potentially have (in my case 10). I have not yet found any literature to support this, but I will do some digging.
Now, after it gets through the initial estimates, I've found that with some values of nfactors, I will end up with a quasi heywood case where a communality for a variable is greater than its estimated reliability. I read that this should be met with just as much skepticism as an ultraheywood case so I figured there were a few options: remove the offending variable(s) or find the subset of factor structures where the quasi heywood case does not occur. Ultimately, all any model with a number of factors >4 ended up having this quasi heywood case.
This then suggests to me that any model with 5 or more factors is not plausible given my data, and any hypothetical models I explore moving forward will be with 4 or fewer factors.
As a quick note, I did try removing the offending variable, but then another one exceeded its reliability upon re-running the program. I also figured changing the model structure was generally more favorable than dropping data points.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!
ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.
Find more tutorials on the SAS Users YouTube channel.