How does mixOmics inherently address "sign ambiguity" or "sign flipping" in sPLS?

Greetings,

I have spent some time looking through mixOmics’s source code to understand how it addresses and handles sign ambiguity when running the function spls. That is, as it attempts to maximize the covariance between two matrices, X and Y, the loadings can be affected in such a way that the resulting correlation between the two scores of X and Y is a positive correlation (I appologize if my terminology or understanding is not great).

In a customly made pipeline, where I am running a repeated double-split k-fold cross-validated sPLS (essentially, a 10 fold CV with 8 folds for training, 1 fold for tuning, and 1 fold for testing), I am trying to figure out when this happens within the training, or at least how mixOmics’s sPLS handles this, as I am using the training loadings to create scores and correlations externally to the algorithm for the left-out tuning and testing folds.

This can potentially lead to instable (or flipped) loadings outside of mixOmics’s sPLS algorithm, unless it can be tracked.

I hope this post makes sense - otherwise, please ask for further clarification to address this topic.

Best,
Michael

Hi @mwiddowson,

Thank you for your question. I can only think of one way to ‘reflip’ the signs would be to calculate the correlation across the loadings, or the components from different folds (same dimension), and stick to one sign (say, positive). Then flip the sign for the loading / component affected.

I have a vague memory that this is something we have done in the code somewhere for a particular example (I think the biplot, for the components), we can have a further look into this to confirm with @evahamrud.

Kim-Anh