Positionieren der Pfeile auf einem PCA-Biplot

18

Ich möchte einen Biplot für die Hauptkomponentenanalyse (PCA) in JavaScript implementieren. Meine Frage ist, wie ermittle ich die Koordinaten der Pfeile aus dem U,V,D Ausgang der Singular Vector Decomposition (SVD) der Datenmatrix?

Hier ist ein Beispiel-Biplot von R:

biplot(prcomp(iris[,1:4]))

Biplot des Iris-Datensatzes

Ich habe versucht, es im Wikipedia-Artikel über Biplot nachzuschlagen, aber es ist nicht sehr nützlich. Oder richtig. Ich weiß nicht was.

ktdrv
quelle
3
Biplot ist ein Overlay-Streudiagramm, das sowohl U-Werte als auch V-Werte zeigt. Oder UD und V. Oder U und VD '. Oder UD und VD '. In Bezug auf PCA werden UD als rohe Hauptkomponentenbewertungen und VD 'als Ladungen mit variablen Komponenten bezeichnet.
TTNPHNS
2
Beachten Sie auch, dass der Maßstab der Koordinaten davon abhängt, wie Sie die Daten anfänglich normalisieren. In PCA beispielsweise teilt man die Daten normalerweise durch sqrt (r) oder sqrt (r-1) [r ist die Anzahl der Zeilen]. Aber im wahren "Biplot" im engeren Sinne des Wortes teilt man normalerweise die Daten durch sqrt (rc) [c ist die Anzahl der Spalten] und
demormalisiert
Warum müssen die Daten um 1 skaliert werden? ? 1n1
ktdrv
1
@ttnphns: Nach Ihren obigen Kommentaren habe ich eine Antwort auf diese Frage geschrieben, um so etwas wie einen Überblick über PCA-Biplot-Normalisierungen zu geben. Mein Wissen über dieses Thema ist jedoch rein theoretisch und ich glaube, dass Sie viel mehr praktische Erfahrung mit Biplots haben als ich. Daher wäre ich für jeden Kommentar dankbar.
Amöbe sagt Reinstate Monica
1
Ein Grund für die Implementierung von @Aleksandr ist, genau zu wissen, was gerade getan wird. Wie Sie sehen, ist es nicht so einfach herauszufinden, was genau passiert, wenn man läuft biplot(). Warum sollten Sie sich mit der R-JS-Integration für etwas beschäftigen, das nur ein paar Codezeilen erfordert?
Amöbe sagt Reinstate Monica

Antworten:

40

Es gibt viele verschiedene Möglichkeiten, einen PCA-Biplot zu erstellen. Daher gibt es keine eindeutige Antwort auf Ihre Frage. Hier ist eine kurze Übersicht.

Wir gehen davon aus, dass die Datenmatrix hat n Datenpunkte in Reihen und zentriert ist (dh Spalte Mittel sind alle null). Vorerst können wir nicht davon ausgehen , dass es standardisiert, dh wir betrachten PCA auf Kovarianzmatrix (nicht auf Korrelationsmatrix). PCA entspricht einer Singulärwertzerlegung X = U S VXn meine Antwort finden Sie hier für Details:Beziehung zwischen SVD und PCA. Wie verwende ich SVD, um PCA durchzuführen?

X=USV,

In einem PCA-Biplot sind zwei erste Hauptkomponenten als Streudiagramm aufgetragen, dh die erste Spalte von ist gegen die zweite Spalte aufgetragen. Normalisierung kann aber auch anders sein; zB kann man benutzen:U

  1. Spalten von : Dies sind Hauptkomponenten, die auf die Einheitssumme der Quadrate skaliert sind.U
  2. Spalten von : Dies sind standardisierte Hauptkomponenten (Einheitsvarianz);n-1U
  3. Spalten von : das sind „raw“ Hauptkomponenten (Projektionen auf Hauptrichtungen).US

Ferner sind Originalvariablen als Pfeile dargestellt; dh Koordinaten eines i- ten Pfeilendpunkts werden durch den i- ten Wert in der ersten und zweiten Spalte von gegeben(x,y)ichich . Aber auch hier kann man verschiedene Normalisierungen wählen, zB:V

  1. Spalten von : Ich weiß nicht, was eine Interpretation hier sein könnte;VS
  2. Spalten von : das sind Ladungen;VS/n-1
  3. Spalten von : Dies sind Hauptachsen (aka Hauptrichtungen, aka Eigenvektoren).V

So sieht das alles für den Fisher Iris-Datensatz aus:

Fisher Iris Biplots, PCA auf Kovarianz

9XUSαβVS(1-α)/β9 sind "richtige Biplots": nämlich eine Kombination eines Unterplots von oben mit dem direkt darunter.

[Unabhängig von der verwendeten Kombination kann es erforderlich sein, die Pfeile mit einem beliebigen konstanten Faktor zu skalieren, sodass sowohl die Pfeile als auch die Datenpunkte ungefähr auf derselben Skala angezeigt werden.]

VS/n1Un1

Diese [besondere Wahl] dürfte eine äußerst nützliche grafische Hilfe bei der Interpretation multivariater Beobachtungsmatrizen darstellen, vorausgesetzt natürlich, dass diese auf Rang zwei angemessen angenähert werden können.

USV .

US Visualisierung einer Million, PCA-Ausgabe - es zeigt PCA des Wein-Datensatzes.

biplotUVSbiplot0.8biplotn/(n1)1Pfeile der zugrunde liegenden Variablen im PCA-Biplot in R. )

PCA auf Korrelationsmatrix

X1

Fisher Iris biplots, PCA on correlations

1R=1


Weitere Lektüre:

Amöbe sagt Reinstate Monica
quelle
1
+6, das verdient mehr als 3 Upvotes.
gung - Reinstate Monica
3
Gerade bemerkt, dass? Ca :: plot.ca einen schönen Überblick über verschiedene mögliche Normalisierungen hat: Sie unterscheiden Zeilenprinzipal (Form Biplot = Zeilen in Hauptkoordinaten, Spalten in Standardkoordinaten), Col Principal (Kovarianz Biplot = Spalten in Hauptkoordinaten, Zeilen in Standardkoordinaten), symmetrisches Biplot (Zeilen und Spalten skaliert, um Varianzen zu haben, die den Singularwerten (Quadratwurzeln von Eigenwerten) entsprechen), Rowgab und Colgab (Zeilen in Hauptkoordinaten und Spalten in Standardkoordinaten multipliziert mit der Masse des entsprechenden Punktes oder umgekehrt) und rowgreen und colgreen (wie rowgab und colgab, aber mit sqrt (
massen
2
Diese letzten werden auch "Beitrags-Biplots" genannt. Einen schönen Überblick darüber gibt auch das Buch von M. Greenacre "Biplots in practice"; Diese Skalierungsmethoden gelten für alle auf der SVD basierenden Methoden (dh CA-Biplots, PCA-Biplots, LDA-Biplots usw.). Für ein Beispiel, wie es funktioniert, siehe den Quellcode ca ::: plot.ca und das Argument "map"
Tom Wenseleers
1
n1
1
@AntoniParellada habe ich bearbeitet und ein paar Links eingefügt.
Amöbe sagt Reinstate Monica