Puis-je utiliser la CLR (transformation log-ratio centrée) pour préparer les données pour l'ACP?

13

J'utilise un script. C'est pour les enregistrements de base. J'ai un dataframe qui montre les différentes compositions élémentaires dans les colonnes sur une profondeur donnée (dans la première colonne). Je veux effectuer un PCA avec et je suis confus quant à la méthode de standardisation que je dois choisir.

L'un de vous a-t-il utilisé le clr()pour préparer vos données pour le prcomp()? Ou cela altère-t-il mes solutions. J'ai essayé d'utiliser le clr()sur les données avant d'utiliser la prcomp()fonction en plus d'utiliser l'échelle d'attribut dans prcomp().

data_f_clr<- clr(data_f)
data_pca <- prcomp(data_f, center = TRUE, scale. = TRUE)

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/prcomp.html

l'échelle est décrite pour mettre à l'échelle les données, de sorte qu'elles présentent une variance unitaire. Étant donné que mes données ont une échelle très différente, c'est ce que je voulais, je pense. Le problème est que je reçois une solution différente, lorsque j'utilise le code ci-dessus ou lorsque je saute le clr()(ce qui rend le résultat le plus recherché). Mais je veux savoir pourquoi est-ce clr()dérangeant dans ce cas?

T.rex
la source
2
Pour les utilisateurs non-R comme moi, il pourrait être utile de clarifier ce clrqui ...
Dougal
3
Bien sûr, le CLR change les solutions - pourquoi utiliseriez-vous cette procédure autrement? Vous devriez peut-être vous demander comment déterminer quelle approche est la meilleure. Il existe des articles utiles à trouver en recherchant CLR sur notre site . En réponse à une question connexe, j'ai fourni quelques illustrations qui pourraient vous aider.
whuber
1
La réponse rapide est que vous pouvez faire tout ce que vous voulez avec des données antérieures à l'ACP. Aucun édit, loi ou recette ne régit cela. Certains soutiennent que le PCA (sans rotation) est invariant à l'échelle tandis que d'autres soutiennent que les résultats d'un PCA sont très sensibles à l'échelle. Mais si vous faites pivoter les résultats de l'ACP, les règles générales imposent une normalisation pré-ACP comme CLR ou normalisation pour signifier = 0 et SD = 1. Une grande discussion de CLR se trouve dans le livre de Lee Cooper, Market Share Analysis ( anderson.ucla.edu/faculty/lee.cooper/MCI_Book/BOOKI2010.pdf ) le liant à l'analyse des composants.
Mike Hunter
2
@DJohnson J'ai recherché le pdf lié pour divers mots dans CLR et la transformation log-ratio centrée mais je n'ai rien trouvé. Qu'ai-je fait de mal? Il n'y a pas d'index dans cette version, mais les titres des sections ne semblent pas prometteurs et les références n'incluent pas John Aitchison qui a proposé cette transformation pour les données de composition. Les références de page aux discussions sous ce nom ou tout autre nom sont appréciées.
Nick Cox
1
Comme déjà mentionné, il n'y a pas d'index dans la version à laquelle vous avez lié, alors pardonnez-moi de ne pas le consulter. Merci pour le mot-clé "log-centrage" à partir duquel je trouve des discussions sur une autre bête, pas la transformation centrée du log-ratio , de quoi parle ce fil. @whuber a déjà donné un lien vers une discussion sur ce site. La clé est que, pour les données de composition dont les proportions s'ajoutent à 1, il existe un besoin et une marge de transformation collective vers un espace différent. Vous avez manqué le mot «ratio» comme pointant vers une idée différente de celle que vous connaissez.
Nick Cox

Réponses:

5

Oui, vous pouvez, et en fait vous devriez, lorsque vos données sont de composition.

Une revue du domaine de la microbiologie peut être trouvée ici, ce qui motive à utiliser la transformation CLR suivie par l'ACP pour analyser les jeux de données du microbiome (qui sont par définition compositionnels): https://www.frontiersin.org/articles/10.3389/fmicb .2017.02224 / complet .

Archie
la source
Malheureusement, ce document est terriblement faux dans de nombreux cas, ce qui est dommage, étant donné que deux co-auteurs sont des champions de l'analyse des données de composition.
Eli Korvigo
@EliKorvigo Ce commentaire est peut-être bien fondé mais en soi il n'est pas utile. Si vous pouviez pointer vers une critique publiée ou au moins publique, une telle critique changerait l'image.
Nick Cox
@NickCox bien sûr, il y a un article de Filzmoser et Hron . Ce n'est pas une critique directe de l'article susmentionné, mais il s'oppose à l'utilisation de CLR pour l'analyse de corrélation, tandis que l'article susmentionné recommande des outils basés sur CLR.
Eli Korvigo
@NickCox J'aimerais souligner mon profond respect pour le Dr Pawlowsky-Glahn et le Dr Egozcue, qui sont les deux derniers auteurs de l'article mentionné par Archie. En fait, ils ont introduit l'ILR pour combler les lacunes de CLR (Egozcue et Pawlowsky-Glahn, 2003) . Se référant au CLR, ils écrivent: "Néanmoins, les références orthogonales dans ce sous-espace ne sont pas obtenues de manière simple" .
Eli Korvigo
Pawlowsky-Glahn et Egozcue indiquent dans "Les données de composition et leur analyse: une introduction" (2006) que les coefficients clr "présentent certains avantages: l'expression est symétrique dans les parties et ces coordonnées réduisent le calcul des distances d'Aitchison aux distances ordinaires. Elles sont utile dans le calcul des bi-parcelles (...) "
jO.
5

Vous pouvez rencontrer des problèmes avec vanilla PCA sur les coordonnées CLR. Il y a deux problèmes majeurs avec les données de composition:

  • ils sont strictement non négatifs
  • ils ont une contrainte de somme

xG(x)

x^={log(x1G(x)),,log(xnG(x))}={log(x1)log(G(x)),,log(xn)log(G(x))}

Maintenant, considérez que

log(G(x))=log(exp[1ni=1nlog(xi)])=E[log(x)]

x^=[log(x)E[log(x)]]=0

En d'autres termes, CLR supprime la restriction de plage de valeurs (ce qui est bon pour certaines applications), mais ne supprime pas la contrainte de somme, résultant en une matrice de covariance singulière, qui casse effectivement (M) ANOVA / régression linéaire / ... et rend ACP sensible aux valeurs aberrantes (car une estimation de covariance robuste nécessite une matrice de rang complet). Pour autant que je sache, de toutes les transformations de composition, seul ILR traite les deux problèmes sans aucune hypothèse sous-jacente majeure. La situation est cependant un peu plus compliquée. Les coordonnées SVD des CLR vous donnent une base orthogonale dans l'espace ILR (les coordonnées ILR s'étendent sur un hyperplan en CLR), donc vos estimations de la variance ne différeront pas entre ILR et CLR (c'est bien sûr évident, car ILR et CLR sont des isométries sur le simplex). Il existe cependant des méthodes d'estimation de covariance robuste sur les coordonnées ILR [2].

Mettre à jour I

Juste pour illustrer que CLR n'est pas valide pour les méthodes de corrélation et de localisation. Supposons que nous échantillonnions une communauté de trois composants distribués normalement linéairement indépendants 100 fois. Par souci de simplicité, laissez tous les composants ont des attentes (100) et des variances (100) égales:

In [1]: import numpy as np

In [2]: from scipy.stats import linregress

In [3]: from scipy.stats.mstats import gmean

In [4]: def clr(x):
   ...:     return np.log(x) - np.log(gmean(x))
   ...: 

In [5]: nsamples = 100

In [6]: samples = np.random.multivariate_normal(
   ...:     mean=[100]*3, cov=np.eye(3)*100, size=nsamples
   ...: ).T

In [7]: transformed = clr(samples)

In [8]: np.corrcoef(transformed)
Out[8]: 
array([[ 1.        , -0.59365113, -0.49087714],
       [-0.59365113,  1.        , -0.40968767],
       [-0.49087714, -0.40968767,  1.        ]])

In [9]: linregress(transformed[0], transformed[1])
Out[9]: LinregressResult(
   ...:     slope=-0.5670, intercept=-0.0027, rvalue=-0.5936, 
   ...:     pvalue=7.5398e-11, stderr=0.0776
   ...: )

Mise à jour II

Compte tenu des réponses que j'ai reçues, je trouve nécessaire de souligner qu'à aucun moment dans ma réponse, je n'ai dit que PCA ne fonctionne pas sur les données transformées par CLR. J'ai déclaré que le CLR peut briser l'ACP de manière subtile , ce qui peut ne pas être important pour la réduction de la dimensionnalité, mais est important pour l'analyse des données exploratoires. L'article cité par @Archie couvre l'écologie microbienne. Dans ce domaine de la biologie computationnelle, l'ACP ou l'APCo sur diverses matrices de distance est utilisée pour explorer les sources de variation des données. Ma réponse ne doit être considérée que dans ce contexte. En outre, cela est souligné dans le document lui-même:

... Le biplot de composition [note: se référant à l'ACP] présente plusieurs avantages par rapport aux graphiques en coordonnées principales (PCoA) pour l'analyse de la diversité β. Les résultats obtenus sont très stables lorsque les données sont en sous-ensemble (Bian et al., 2017), ce qui signifie que l'analyse exploratoire n'est pas simplement motivée par les relations de présence-absence dans les données ni par la rareté excessive (Wong et al., 2016; Morton et al., 2017).

Gloor et al., 2017

Mise à jour III

Références supplémentaires aux recherches publiées (je remercie @Nick Cox pour la recommandation d'ajouter plus de références):

  1. Arguments contre l'utilisation de CLR pour PCA
  2. Arguments contre l'utilisation de CLR pour les méthodes basées sur la corrélation
  3. Introduction à l'ILR
Eli Korvigo
la source
2
Une matrice de covariance singulière n'est pas un problème pour pca!
kjetil b halvorsen
@kjetilbhalvorsen en effet, PCA en soi ne nécessite pas que la matrice soit de rang complet. Techniquement parlant, une matrice de covariance singulière n'aboutira qu'à une ou plusieurs valeurs propres nulles. Pourtant, les gens appliquent généralement l'APC pour explorer les sources de variance, c'est là que la compositionnalité entre en jeu. C'est pourquoi j'ai été plutôt prudent avec ma formulation: "... brise efficacement l'APC / ... de nombreuses manières subtiles "
Eli Korvigo
Donc, vous voulez dire qu'en raison de la singularité, on ne peut pas calculer la quantité de variance qui est expliquée par composant? Autre que cela, on peut toujours effectuer l'ACP pour effectuer une réduction de dimensionnalité. Comment cela affecte-t-il alors l'ANOVA / la régression linéaire?
Archie
1
+1 car la réponse est très intéressante. Mais cela ne va pas sans critique. Apparemment (pour moi stupide), vous n'avez pas expliqué précisément pourquoi faire de l'ACP sur des données de composition ou transformées en clr est incorrect "de manière subtile" (qui? Comment?). De plus, vous donnez un code python mais pas ses résultats. Pouvez-vous afficher et commenter ses résultats? Enfin, pourriez-vous laisser un lien sur le transfert ILR, pour en savoir plus?
ttnphns
1
@ttnphns 1) comme je l'ai écrit dans les commentaires, CLR ne supprime pas la distorsion des sources de variance introduite par la fermeture de la composition, affectant l'analyse exploratoire des données: une estimation robuste de la covariance nécessite une matrice de rang complet; 2) Je ne suis pas sûr de suivre, pourquoi vous dites qu'il n'y a pas de résultats: c'est une session Python interactive avec des entrées et des sorties (c'est-à-dire des résultats); 3) J'ai ajouté une référence pour ILR.
Eli Korvigo