Ho 10 anni di dati sui rendimenti giornalieri per 28 valute diverse. Desidero estrarre il primo componente principale, ma piuttosto che far funzionare PCA per tutti i 10 anni, desidero aprire nuovamente una finestra di 2 anni, perché i comportamenti delle valute si evolvono e quindi desidero riflettere questo. Tuttavia ho un grosso problema, cioè che entrambe le funzioni princomp () e prcomp () passano spesso da caricamenti positivi a negativi nelle analisi adiacenti PCA (cioè a 1 giorno di distanza). Dai un'occhiata alla tabella di caricamento per la valuta EUR:

Chiaramente non posso usarlo perché i caricamenti adiacenti passeranno da positivo a negativo, quindi la mia serie che li utilizza sarà errata. Ora dai un'occhiata al valore assoluto del caricamento della valuta in EUR:

Il problema è ovviamente che non riesco ancora a usarlo perché puoi vedere dal grafico in alto che il caricamento va da negativo a positivo e viceversa, una caratteristica che devo preservare.
Esiste un modo per aggirare questo problema? Posso forzare l'orientamento degli autovettori ad essere sempre lo stesso nei PCA adiacenti?
A proposito, questo problema si verifica anche con la funzione FactoMineR PCA (). Il codice per il rollapply è qui:
rollapply(retmat, windowl, function(x) summary(princomp(x))$loadings[, 1], by.column = FALSE, align = "right") -> princomproll
EUR -0.2 ZAR +0.8 USD +0.41e EUR +0.21 ZAR -0.79 USD -0.4 sono molto simili. Basta invertire l'accesso in uno dei due risultati.

