Welche Variablen erklären welche PCA-Komponenten und umgekehrt?

14

Verwendung dieser Daten:

head(USArrests)
nrow(USArrests)

Ich kann eine PCA wie folgt durchführen:

plot(USArrests)
otherPCA <- princomp(USArrests)

Ich kann die neuen Komponenten bekommen

otherPCA$scores

und der Anteil der Varianz erklärt durch Komponenten mit

summary(otherPCA)

Aber was ist, wenn ich wissen möchte, welche Variablen hauptsächlich durch welche Hauptkomponenten erklärt werden? Und umgekehrt: Wird zB PC1 oder PC2 meistens durch erklärt murder? Wie kann ich das machen?

Kann ich zum Beispiel sagen, dass PC1 zu 80% von murderoder erklärt wird assault?

Ich denke, die Ladungen helfen mir hier, aber sie zeigen die Richtwirkung und nicht die erklärte Varianz, wie ich sie verstehe, z

otherPCA$loadings

Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
Murder                         0.995
Assault  -0.995                     
UrbanPop        -0.977 -0.201       
Rape            -0.201  0.974   
user1320502
quelle
2
Beachten Sie, dass die Vorzeichen der Ladungen beliebig sind. Die drei Verbrechensvariablen sind alle positiv miteinander korreliert, aber es wäre klug, dies anhand der Zeichen der obigen Ladungen zu berechnen.
Nick Cox
Leider glaube ich, dass die akzeptierte Antwort auf diese Frage falsch ist. Ich habe meine eigene Antwort unten gepostet.
Amöbe sagt Reinstate Monica

Antworten:

10

Sie haben recht, die Ladungen können Ihnen hier weiterhelfen. Sie können verwendet werden, um die Korrelation zwischen den Variablen und den Hauptkomponenten zu berechnen. Darüber hinaus ist die Summe der quadrierten Belastungen einer Variablen über alle Hauptkomponenten gleich 1. Die quadrierten Belastungen geben daher den Anteil der Varianz einer Variablen an, der durch eine Hauptkomponente erklärt wird.

Das Problem bei princomp ist, dass nur die "sehr hohen" Ladungen angezeigt werden. Da die Ladungen aber nur die Eigenvektoren der Kovarianzmatrix sind, kann man alle Ladungen mit dem eigenBefehl in R erhalten:

 loadings <- eigen(cov(USArrests))$vectors
 explvar <- loadings^2

Nun haben Sie die gewünschten Informationen in der Matrix explvar.

zufälliger Typ
quelle
danke, zufälliger Typ, könntest du es mir zum Beispiel zeigen, assaultoder urban popkönnten wir das tun? teilweise verwirrt, weil in der Matrix nur eine Korrelation fürassault
user1320502 18.02.14
1
Entschuldigung, ich habe meine Antwort verbessert und habe nicht bemerkt, dass Sie meinen Beitrag bereits kommentiert haben. Angriffslasten mit -0,995 auf PC1. Somit kann man nach Quadrieren dieses Wertes schließen, dass PC1 99% der Varianz des variablen Angriffs erklärt. Nachdem Sie die Werte von Urban Pop quadriert haben, können Sie schließen, dass PC3 4% und PC2 95,5% der Varianz von Urban Pop erklärt.
random_guy
1
Fragt OP nicht, wie viel der PCA einer Variablen zugeordnet werden kann? Bei Ihrer Antwort geht es darum, wie viel von einer Variablen durch eine CPA erklärt werden kann
Heisenberg,
2
Wenn ich auf diese Frage zurückkehre, denke ich, dass diese Antwort falsch ist. Betrachten Sie 10 Variablen, die stark (99%) miteinander korreliert sind und alle auf die Einheitsvarianz skaliert sind. Der erste PC wird im Grunde der Durchschnitt zwischen ihnen sein. So ist der erste Eigenvektor sein wird mit einer Länge von 1 , und dem ersten Eigenwerte ist fast 10 , sagen 9.9 . Jetzt wird jede Variable vom ersten PC fast vollständig erklärt. Und der erste PC wird von jeder Variablen fast vollständig erklärt . Aber wie wollen Sie den einen oder anderen Schluss aus den quadrierten Elementen von ziehen?w=(0.3,0.3,...0.3)1109.9 was sind alle 0,1 ? w0.1
Amöbe sagt Reinstate Monica
2
Tut mir leid darauf zu bestehen, aber denkst du, ich liege in meinem obigen Kommentar falsch? Wenn nicht, können Sie Ihre Antwort bearbeiten, um die mögliche Verwirrung zu beseitigen. Dies ist für zukünftige Leser sehr hilfreich. Ich habe gerade selbst eine Antwort gepostet und versucht, diese Probleme detaillierter zu erklären.
Amöbe sagt Reinstate Monica
9

Ich denke, dass die akzeptierte Antwort gefährlich irreführend sein kann (-1). Im OP sind mindestens vier verschiedene Fragen vermischt. Ich werde sie nacheinander betrachten.


  • Q1. Wie viel von der Varianz eines bestimmten PCs erklärt eine bestimmte ursprüngliche Variable? Wie viel von der Varianz einer bestimmten Originalvariablen erklärt ein bestimmter PC?

Diese beiden Fragen sind äquivalent und die Antwort wird durch das Quadrat des Korrelationskoeffizienten zwischen der Variablen und dem PC gegeben. Wenn PCA für die Korrelationen durchgeführt wird, wird der Korrelationskoeffizient r durch das entsprechende Element der Belastungen angegeben ( siehe hier ) . PC i ist einem Eigenvektor V i der Korrelationsmatrix und dem entsprechenden Eigenwert s i zugeordnet . Ein Ladungsvektorr2riVisi ist gegeben durch L i =( s i ) 1 / 2 V iLiLi=(si)1/2Vi. Seine Elemente sind Korrelationen dieses PCs mit den jeweiligen Originalvariablen.

Es ist zu beachten, dass die Eigenvektoren und die Ladungen L i zwei verschiedene Dinge sind! In R werden Eigenvektoren verwirrenderweise "Ladungen" genannt; man sollte aufpassen: ihre elemente sind nicht die gewünschten korrelationen. [Die derzeit akzeptierte Antwort in diesem Thread verwechselt die beiden.]ViLi

Wenn PCA für Kovarianzen (und nicht für Korrelationen) durchgeführt wird, erhalten Sie beim Laden auch Kovarianzen und keine Korrelationen. Um Korrelationen zu erhalten, müssen sie manuell nach PCA berechnet werden. [Die derzeit akzeptierte Antwort ist darüber unklar.]

  • 80%

r2R2

r2R2

  • 80%

r=0.9r=0.9r2R2=0.90.95>1R2

@FrankHarrell (+1) schlug vor, wie eine Untergruppe ausgewählt werden soll, um die Abweichung zu erklären.

Amöbe sagt Reinstate Monica
quelle
+1, dies sollte die akzeptierte Antwort sein.
Gented
8

R2Y.

Frank Harrell
quelle
6

Die mit R gebündelten US-Verhaftungsdaten sind hier nur ein Beispiel, aber ich stelle fest, dass die in Frage kommenden Belastungsberechnungen von einer PCA der Kovarianzmatrix stammen . Das liegt irgendwo zwischen willkürlich und unsinnig, da die Variablen auf verschiedenen Skalen gemessen werden.

Die Stadtbevölkerung sieht aus wie ein Prozent. Kalifornien ist 91% und am höchsten.

Die drei Variablen für Straftaten scheinen die Anzahl der Festnahmen für Straftaten zu sein, die im Verhältnis zur Bevölkerungszahl (vermutlich für einen bestimmten Zeitraum) ausgedrückt werden. Vermutlich ist irgendwo dokumentiert, ob es sich um Festnahmen pro 1000 oder 10000 oder was auch immer handelt.

Der Mittelwert der Angriffsvariablen in den angegebenen Einheiten liegt bei 171 und der Mittelwert des Mordes bei 8. Die Erklärung Ihrer Ladungen lautet also, dass das Muster zu einem großen Teil ein Artefakt ist: Es hängt von der sehr unterschiedlichen Variabilität der Variablen ab.

Obwohl es in den Daten Sinn macht, dass es viel mehr Festnahmen für Angriffe als für Morde usw. gibt, dominiert diese bekannte (oder nicht überraschende) Tatsache die Analyse.

Dies zeigt, dass Sie wie überall in der Statistik darüber nachdenken müssen, was Sie in einem PCA tun.

Wenn Sie weiter gehen:

  1. Ich würde argumentieren, dass Prozent der Stadtbewohner in der Analyse besser weggelassen werden. Es ist kein Verbrechen, urban zu sein. es könnte natürlich als Proxy für kriminalitätsbeeinflussende Variablen dienen.

  2. Eine auf einer Korrelationsmatrix basierende PCA wäre aus meiner Sicht sinnvoller. Eine andere Möglichkeit besteht darin, mit Logarithmen der Verhaftungsraten zu arbeiten, nicht mit Verhaftungsraten (alle Werte sind positiv; siehe unten).

Hinweis: Bei der Antwort von @ random_guy wird bewusst die Kovarianzmatrix verwendet.

Hier sind einige zusammenfassende Statistiken. Ich habe Stata benutzt, aber das ist ziemlich unwichtig.

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
   urban_pop |        50       65.54    14.47476         32         91
      murder |        50       7.788     4.35551         .8       17.4
        rape |        50      21.232    9.366384        7.3         46
     assault |        50      170.76    83.33766         45        337
Nick Cox
quelle