openjournals / joss-reviews

Reviews for the Journal of Open Source Software
Creative Commons Zero v1.0 Universal
721 stars 38 forks source link

[REVIEW]: EFAtools: An R package with fast and flexible implementations of exploratory factor analysis tools #2521

Closed whedon closed 4 years ago

whedon commented 4 years ago

Submitting author: @mdsteiner (Markus Steiner) Repository: https://github.com/mdsteiner/EFAtools Version: v0.1.1 Editor: @fboehm Reviewers: @jacobsoj, @chainsawriot Archive: 10.5281/zenodo.4032509

:warning: JOSS reduced service mode :warning:

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/e30bc75fc9ade6455593b9af4539a5b3"><img src="https://joss.theoj.org/papers/e30bc75fc9ade6455593b9af4539a5b3/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/e30bc75fc9ade6455593b9af4539a5b3/status.svg)](https://joss.theoj.org/papers/e30bc75fc9ade6455593b9af4539a5b3)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@jacobsoj & @chainsawriot, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @fboehm know.

Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest

Review checklist for @jacobsoj

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

Review checklist for @chainsawriot

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

whedon commented 4 years ago

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @jacobsoj, @chainsawriot it looks like you're currently assigned to review this paper :tada:.

:warning: JOSS reduced service mode :warning:

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

:star: Important :star:

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@whedon generate pdf
whedon commented 4 years ago
Reference check summary:

OK DOIs

- 10.1177/1073191119845051 is OK
- 10.1007/BF02289209 is OK
- 10.7275/jyj1-4868 is OK
- 10.1177/0095798418771807 is OK
- 10.7287/peerj.preprints.3188v1 is OK
- 10.1016/j.csda.2013.02.005 is OK
- 10.1037/met0000200 is OK
- 10.1037/met0000074 is OK
- 10.1037/a0025697 is OK
- 10.1080/00273171.2011.564527 is OK
- 10.18637/jss.v048.i02 is OK

MISSING DOIs

- None

INVALID DOIs

- None
whedon commented 4 years ago

:point_right: Check article proof :page_facing_up: :point_left:

chainsawriot commented 4 years ago

Thanks @mdsteiner & Co. for this wonderful package.

Software paper

The paper is well written. But I don't know the policy of JOSS enough about citing "Manuscript in preparation". (Could @fboehm confirm this?) Obviously, the two authors are probably the only persons having that paper now. I can't 'see Grieder & Steiner, 2020', as per the in-text citation.

I have 2 suggestions:

  1. Put it as a preprint and then cite it.
  2. If it can't be put as a preprint (we know how these social science journals work...), maybe just say

    the ability to reproduce the R psych (Revelle, 2019) and SPSS (IBM, 2015) implementations of some analyses methods, as well as the inclusion of experimental implementations for these methods based on simulation analyses by the authors (pending publication).

Package

Functions

I think the documentation and the vignette are very easy to read. I can understand the package very quickly. All methods are well referenced. The crayon-based output is a nice touch.

The package is feature-rich and it deals with all aspects of EFA. I especially like the function N_FACTORS becuse it helps to solve the problem of choosing n_factors

The package tries to match the SPSS's offerings. I only have one suggestion (which might be too much to ask): It would be nice to have the ability to plot screeplot. Biplot might be nice too. Some reviewers would ask for it.

Misc

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Advice from goodpractice::gp(). You don't need to consider all of the points. But I think some are useful and less opinionated.

fboehm commented 4 years ago

Regarding comments from @chainsawriot about the manuscript and the manuscript in preparation, it would be ideal if the authors can post a preprint and cite it, but, if that's not possible, then I like the other suggestion from @chainsawriot, too.

mdsteiner commented 4 years ago

Thank you @chainsawriot for the fast review and the many helpful comments and suggestions! Please find below our responses to your raised points.

Software paper

The paper is well written. But I don't know the policy of JOSS enough about citing "Manuscript in preparation". (Could @fboehm confirm this?) Obviously, the two authors are probably the only persons having that paper now. I can't 'see Grieder & Steiner, 2020', as per the in-text citation.

I have 2 suggestions:

  • Put it as a preprint and then cite it.
  • If it can't be put as a preprint (we know how these social science journals work...), maybe just say the ability to reproduce the R psych (Revelle, 2019) and SPSS (IBM, 2015) implementations of some analyses methods, as well as the inclusion of experimental implementations for these methods based on simulation analyses by the authors (pending publication).

Response: As the paper is not yet in a form we are comfortable to share as a preprint, we would, for now, like to opt for the second suggestion made by the reviewer. We changed the respective sentence in the paper accordingly. However, we hope to have a shareable version ready in time to still be able to include a reference to a preprint here.

To demonstrate that our package enables replication of the R psych and SPSS solutions, we added a vignette to the package and refer to it in the paper as well.

Package

Functions

I think the documentation and the vignette are very easy to read. I can understand the package very quickly. All methods are well referenced. The crayon-based output is a nice touch.

The package is feature-rich and it deals with all aspects of EFA. I especially like the function N_FACTORS becuse it helps to solve the problem of choosing n_factors

The package tries to match the SPSS's offerings. I only have one suggestion (which might be too much to ask): It would be nice to have the ability to plot screeplot. Biplot might be nice too. Some reviewers would ask for it.

Response: Thank you for this feedback! We include a scree plot in the KGC and PARALLEL functions, but these plots are not shown if KGC or PARALLEL are called within the N_FACTORS function. To facilitate getting a scree plot, we now added a function SCREE which just creates a scree plot / scree plots of the eigenvalues determined with either "PCA", "SMC" or "EFA", or a combination of them. This function can also be called in N_FACTORS now, just like the other factor retention criteria.

Furthermore, we also added a function FACTOR_SCORES which is a wrapper for psych::factor.scores to be used directly with an output from EFA.

We also like the idea of adding the option to do a biplot and would like to consider this as a future enhancement of our package.

Misc

Please remove .DS_Store from your repo. I don't know why your .gitignore doesn't work. But the following should at least do the trick of finding all .DS_Store and ignore them. find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Response: Thank you for this very helpful suggestion, we now removed all .DS_Store.

Advice from goodpractice::gp(). You don't need to consider all of the points. But I think some are useful and less opinionated.

Test coverage is 65% which is okay. But some important lines are not tested. e.g. R/BARTLETT.R:107 (corner cases that require cor.smooth) R/CD.R:236, 295, 303 (corner cases when shared_load[1,1] < 0)

Response: Thank you for making us aware of that. We did not know the goodpractice package and think it is really helpful. We now added new tests for some helper functions that were not tested before, and updated many of the existing tests to cover more different cases. Test coverage is now 74.7%. We do not test print and plot functions (which make up most of the untested lines) as well as some very minor cases and cases which would bear the risk of unstable results (e.g., the occurence of Heywood cases or non-convergence when random data are generated).

exportPattern is generated in NAMESPACE from this line Is it really needed? It also makes me wonder, do you need to export all helper functions? (e.g. .numformat)

Response: Thank you for pointing this out! We now deleted the exportPattern and export all functions explicitly. This way, the helper functions remain hidden.

Adding URL / Bugreports to the DESCRIPTION file would be helpful for your users to find your github repo.

Response: Thank you for this suggestion! We have now added the respective lines in the DESCRIPTION file.

chainsawriot commented 4 years ago

@whedon generate pdf

whedon commented 4 years ago

:point_right: Check article proof :page_facing_up: :point_left:

chainsawriot commented 4 years ago

Thank you so much for the revision, @mdsteiner. Both the paper and the software look fine to me now.

Back to you @fboehm .

fboehm commented 4 years ago

Thank you, @chainsawriot ! Just to verify - are you content with the documentation around community guidelines?

Thanks again!

fboehm commented 4 years ago

@jacobsoj - please let me know if you have any questions during your review. Thanks again!

chainsawriot commented 4 years ago

@fboehm The documentation around community guidelines looks fine to me. Really sorry that I have forgotten to check the box. The box is now checked. Thank you very much!

fboehm commented 4 years ago

@jacobsoj - I just wanted to ask if you have any questions about the review process. Please feel free to check the boxes as you examine the package and manuscript. Thanks again!

jacobsoj commented 4 years ago

Sorry for the delay. I am one of those people juggling work and young kids w/o daycare. I should be able to finish going through the package today and submit my review by tomorrow. Jill

Jill A. Jacobson, Ph.D. Office Phone 613-533-2847 Associate Professor, Social-Personality Program Lab Phone 613-533-6000 x75417 Queen's University FAX 613-533-2499 Department of Psychology Email jill.jacobson@queensu.ca Kingston, ON K7L 3N6 CANADA

http://www.queensu.ca/psychology/People/Faculty/Jill-Jacobson


From: Frederick Boehm notifications@github.com Sent: Monday, August 17, 2020 8:39 AM To: openjournals/joss-reviews joss-reviews@noreply.github.com Cc: Jill Jacobson jill.jacobson@queensu.ca; Mention mention@noreply.github.com Subject: Re: [openjournals/joss-reviews] [REVIEW]: EFAtools: An R package with fast and flexible implementations of exploratory factor analysis tools (#2521)

@jacobsojhttps://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fjacobsoj&data=02%7C01%7Cjill.jacobson%40queensu.ca%7C11fa0a57088f440e0b5408d842aaa1b1%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C637332647921969577&sdata=jotMeofjgMfe4nwwDDiHoRj6CAAQhmmBg0y9ayUsok8%3D&reserved=0 - I just wanted to ask if you have any questions about the review process. Please feel free to check the boxes as you examine the package and manuscript. Thanks again!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fopenjournals%2Fjoss-reviews%2Fissues%2F2521%23issuecomment-674856806&data=02%7C01%7Cjill.jacobson%40queensu.ca%7C11fa0a57088f440e0b5408d842aaa1b1%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C637332647921969577&sdata=bg0rxbR5JsNu0IooiJFkeztRx6g8Gq3vLNdlArE0YLc%3D&reserved=0, or unsubscribehttps://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAFIU35CK3R524HVSICZWLU3SBEQJLANCNFSM4PIC2TWA&data=02%7C01%7Cjill.jacobson%40queensu.ca%7C11fa0a57088f440e0b5408d842aaa1b1%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C637332647921979571&sdata=29ytHUmN5fr3MZlZORmhL%2FA9Z1X70vywfn%2BsGdg3z34%3D&reserved=0.

fboehm commented 4 years ago

Thanks, @jacobsoj ! I really appreciate your assistance with this.

Just to clarify - JOSS reviews are a little different from those at many journals. You'll want to see which items you can check off in the checklist above as you review the software and manuscript. For any boxes that you can't check right now, you'll want to tell the authors why you can't check the box, ie, what is missing or what is not working. The authors will then fix what you indicated. When they're satisfied that they've fixed the issues, they'll ask you to verify that you're satisfied with their work. The review is considered complete once all boxes are checked.

Thank you again, and please let me know how I might assist you as you work through the review.

fboehm commented 4 years ago

@jacobsoj - I just wanted to check in to see how things are going. I recognize that this is your first JOSS review, so it might be a little confusing. We primarily use the checklist that's available above to review the software and manuscript. Please let me know if you have any questions or concerns. Thanks again!!

mdsteiner commented 4 years ago

Thanks again @chainsawriot for the helpful comments! We have now uploaded a preprint of our paper where we report the simulation analyses concerning the default implementation of PAF and promax used in the EFA() function and have adapted our citation in the manuscript by citing the preprint as you suggested.

chainsawriot commented 4 years ago

@whedon generate pdf

whedon commented 4 years ago

:point_right: Check article proof :page_facing_up: :point_left:

chainsawriot commented 4 years ago

@mdsteiner Thanks for keeping me updated. It is really nice that the preprint is available for all of us. I hope that the review of both papers (this JOSS paper and your preprint) can go faster.

fboehm commented 4 years ago

@whedon add @jacobsoj as reviewer

whedon commented 4 years ago

OK, @jacobsoj is now a reviewer

chainsawriot commented 4 years ago

@fboehm I just want to make sure that I don't need to take any action about the above changes, right?

fboehm commented 4 years ago

@chainsawriot - Thanks for asking. I apologize for any confusion. No, you don't need to do anything. Thanks again!!

jacobsoj commented 4 years ago

This package has a lot of useful features particularly the N_FACTORS and COMPARE() functions. The sequential chi-square model test on its own would save a lot of time, but then being able to evaluate across so many different extraction methods makes doing an EFA even more efficient and why I look forward to teaching my students about this package.

I found the examples in the vignette easy to follow and implement. To further test the package, I also used my own data for which I previously had run an EFA using the psych package, so I knew what to expect. All the functions worked as described with no problems, and users will appreciate the additional interpretation information provided in the output.

The suggestions proposed by the other reviewer were helpful, so I just had 2 suggestions based on the guidelines provided by the checklist:

For Documentation, I didn't see the Community guidelines in the paper or vignette (i.e., answer to: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support.) On GitHub, it does say: "If you want to contribute or report bugs, please open an issue on GitHub or email us…", which might be sufficient although an email isn't provided in the text.

Overall it is well-written, but this one sentence from the Summary is quite complex and might be better broken into 2: "After a factor solution has been found, especially for data structures in the field of intelligence research where usually high, positive factor intercorrelations occur, it is useful to subject the resulting factor solution to an orthogonalization procedure to achieve a hierarchical factor solution with one general and several specific factors. " Perhaps instead: "After a factor solution has been found, it is useful to subject the resulting factor solution to an orthogonalization procedure to achieve a hierarchical factor solution with one general and several specific factors. This situation especially applies to data structures in the field of intelligence research where usually high, positive factor intercorrelations occur."

mdsteiner commented 4 years ago

Thank you @jacobsoj for your review and your suggestions. We are happy to hear that the package was well received and that it will be used for teaching purposes!

Concerning community guidelines, we have now added our email addresses in the README, such that the sentence you referenced now reads: "If you want to contribute or report bugs, please open an issue on GitHub or email us at markus.d.steiner@gmail.com or silvia.grieder@gmail.com." Moreover, the contact information is provided in the package DESCRIPTION file (available through packageDescription("EFAtools") in R). There, we also include the repository URL and a BugReports URL, in line with the suggestion made by @chainsawriot.

Concerning the sentence in the summary in the paper: Thank you for this helpful suggestion! We agree that this facilitates understanding and have adopted your proposed wording in the paper.

Thanks again for your helpful comments!

fboehm commented 4 years ago

@whedon check references

whedon commented 4 years ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1177/1073191119845051 is OK
- 10.1007/BF02289209 is OK
- 10.7275/jyj1-4868 is OK
- 10.1177/0095798418771807 is OK
- 10.7287/peerj.preprints.3188v1 is OK
- 10.1016/j.csda.2013.02.005 is OK
- 10.1037/met0000200 is OK
- 10.1037/met0000074 is OK
- 10.1037/a0025697 is OK
- 10.1080/00273171.2011.564527 is OK
- 10.18637/jss.v048.i02 is OK
- 10.31234/osf.io/7hwrm is OK

MISSING DOIs

- None

INVALID DOIs

- None
fboehm commented 4 years ago

@whedon generate pdf

whedon commented 4 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

fboehm commented 4 years ago

@jacobsoj - I see that you've omitted checking two boxes in the checklist. With the modifications that @mdsteiner has made, are you now comfortable checking the boxes? Please do check them if you're comfortable doing so. We won't proceed until you're satisfied with the community guidelines and the quality of the writing.

Thanks again!

jacobsoj commented 4 years ago

I am now comfortable checking those boxes, but it isn't letting me check them now. Is there something I need to do to allow me to edit them?

fboehm commented 4 years ago

@whedon re-invite @jacobsoj as reviewer

whedon commented 4 years ago

OK, the reviewer has been re-invited.

@jacobsoj please accept the invite by clicking this link: https://github.com/openjournals/joss-reviews/invitations

fboehm commented 4 years ago

@jacobsoj - Please click on the link above to accept the invitation. I've added you again so that you can continue to participate in the review, should there be a need. We're nearly ready to accept the submission, so there may not be anything left for you to do. We're not sure why you mistakenly lost access to the repository. Sorry for the trouble.

jacobsoj commented 4 years ago

FWIW I reclicked on the 2 boxes although you had done that for me, just in case it matters later that I did it myself.

fboehm commented 4 years ago

@whedon generate pdf

whedon commented 4 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

fboehm commented 4 years ago

@whedon generate pdf

whedon commented 4 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

fboehm commented 4 years ago

@mdsteiner - The reviewers have recommended publication of your submission. Before we can do that, I need to you to: 1. examine the article pdf proof for errors and 2. archive the package with, for example, zenodo or figshare. Please record and report the version number and archive DOI in this comments thread. Double-check that the metadata for the archived package has the same title and authors list as your JOSS manuscript. Thanks again!

mdsteiner commented 4 years ago

Thanks @fboehm! We have checked the pdf proof and everything looks fine. The package is now archived as version 0.2.0 on zenodo with the archive DOI 10.5281/zenodo.4032509

Thanks again @chainsawriot and @jacobsoj for the many helpful comments and suggestions!

fboehm commented 4 years ago

@whedon set 10.5281/zenodo.4032509 as archive

whedon commented 4 years ago

OK. 10.5281/zenodo.4032509 is the archive.

fboehm commented 4 years ago

@whedon accept

whedon commented 4 years ago
Attempting dry run of processing paper acceptance...
whedon commented 4 years ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1177/1073191119845051 is OK
- 10.1007/BF02289209 is OK
- 10.7275/jyj1-4868 is OK
- 10.1177/0095798418771807 is OK
- 10.7287/peerj.preprints.3188v1 is OK
- 10.1016/j.csda.2013.02.005 is OK
- 10.1037/met0000200 is OK
- 10.1037/met0000074 is OK
- 10.1037/a0025697 is OK
- 10.1080/00273171.2011.564527 is OK
- 10.18637/jss.v048.i02 is OK
- 10.31234/osf.io/7hwrm is OK

MISSING DOIs

- None

INVALID DOIs

- None
whedon commented 4 years ago

:wave: @openjournals/joss-eics, this paper is ready to be accepted and published.

Check final proof :point_right: https://github.com/openjournals/joss-papers/pull/1731

If the paper PDF and Crossref deposit XML look good in https://github.com/openjournals/joss-papers/pull/1731, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true
fboehm commented 4 years ago

Thank you, @mdsteiner for the archiving. Thanks to @jacobsoj and @chainsawriot for excellent work on the reviews. The submission is now recommended for acceptance. The editors in chief will make a final review.

kyleniemeyer commented 4 years ago

@whedon accept deposit=true