Zum Lernen von PCA in R, habe ich princomp() -Funktion (aus MASS-Paket) auf Iris-Datensatz ausgeführt. Ich habe folgende Schritte folgen:Berechnung neuer Variablen von Hauptkomponenten - PCA in R
library(MASS)
irispca<-princomp(iris[-5])
summary(irispca)
irispca$loadings
Um Hauptkomponenten zu berechnen, habe ich Ausgang Beladungen auf diese Weise verwendet:
iris_temp2 <- iris
iris_temp2$Comp.1 <- with(iris_temp2,Sepal.Length*0.361+Petal.Length*0.857+Petal.Width*0.358)
iris_temp2$Comp.2 <- with(iris_temp2,Sepal.Length*(-0.657)+Sepal.Width*(-0.73)+Petal.Length*0.173)
iris_temp2$Comp.3 <- with(iris_temp2,Sepal.Length*(-0.582)+Sepal.Width*0.598+Petal.Width*0.546)
iris_temp2$Comp.4 <- with(iris_temp2,Sepal.Length*0.315+Sepal.Width*(-0.32)+Petal.Length*(-0.48)+Petal.Width*0.754)
iris_temp2 <- with(iris_temp2, iris_temp2[order(Comp.1,Comp.2,Comp.3,Comp.4),])
Endlich I den Datensatz sortiert. Ich habe auch erfahren, dass Scores dasselbe oben genannte Ding ergibt, d. H. Scores werden berechnet, indem skalierte Daten (auf denen Sie PCA ausführen) mit Ladungen multipliziert werden. Daher dachte ich über den Vergleich der Ausgabe von Noten und Ausgabe von iris_temp2 (mit vier Komponenten) nach.
iris_temp1 <- as.data.frame(irispca$scores)
iris_temp1 <- with(iris_temp1, iris_temp1[order(Comp.1,Comp.2,Comp.3,Comp.4),])
Jedoch wenn ich tun Kopf (iris_temp1) und Kopf (iris_temp2 [, 6: 9]), werden die Ausgaben nicht übereinstimmen.
Ich möchte Sie bitten, den Grund für diese Beobachtung aufzuzeigen. Gibt es etwas, was ich falsch verstanden habe? Wenn Sie weitere Informationen von mir benötigen, lassen Sie es mich bitte wissen.
Referenzmaterialien, die ich verwendet habe, sind: http://yatani.jp/teaching/doku.php?id=hcistats:pca und https://www.youtube.com/watch?v=I5GxNzKLIoU&spfreload=5.
Dank Shankar
I don‘ Ich verstehe, warum Sie versuchen, Principal Components, die Ihnen bereits von 'princomp()' übergeben wurden, manuell neu zu berechnen. – mtoto
Vielen Dank für Ihre Antwort. Ich denke, ähnliche Namen schaffen hier Verwirrung. Hier ist Comp.1 nichts anderes als eine neue Variable, die im Dataset iris_temp2 mit Ladungen erzeugt wird. In diesem Fall werden die lispca $ loadings die erforderlichen Ladungen ausgeben, dh Ladungen: Comp.1 Comp.2 Comp.3 Comp.4 Sepal.Length 0.361 -0.657 -0.583 0.315 Sepal.Width -0.730 0,598 -0,320 Petal. Länge 0.857 0.173 -0.480 Petal.Width 0.358 0.546 0.754 – skumar
Wie es jetzt klar wäre, sind beide Comp.1 verschieden. Hoffe das hilft. Bitte lassen Sie mich wissen, wenn Sie noch Fragen haben. – skumar