Ich habe 10 Jahre tägliche Rückgabedaten für 28 verschiedene Währungen. Ich möchte die erste Hauptkomponente extrahieren, aber anstatt PCA für die gesamten 10 Jahre zu betreiben, möchte ich ein 2-Jahres-Zeitfenster einhalten, da sich das Verhalten der Währungen verändert und ich dies reflektieren möchte. Ich habe jedoch ein großes Problem: Sowohl die Funktionen princomp () als auch prcomp () springen in benachbarten PCA-Analysen häufig von positiven zu negativen Belastungen (dh im Abstand von einem Tag). Schauen Sie sich die Ladetabelle für die EUR-Währung an:
Dies kann ich natürlich nicht verwenden, da benachbarte Ladungen von positiv nach negativ springen und meine Serien, in denen sie verwendet werden, fehlerhaft sind. Schauen Sie sich nun den absoluten Wert der EUR-Währungsbelastung an:
Das Problem ist natürlich, dass ich dies immer noch nicht verwenden kann, da Sie aus der oberen Tabelle ersehen können, dass die Belastung manchmal von negativ nach positiv und zurück geht, eine Eigenschaft, die ich bewahren muss.
Kann ich dieses Problem irgendwie umgehen? Kann ich erzwingen, dass die Eigenvektororientierung in benachbarten PCAs immer gleich ist?
Dieses Problem tritt übrigens auch bei der Funktion FactoMineR PCA () auf. Der Code für die App ist hier:
rollapply(retmat, windowl, function(x) summary(princomp(x))$loadings[, 1], by.column = FALSE, align = "right") -> princomproll
EUR -0.2 ZAR +0.8 USD +0.41
und EUR +0.21 ZAR -0.79 USD -0.4
sind sehr sehr ähnlich. Sie kehren einfach das Vorzeichen in einem der beiden Ergebnisse um.