Kann ich die CLR (Centered Log Ratio Transformation) verwenden, um Daten für PCA vorzubereiten?

13

Ich benutze ein Skript. Es ist für Kernaufzeichnungen. Ich habe einen Datenrahmen, der die verschiedenen Elementzusammensetzungen in den Spalten über eine gegebene Tiefe (in der ersten Spalte) zeigt. Ich möchte damit eine PCA durchführen und bin verwirrt über die zu wählende Standardisierungsmethode.

Hat jemand von euch das benutzt clr(), um seine Daten für das vorzubereiten prcomp()? Oder verfälscht es meine Lösungen? Ich habe versucht, die clr()Daten vor der Verwendung der prcomp()Funktion zusätzlich zur Verwendung der Attributskala in zu verwenden 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

scale wird beschrieben, um die Daten so zu skalieren, dass sie eine Einheitsvarianz aufweisen. Da meine Daten einen ganz anderen Maßstab haben, denke ich, ist es das, was ich wollte. Das Problem ist, dass ich eine andere Lösung erhalte, wenn ich den obigen Code verwende oder wenn ich den überspringe clr()(was das gewünschte Ergebnis ergibt). Aber ich möchte wissen, warum das clr()in diesem Fall störend ist?

T-Rex
quelle
2
Für Nicht-R-Benutzer wie mich kann es hilfreich sein, zu klären, was clrpassiert ...
Dougal
3
Natürlich ändert die CLR die Lösungen - warum sonst würden Sie dieses Verfahren anwenden? Vielleicht sollten Sie sich fragen, wie Sie herausfinden können, welcher Ansatz besser ist. Durchsuchen Sie unsere Website nach CLR, um nützliche Beiträge zu finden . In einer Antwort auf eine verwandte Frage habe ich einige Illustrationen bereitgestellt, die Ihnen helfen könnten.
Whuber
1
Die schnelle Antwort ist, dass Sie mit Daten vor PCA alles tun können, was Sie wollen. Es gibt keine diesbezüglichen Erlasse, Gesetze oder Rezepte. Einige behaupten, dass PCA (ohne Rotation) skalierungsinvariant ist, während andere behaupten, dass die Ergebnisse eines PCA hochgradig skalierungsempfindlich sind. Wenn Sie jedoch die Ergebnisse von PCA drehen, schreiben die Faustregeln eine Normalisierung vor PCA vor, wie z. B. CLR oder Standardisierung auf Mittelwert = 0 und SD = 1. Eine großartige Diskussion über CLR findet sich in Lee Coopers Buch Market Share Analysis ( anderson.ucla.edu/faculty/lee.cooper/MCI_Book/BOOKI2010.pdf ), in dem es mit der Komponentenanalyse verknüpft ist.
Mike Hunter
2
@DJohnson Ich habe im PDF nach verschiedenen Wörtern in CLR und zentrierter Log-Ratio-Transformation gesucht, konnte aber nichts finden. Was habe ich falsch gemacht? In dieser Version gibt es keinen Index, aber die Abschnittsüberschriften sehen nicht vielversprechend aus und die Referenzen enthalten nicht John Aitchison, der diese Umwandlung für Kompositionsdaten vorgeschlagen hat. Seitenverweise auf Diskussionen unter diesem oder einem anderen Namen sind willkommen.
Nick Cox
1
Wie bereits erwähnt, gibt es in der von Ihnen verlinkten Version keinen Index. Verzeihen Sie mir, dass ich ihn nicht konsultiere. Vielen Dank für das Schlüsselwort "log-centering", aus dem ich Diskussionen über ein anderes Biest finde, nicht die zentrierte Transformation des Log-Verhältnisses , um die es in diesem Thread geht. @whuber hat bereits einen Link zu einer Diskussion auf dieser Seite gegeben. Der Schlüssel ist, dass für Kompositionsdaten mit Anteilen, die zu 1 addieren, Bedarf und Raum für eine kollektive Transformation in einen anderen Raum bestehen. Sie haben das Wort "Ratio" verpasst, weil es auf eine andere Idee hinweist als die, die Sie kennen.
Nick Cox

Antworten:

5

Ja, Sie können und sollten, wenn Ihre Daten kompositorisch sind.

Eine Übersicht aus dem Bereich der Mikrobiologie ist hier zu finden, die dazu motiviert, die CLR-Transformation gefolgt von PCA zur Analyse von Mikrobiom-Datensätzen (die per Definition zusammengesetzt sind) zu verwenden: https://www.frontiersin.org/articles/10.3389/fmicb .2017.02224 / full .

Archie
quelle
Leider ist dieses Papier in vielen Fällen furchtbar falsch, was schade ist, wenn man bedenkt, dass zwei Mitautoren Meister der Analyse kompositorischer Daten sind.
Eli Korvigo
@ Elikorvigo Dieser Kommentar mag begründet sein, aber für sich ist er nicht hilfreich. Wenn Sie auf eine veröffentlichte oder zumindest öffentliche Kritik hinweisen könnten, würde eine solche Kritik das Bild verändern.
Nick Cox
@ NickCox sicher, es gibt ein Papier von Filzmoser und Hron . Es ist keine direkte Kritik an dem oben genannten Artikel, spricht sich jedoch gegen die Verwendung von CLR für die Korrelationsanalyse aus, während in dem oben genannten Artikel auf CLR basierende Tools empfohlen werden.
Eli Korvigo
@NickCox Ich möchte meinen tiefen Respekt für Dr. Pawlowsky-Glahn und Dr. Egozcue betonen, die die letzten beiden Autoren des von Archie erwähnten Papers sind. Tatsächlich haben sie ILR eingeführt, um die Mängel von CLR zu beheben (Egozcue und Pawlowsky-Glahn, 2003) . In Bezug auf CLR schreiben sie: "Trotzdem werden orthogonale Referenzen in diesem Unterraum nicht auf einfache Weise erhalten" .
Eli Korvigo
Pawlowsky-Glahn und Egozcue geben in "Kompositionsdaten und ihre Analyse: eine Einführung" (2006) an, dass clr-Koeffizienten bestimmte Vorteile haben: Der Ausdruck ist in den Teilen symmetrisch und diese Koordinaten reduzieren die Berechnung von Aitchison-Abständen auf gewöhnliche Abstände nützlich bei der Berechnung von Bi-Plots (...) "
jO.
5

Es können Probleme mit Vanille-PCA bei CLR-Koordinaten auftreten. Es gibt zwei Hauptprobleme bei Zusammensetzungsdaten:

  • Sie sind absolut nicht negativ
  • Sie haben eine Summenbeschränkung

xG(x)

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

Betrachten wir das jetzt

Log(G(x))=Log(exp[1nich=1nLog(xich)])=E[Log(x)]

x^=[Log(x)-E[Log(x)]]=0

Mit anderen Worten, CLR hebt die Wertebereichsbeschränkung auf (was für einige Anwendungen gut ist), entfernt jedoch nicht die Summenbeschränkung, was zu einer singulären Kovarianzmatrix führt, die effektiv (M) ANOVA / lineare Regression / ... unterbricht und macht PCA empfindlich gegenüber Ausreißern (da eine robuste Kovarianzschätzung eine Matrix mit vollem Rang erfordert). Von allen Kompositionstransformationen befasst sich meines Wissens nur ILR mit beiden Fragen, ohne wesentliche zugrunde liegende Annahmen. Die Situation ist jedoch etwas komplizierter. Die SVD der CLR-Koordinaten gibt Ihnen eine orthogonale Basis im ILR-Raum (ILR-Koordinaten erstrecken sich über eine Hyperebene in CLR), sodass sich Ihre Varianzschätzungen nicht zwischen ILR und CLR unterscheiden (das ist natürlich offensichtlich, da sowohl ILR als auch CLR Isometrien auf der ILR sind Simplex). Es gibt jedoch Methoden zur robusten Kovarianzschätzung an ILR-Koordinaten [2].

Aktualisiere ich

Nur um zu veranschaulichen, dass CLR für Korrelations- und ortsabhängige Methoden nicht gültig ist. Nehmen wir an, wir probieren eine Community von drei linear unabhängigen normalverteilten Komponenten 100 Mal aus. Der Einfachheit halber sei angenommen, dass alle Komponenten die gleichen Erwartungen (100) und Abweichungen (100) haben:

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
   ...: )

Update II

In Anbetracht der Antworten, die ich erhalten habe, muss ich darauf hinweisen, dass ich zu keinem Zeitpunkt in meiner Antwort gesagt habe, dass PCA bei CLR-transformierten Daten nicht funktioniert. Ich habe festgestellt, dass CLR PCA auf subtile Weise aufbrechen kann, was für die Dimensionsreduktion möglicherweise nicht wichtig ist, für die explorative Datenanalyse jedoch wichtig ist. Das von @Archie zitierte Papier befasst sich mit der mikrobiellen Ökologie. In diesem Bereich der Computational Biology werden PCA oder PCoA auf verschiedenen Distanzmatrizen verwendet, um Variationsquellen in den Daten zu untersuchen. Meine Antwort sollte nur in diesem Zusammenhang betrachtet werden. Darüber hinaus wird dies im Papier selbst hervorgehoben:

... Der kompositorische Biplot [Anmerkung: Bezug nehmend auf PCA] hat mehrere Vorteile gegenüber den Hauptkoordinatendiagrammen (PCoA-Diagrammen) für die β-Diversitätsanalyse. Die erhaltenen Ergebnisse sind sehr stabil, wenn die Daten Teilmengen sind (Bian et al., 2017), was bedeutet, dass die explorative Analyse nicht nur auf die Beziehung zwischen Vorhandensein und Nichtvorhandensein in den Daten oder auf übermäßige Sparsamkeit zurückzuführen ist (Wong et al., 2016; Morton et al., 2016) al., 2017).

Gloor et al., 2017

Update III

Zusätzliche Verweise auf veröffentlichte Forschungsergebnisse (ich danke @Nick Cox für die Empfehlung, weitere Verweise hinzuzufügen):

  1. Argumente gegen die Verwendung von CLR für PCA
  2. Argumente gegen die Verwendung von CLR für korrelationsbasierte Methoden
  3. Einführung in ILR
Eli Korvigo
quelle
2
Eine singuläre Kovarianzmatrix ist für pca kein Problem!
kjetil b halvorsen
@kjetilbhalvorsen PCA per se erfordert in der Tat nicht, dass die Matrix den vollen Rang hat. Technisch gesehen führt eine singuläre Kovarianzmatrix nur zu einem oder mehreren Null-Eigenwerten. Normalerweise wenden die Leute PCA jedoch an, um die Ursachen von Varianz zu untersuchen. Hier setzt die Komposition an. Deshalb habe ich mit meinem Wortlaut sehr vorsichtig umgegangen: "... bricht PCA effektiv / ... auf viele subtile Arten".
Eli Korvigo
Sie meinen also, dass man aufgrund der Singularität nicht berechnen kann, wie viel Varianz pro Komponente erklärt wird? Ansonsten kann man noch eine PCA durchführen, um eine Dimensionsreduktion durchzuführen. Wie wirkt sich dies dann auf die ANOVA / lineare Regression aus?
Archie
1
+1, weil die Antwort sehr interessant ist. Es geht aber nicht ohne Kritik. Sie haben anscheinend (für mich dumm) nicht genau erklärt, warum es "auf subtile Weise" unangemessen ist, PCA auf kompositorischen oder clr-transformierten Daten durchzuführen (welche? Wie?). Außerdem geben Sie einen Python-Code an, aber nicht dessen Ergebnisse. Können Sie die Ergebnisse anzeigen und kommentieren? Könnten Sie zum Schluss einen Link zum Thema ILR-Transfotm hinterlassen, über den Sie lesen können?
TTNPHNS
1
@ttnphns 1) Wie ich in den Kommentaren geschrieben habe, beseitigt CLR nicht die Verzerrung von Varianzquellen, die durch das Schließen der Komposition eingeführt wird und die explorative Datenanalyse beeinflusst: Für eine robuste Kovarianzschätzung ist eine Matrix mit vollem Rang erforderlich. 2) Ich bin nicht sicher, ob ich folge, warum Sie sagen, dass es keine Ergebnisse gibt: Das ist eine interaktive Python-Sitzung mit Ein- und Ausgängen (dh Ergebnissen). 3) Ich habe eine Referenz für ILR hinzugefügt.
Eli Korvigo