我想要反转从prcomp计算出的PCA以恢复原始数据.
我认为以下内容可行:
pca$x %*% t(pca$rotation)
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
以下链接显示了如何从PC恢复原始数据,但仅针对在协方差矩阵上使用eigen的PCA进行了解释 http://www.di.fc.ul.pt/~jpn/r/pca/pca.html
prcomp不会以这种方式对PC进行钙化.
"计算是通过(居中和可能缩放的)数据矩阵的奇异值分解完成的,而不是通过在协方差矩阵上使用特征来完成的." -prcomp
kon*_*vas 15
prcomp 将变量居中,以便您需要添加减去的均值
t(t(pca$x %*% t(pca$rotation)) + pca$center)
Run Code Online (Sandbox Code Playgroud)
如果pca$scale是,TRUE您还需要重新缩放
t(t(pca$x %*% t(pca$rotation)) * pca$scale + pca$center)
Run Code Online (Sandbox Code Playgroud)