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

William Revelle lists at revelle.net
Thu May 15 03:04:23 CEST 2014


Sagnik,

I did some more checking and in fact you can do equamax through GPA rotation.  (Gunter Nickel pointed this out in a post to R-help).  I will implement this in version 1.4.6 (1.4.5 is now working its way through the various CRAN mirrors).

You might like 1.4.5 in that I have added various ways of displaying confidence intervals (cats eye plots) as well as upper and lower confidence limits for correlations (cor.plot.upperLowerCi)

Bill

On Apr 10, 2014, at 1:22 AM, sagnik chakravarty <sagnik.stats at gmail.com> wrote:

> Thanks a lot Bill and Revelle for your helpful response.
> It would have been great if I could know when we can expect the release of the edited version 1.4.4. 
> 
> Sagnik
> 
> 
> On Wed, Apr 9, 2014 at 8:05 PM, William Revelle <lists at revelle.net> wrote:
> 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
> 
> 
> 
> 
> 
> 
> 
> -- 
> Regards,
> 
> SAGNIK CHAKRAVARTY
> 
> Mob:  +919972865435      
> Email: sagnik.stats at gmail.com
>            sagnik.739 at gmail.com

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