Tengo 10 años de datos de rendimientos diarios para 28 divisas diferentes. Quiero extraer el primer componente principal, pero en lugar de aplicar el ACP a los 10 años completos, quiero aplicar una ventana de 2 años, porque el comportamiento de las divisas evoluciona y quiero reflejarlo. Sin embargo, tengo un problema importante, y es que tanto el princomp()
y prcomp()
Las funciones a menudo saltan de cargas positivas a negativas en análisis PCA adyacentes (es decir, con 1 día de diferencia). Eche un vistazo al gráfico de carga de la divisa EUR:
Claramente no puedo usar esto porque las cargas adyacentes saltarán de positivas a negativas, por lo que mi serie que las use será errónea. Ahora eche un vistazo al valor absoluto de la carga de la divisa EUR:
El problema es que aún no puedo utilizarlo porque, como se puede ver en el gráfico superior, la carga pasa a veces de negativa a positiva y viceversa, una característica que necesito conservar.
¿Hay alguna forma de evitar este problema? ¿Puedo forzar que la orientación del vector propio sea siempre la misma en los ACP adyacentes?
Por cierto, este problema también ocurre con la función PCA() de FactoMineR. El código para el rollapply está aquí:
rollapply(retmat, windowl, function(x)
summary(princomp(x))$loadings[, 1], by.column = FALSE,
align = "right") -> princomproll