ILR transformation with different basis

Hi everyone,

I am working with microbial data, so I have tested the clr and ilr transformation to transform the values and work correctly. When I use CLR I have not had problems with SPLSDA and SPLS.

However, when I transform with ILR (which is an orthogonal transformation) for which I must use an orthogonal base, I obtain different results from SPLSDA when I use different orthogonal bases to perform the transformation. The main problem of the ILR transformation is the interpretation of the results, for which I perform, after obtaining the results expressed in balances, a back-transformation to obtain the results expressed in OTUs.

When I do this, I get that when I use different orthogonal bases to obtain the ILR, then the back-transformed results are different when they should be the same no matter what orthogonal base you use. Therefore, my question is focused on understanding why I have different results.

Is there any process in SPLSDA that generates different results? Do I have any distortion of the results because of the randomness of SPLSDA? How does the selection of variables and components affect the result of the SPLSDA when I use the IIR?


V1=ilrBase(D=9,method = “balanced”)



loadings.invilr1=ilrInv(t(loadings.ilr1), V = V1)

V2=ilrBase(D=9,method = “basic”)



loadings.invilr2=ilrInv(t(loadings.ilr2), V = V2)

loadings.invilr1 is different the order and value of the OTUs more associated with components than in loadings.invilr2


hi @GMB,
Based on your pseudo code you use different ILR bases, so the input data are different. Are you expecting the results to be the same despite the base and back transform?
sPLS-DA algorithm usually converges very fast, and so there is no ‘randomness’ in the results. I suspect any different you observe comes from:

  • the input ILR data
  • the back transform ILR
    I would not say it is from sPLS-DA.