У меня есть 10-дневные данные ежедневных возвратов по 28 различным валютам. Я хотел бы извлечь первый основной компонент, но вместо того, чтобы использовать PCA в течение всех 10 лет, я хочу перенести двухлетнее окно, потому что поведение валют меняется, и поэтому я хочу это отразить. Однако у меня есть серьезная проблема, заключающаяся в том, что функции princomp () и prcomp () часто переходят от положительной к отрицательной нагрузке в смежных анализах PCA (то есть с интервалом в 1 день). Посмотрите на график загрузки для валюты 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
это очень и очень похожи. Вы просто инвертируете знак в любом из двух результатов.