我有10年的28种不同货币的每日收益数据。我希望提取第一个主要成分,而不是希望在整个10年中都使用PCA,而是希望应用2年的窗口,因为货币的行为会发生变化,因此我想对此进行反映。但是,我有一个主要问题,那就是princomp()和prcomp()函数在相邻的PCA分析中(即相隔1天)经常会从正加载跳跃到负加载。查看欧元货币的加载图:
显然,我不能使用它,因为相邻的载荷会从正数跳到负数,所以我的使用它们的系列将是错误的。现在看一下欧元货币加载的绝对值:
问题当然是我仍然不能使用它,因为从上图可以看出,负载确实会从负向正移动,有时会反过来,这是我需要保留的特征。
有什么办法可以解决这个问题?我可以强制特征向量方向在相邻的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
是非常非常相似。您只需将两个结果中的任何一个取反即可。