Eu tenho 10 anos de dados de retornos diários para 28 moedas diferentes. Desejo extrair o primeiro componente principal, mas, em vez de operar o PCA nos 10 anos completos, quero aplicar uma janela de 2 anos, porque os comportamentos das moedas evoluem e, portanto, desejo refletir isso. No entanto, tenho um grande problema: as funções princomp () e prcomp () geralmente saltam de cargas positivas para negativas nas análises PCA adjacentes (ou seja, com um dia de intervalo). Veja a tabela de carregamento da moeda EUR:
Claramente, não posso usar isso porque os carregamentos adjacentes saltam de positivo para negativo; portanto, minha série que os utiliza será errônea. Agora, veja o valor absoluto do carregamento da moeda em euros:
Obviamente, o problema é que ainda não posso usar isso, porque você pode ver no gráfico superior que o carregamento passa de negativo para positivo e, às vezes, volta, uma característica que preciso preservar.
Existe alguma maneira de resolver esse problema? Posso forçar a orientação do vetor próprio para ser sempre a mesma em PCAs adjacentes?
A propósito, esse problema também ocorre com a função FactoMineR PCA (). O código para a aplicação cumulativa está aqui:
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
e EUR +0.21 ZAR -0.79 USD -0.4
são muito, muito parecidos. Você simplesmente inverte o sinal em qualquer um dos dois resultados.