28種類の通貨の10年間の毎日の返品データがあります。最初の主成分を抽出したいのですが、10年全体でPCAを運用するのではなく、通貨の振る舞いが進化するため、2年の期間をロール適用したいと思います。しかし、大きな問題があります。つまり、princomp()関数とprcomp()関数の両方が、隣接するPCA分析で正の負荷から負の負荷にジャンプすることが多いということです(1日間隔)。EUR通貨のローディングチャートをご覧ください:
明らかに、隣接する負荷が正から負にジャンプするため、これを使用することはできません。したがって、それらを使用するシリーズはエラーになります。次に、EUR通貨ローディングの絶対値を見てみましょう。
もちろん、トップチャートから負荷が負から正に、そして時々戻ることがわかるため、これを使用できないという問題があります。これは、保持する必要がある特性です。
この問題を回避する方法はありますか?隣接するPCAで固有ベクトルの向きを常に同じにすることができますか?
ところで、この問題はFactoMineR PCA()関数でも発生します。rollapplyのコードは次のとおりです。
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
そして、EUR +0.21 ZAR -0.79 USD -0.4
ある非常に非常に似ています。2つの結果のいずれかの符号を反転させるだけです。