-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix to na.rm in decostand methods alr/clr #667
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think now works as expected. See the comments.
Great, fixed the remarks. |
This PR implements updated versions for:
This PR is now updated with the following:
One major point that I wanted to check before giving the very final touch on this PR: can we export the new function OptSpace? This is not only used to calculate the robust.aitchison distance in vegdist but it is also more widely applicable and this would make the methods directly comparable with their equivalents in Python/gemelli, supporting cross-testing etc. The OptSpace function is used for matrix completion after the rclr transformation. The rclr transformation usually results in some NA values in the transformed matrix, and the matrix completion is commonly done separately, after this step. The reason for separating the rclr transformation and the matrix completion is that the matrix completion returns other (SVD-related) outputs that are useful in further downstream analyses (e.g. robust Aitchison distance, robust PCA). The new OptSpace function is a modified version of ROptSpace::OptSpace function, with modifications to better fit ecological data and the parallel Python implementations. The original ROptSpace implementation has MIT license and we have cited it properly here. MIT license is compatible with the GPL2 license of vegan and can be included this way. So I would like to confirm if it is OK to export the OptSpace function? If OK, I can make the final checks - otherwise I would hide or remove it before declaring the PR complete. |
Some minor updates added. This PR accommodates all previous feedback. It is ready and preliminary tests against the Python/Gemelli implementation have been done and the results are aligned. If possible, we hope to keep |
This fixes #661
The
na.rm
option has been enabled in decostand methods "alr" and "clr".Some notes:
"clr": With
na.rm=TRUE
, the NA entries in original data are replaced by 0 in the clr-transformed data; here zero is an arbitrary choice but no better solutions are available afaik, and the same approach is used incompositions::clr
so at least we are in sync. Withna.rm=FALSE
, the entries that are NA in the original data will be also NAs in the clr-transformed data; the NAs are otherwise ignored in the calculations during the transformation. In the alternative implementation,compositions::alr
NAs are always replaced with 0 (no na.rm option available). As far as I can see it is feasible to provide both options forna.rm
for the "clr" method, we are providing that now."alr": similarly done for decostand "alr" transformation, user can choose whether to keep the NAs (
na.rm=FALSE
) or replace them by 0 (na.rm=TRUE
). In comparison, I noticed that in the alternative implementation,compositions::alr
NAs are always kept as NAs (no na.rm option available). As far as I can see it is feasible to provide both options forna.rm
for the "alr" method, we are providing that now.The "rclr" method will be handled separately in Matrix completion for robust CLR in decostand #619
@TuomasBorman can you test and confirm that these are as you expected?