|
|
Statistics Toolbox - Ergebnisse mit PCA und SVD variieren |
|
mats |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 16.10.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.10.2014, 10:32
Titel: Statistics Toolbox - Ergebnisse mit PCA und SVD variieren
|
|
|
|
|
Hallo Forumsgesellschaft,
ich komme zu euch, da ich bei einer Datenanalyse auf einen Unterschied gestossen bin, den ich nicht erwartet habe und mir nicht erklären kann. Ich hoffe ihr könnt mir weiterhelfen. Und zwar verwendet die pca- bzw. princomp-Funktion der Statistiktoolbox die Singulärwertzerlegung um die score-values als Projektion der Daten auf die jeweiligen principal components zu berechnen und ebenso die Korrelationskoeffizienten auszugeben. Die selben Informationen sollten mit der svd-Funktion erhalten werden können. Um es zu verdeutlichen hier ein einfaches Beispiel:
time=0.001:0.001:1;
signals(:,1)=sin(2*pi*time);
signals(:,2)=-sin(2*pi*time);
signals(:,3)=cos(2*pi*time);
signals(:,4)=randn(size(time));
[U,S,V]=svd(signals);
[coeff,score,latent]=pca(signals);
So wie ich die Theorie verstanden habe, sollten nun die coeff der pca mit V aus der svd uebereinstimmen. Ebenso sollten latent und diag(S) Information ueber die von den Moden erklärte Varianz des Eingangssignals enthalten. Ich erhalte jedoch folgendes:
coeff =
0.5059 -0.4940 0.0038 0.7071
-0.5059 0.4940 -0.0038 0.7071
0.0322 0.0408 0.9986 0.0000
0.6979 0.7144 -0.0517 0.0000
V =
-0.5027 0.4972 0.0038 0.7071
0.5027 -0.4972 -0.0038 0.7071
-0.0324 -0.0404 0.9987 0.0000
-0.7025 -0.7098 -0.0516 0.0000
latent/sum(latent) =
0.4211
0.3791
0.1998
0.0000
diag(S)/sum(diag(S)) =
0.3792
0.3598
0.2611
0.0000
Worin liegt der Unterschied, was macht die pca-Funktion ausser eine svd anzuwenden?
Ich hoffe ich habe mich verständlich ausgedrueckt und freue mich ueber jede Anregung und Hilfe! Vielen Dank, Mats
|
|
|
|
|
mats |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 16.10.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.10.2014, 12:30
Titel:
|
|
|
|
|
okay, teilweise kann ich es mir nun selber erklären. Zum einen habe ich herausgefunden, dass die pca die daten eigenständig centered, dass heisst den mittelwert abzieht, was nur eine svd natuerlich nicht tut. ziehe ich denn mittelwert von den daten ab bevor ich die svd starte, so bekomme ich betraglich die selben Eigenvectoren in V wie die coeffs der pca. Allerdings sind die vorzeichen immernoch verdreht. Woran liegt das? Bzw. was bedeutet das?
Ausserdem habe ich herausgefunden, dass die einträge in latent nur die varianz der dazugehörigen spalten der score-matrix beinhalten und nicht die wurzel der eigenwerte wie sie in diag(S) enthalten sind.
Aber was sind denn dann die einträge in diag(S)? Ich habe oft gelesen, dass diese ein mass fuer die gesamtenergie der jeweiligen komponente sind. bisher dachte ich immer, dass das gleichbedeutend ist mit dem anteil an varianz, denn diese komponente ausmacht. aber dann wären die werte von latent und diag(S) ja gleich. Kann mir nur vielleicht jemand auf die Spruenge helfen?
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|