我有一个包含 64 个高度相关变量的数据集(例如,许多是其他变量的交互)加上一个日期和目标变量,总共 66 个。我想导出 64 个自变量的主成分并选择最终预测变量其中(我不想直接使用主成分回归,因为它必须选择前 n 个成分而不是选择具有统计意义的成分)。
R中的代码:
PC=prcomp(mydata[,3:66], center=TRUE, scale=TRUE)
PrincipalComponents=as.data.frame(PC$x)
我希望主成分是正交的并且本质上是不相关的(显然这些并不像我想象的那样可互换)。
cor(PrincipalComponents$PC1, PrincipalComponents$PC2)
正如预期的那样,返回一个非常接近 0 的数字,大多数成对相关也是如此。然而,
cor(PrincipalComponents$PC1, PrincipalComponents$PC63)
cor(PrincipalComponents$PC1, PrincipalComponents$PC64)
返回 0.61 和 0.41。这些高相关性仅在最后两个主成分中观察到。使用主成分作为自变量进行回归,我得到其中近 30 个的 VIF>10。运行回归但不包括最后两个主成分,我得到所有预测变量的 VIF=1。
我错过了什么吗?如果这是意料之中的事情,那不是违背了 PCA 的目的吗?例如,在我决定排除这两个组件之前,我想了解这里发生了什么。