[R] Issues with fa() function in "psych"

William Revelle lists at revelle.net
Wed Apr 9 16:35:07 CEST 2014


Sagnik raises the question as to why the psych package does not offer the ‘equamax’ rotation.
It is because all rotations are handled through the GPArotation package which does not offer equamax.

Sagnik also points out that if the requested rotation is not available, fa defaults to rotate=“none” without any warning.  I have fixed that for the  next release (1.4.4).
(1.4.4 also will fix a bug in corr.test introduced into 1.4.3).


The question about why printing just the loadings matrix leaves blank cells?  That is because the loadings matrix of class “loadings” which the default print function prints with a cut = .3.
Using the example from Sagnik, print(efa_pa$loadings,cut=0) will match the output of efa_pa.

The fm=“pa” option runs conventional principal axis factor analysis (ala SPSS).  As documented, this iterates max.iter times

"Not all factor programs that do principal axes do iterative solutions. The example from the SAS manual (Chapter 26) is such a case. To achieve that solution, it is necessary to specify that the max.iterations = 1. Comparing that solution to an iterated one (the default) shows that iterations improve the solution. In addition, fm="minres" or fm="mle" produces even better solutions for this example.”

The com column is factor complexity using the index developed by Hofmann (1978).  It is a row wise measure of item complexity.
I have added more documentation to this in 1.4.4

Bill


On Apr 8, 2014, at 2:28 AM, Pascal Oettli <kridox at ymail.com> wrote:

> Hello,
> 
> And what about submitting your suggestions directly to the package
> author/maintainer?
> 
> And please don't post in HTML.
> 
> Regards,
> Pascal
> 
> On Tue, Apr 8, 2014 at 3:13 PM, sagnik chakravarty
> <sagnik.stats at gmail.com> wrote:
>> Hi Team,
>> 
>> I was using your "psych" package for factor analysis and was also comparing
>> the results with SAS results. I have some suggestions and/or confusions
>> regarding the fa() function in the package:
>> 
>>   - The fa() function *doesn't account for Heywood cases* (communality
>>   greater than 1) and never ever throws out any error related to that which
>>   other softwares do. This is a serious and common issue in iterative factor
>>   analysis and hence should have been accounted for.
>> 
>> 
>>   - The fa() function doesn't provide "equamax" rotation in its rotation
>>   list and still if you specify "*rotation=equamax*", it will run without
>>   throwing out any error and even mentioning in the result that "equamax" has
>>   been applied. But I have thoroughly compared results from "
>>   *rotation=none*" and "*rotation=equamax*" options and they are exactly
>>   same. *That means fa() is not doing the rotation at all and yet telling
>>   that it is doing that!!* I have even mentioned "*rotation=crap*" option
>>   just to check and surprisingly it ran(without any error) with the result
>>   showing:
>> 
>>           *Factor Analysis using method =  gls*
>> *           Call: fa(r = cor_mat, nfactors = 4, n.obs = 69576, rotate =
>> "crap", fm = "gls")*
>> 
>>            I hope you understand the severity of this bug and hence
>> request you to correct this.
>> 
>>   - To my sense, there might be some problem with "fm=ml" and "fm=pa"
>>   options since the convergence issue should be with MLE method and not PA
>>   method but while running factor analysis with PA, I am getting the
>>   following warning:
>> 
>>            *maximum iteration exceeded*
>> *            The estimated weights for the factor scores are probably
>> incorrect.  Try a different factor extraction method.*
>> 
>>             If I compare the results of R and SAS,* I am getting
>> convergence error for MLE in SAS whereas I am getting the same error for PA
>> in R *!! I am not being able to understand this mismatch.
>> 
>>   - If I call the *loading matrix like efa_pa$loadings, the matrix shown
>>   has many blank cells whereas the final result showing the loadings doesn't
>>   have so* !!
>> 
>> *Loadings:*
>> *             PA1    PA2    PA3    PA4   *
>> *Var1    0.401                       -0.243*
>> *Var2    0.336 -0.104            0.710*
>> *Var3    0.624  0.123 0.170      *
>> 
>> 
>>   - Could you please explain* what the "com" column means* in the output:?
>> 
>> 
>> *           PA1   PA3   PA2   PA4     h2          u2      com*
>> *Var1  0.44  0.14 -0.03  -0.10 0.22665  0.773  1.3*
>> *Var2  0.08  0.11  0.02   0.78  0.62951  0.370  1.1*
>> *Var3  0.62  0.12  0.15   0.14  0.43578  0.564  1.3*
>> 
>>   - Request you to add option for *"equamax" rotation* also if possible.
>> 
>> 
>> I have come across the above issues until now. Please do correct me if I am
>> wrong.
>> 
>> Awaiting your revert which would clear out my confusions,
>> 
>> Thanks for your valuable time,
>> 
>> Sagnik
>> 
>> --
>> Regards,
>> 
>> *SAGNIK CHAKRAVARTY*
>> 
>> *Mob:*  +919972865435
>> *Email:* sagnik.stats at gmail.com
>>           sagnik.739 at gmail.com
>> 
>>        [[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
> 
> 
> 
> -- 
> Pascal Oettli
> Project Scientist
> JAMSTEC
> Yokohama, Japan
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 

William Revelle		           http://personality-project.org/revelle.html
Professor			           http://personality-project.org
Department of Psychology   http://www.wcas.northwestern.edu/psych/
Northwestern University	   http://www.northwestern.edu/
Use R for psychology             http://personality-project.org/r
It is 5 minutes to midnight	   http://www.thebulletin.org




More information about the R-help mailing list