Predict()将新数据放入R中的PCA空间

Predict()将新数据放入R中的PCA空间,r,pca,predict,R,Pca,Predict,在对第一个数据集(a)进行主成分分析之后,我将第二个数据集(b)投影到第一个数据集的PCA空间中 从这里,我想为(b)的预测分析提取可变载荷。prcomp()返回(a)的PCA的可变载荷。如何检索投影到(a)PCA空间的(b)变量载荷 这里有一个带注释的代码版本,可以清楚地说明每一步发生了什么。首先,在矩阵a上执行原始PCA: pca.a = prcomp(a) 这将计算每个主分量(PC)的荷载。在下一步中,这些加载以及新的数据集b,用于计算PC分数: project.b = predict(

在对第一个数据集(a)进行主成分分析之后,我将第二个数据集(b)投影到第一个数据集的PCA空间中

从这里,我想为(b)的预测分析提取可变载荷。prcomp()返回(a)的PCA的可变载荷。如何检索投影到(a)PCA空间的(b)变量载荷


这里有一个带注释的代码版本,可以清楚地说明每一步发生了什么。首先,在矩阵
a
上执行原始PCA:

pca.a = prcomp(a)
这将计算每个主分量(PC)的荷载。在下一步中,这些加载以及新的数据集
b
,用于计算PC分数:

project.b = predict(pca.a, b)
因此,负载是相同的,但PC分数是不同的。如果我们查看
project.b
,我们会发现每列对应一台PC:

            PC1         PC2         PC3        PC4         PC5          PC6         PC7         PC8
 [1,] -0.2922447  0.10253581  0.55873366  1.3168437  1.93686163  0.998935945  2.14832483 -1.43922296
 [2,]  0.1855480 -0.97631967 -0.06419207  0.6375200 -1.63994127  0.110028191 -0.27612541 -0.37640710
 [3,] -1.5924242  0.31368878 -0.63199409 -0.2535251  0.59116005  0.214116915  1.20873962 -0.64494388
 [4,]  1.2117977  0.29213928  1.53928110 -0.7755299  0.16586295  0.030802395  0.63225374 -1.72053189
 [5,]  0.5637298  0.13836395 -1.41236348  0.2931681 -0.64187233  1.035226594  0.67933996 -1.05234872
 [6,]  0.2874210  1.18573157  0.04358772 -1.1941734 -0.04399808 -0.113752847 -0.33507195 -1.34592414
 [7,]  0.5629731 -1.02835365  0.36218131  1.4117908 -0.96923175 -1.213684882  0.02221423  1.14483112
 [8,]  1.2854406  0.09373952 -1.46038333  0.6885674  0.39455369  0.756654205  1.97699073 -1.17281174
 [9,]  0.8573656  0.07810452 -0.06576772 -0.5200661  0.22985518  0.007571489  2.29289637 -0.79979214
[10,]  0.1650144 -0.50060018 -0.14882996  0.2065622  2.79581428  0.813803739  0.71632238  0.09845912
              PC9      PC10
 [1,] -0.19795112 0.7914249
 [2,]  1.09531789 0.4595785
 [3,] -1.50564724 0.2509829
 [4,]  0.05073079 0.6066653
 [5,] -1.62126318 0.1959087
 [6,]  0.14899277 2.9140809
 [7,]  1.81473300 0.0617095
 [8,]  1.47422298 0.6670124
 [9,] -0.53998583 0.7051178
[10,]  0.80919039 1.5207123

希望这是有道理的,但我还没有喝完当天的第一杯咖啡,所以不能保证

载荷由原始PCA规定。然而,个人电脑的分数会有所不同。这就是你想要的吗?同样的旋转矩阵应用于(b),在投影中?我猜这意味着project.b包含了投影数据框的主要组成部分。因此,
predict
只是根据加载矩阵和新数据计算PC分数。如果你看一下
project.b
,你会发现每一列都指向一台电脑。太好了,谢谢你澄清了。这显然暴露了我的无知。如果你写下来作为回答,我可以把这个问题标记为已解决。谢谢。这很有道理。现在我可以将它与predict.lm()结合起来;-)
            PC1         PC2         PC3        PC4         PC5          PC6         PC7         PC8
 [1,] -0.2922447  0.10253581  0.55873366  1.3168437  1.93686163  0.998935945  2.14832483 -1.43922296
 [2,]  0.1855480 -0.97631967 -0.06419207  0.6375200 -1.63994127  0.110028191 -0.27612541 -0.37640710
 [3,] -1.5924242  0.31368878 -0.63199409 -0.2535251  0.59116005  0.214116915  1.20873962 -0.64494388
 [4,]  1.2117977  0.29213928  1.53928110 -0.7755299  0.16586295  0.030802395  0.63225374 -1.72053189
 [5,]  0.5637298  0.13836395 -1.41236348  0.2931681 -0.64187233  1.035226594  0.67933996 -1.05234872
 [6,]  0.2874210  1.18573157  0.04358772 -1.1941734 -0.04399808 -0.113752847 -0.33507195 -1.34592414
 [7,]  0.5629731 -1.02835365  0.36218131  1.4117908 -0.96923175 -1.213684882  0.02221423  1.14483112
 [8,]  1.2854406  0.09373952 -1.46038333  0.6885674  0.39455369  0.756654205  1.97699073 -1.17281174
 [9,]  0.8573656  0.07810452 -0.06576772 -0.5200661  0.22985518  0.007571489  2.29289637 -0.79979214
[10,]  0.1650144 -0.50060018 -0.14882996  0.2065622  2.79581428  0.813803739  0.71632238  0.09845912
              PC9      PC10
 [1,] -0.19795112 0.7914249
 [2,]  1.09531789 0.4595785
 [3,] -1.50564724 0.2509829
 [4,]  0.05073079 0.6066653
 [5,] -1.62126318 0.1959087
 [6,]  0.14899277 2.9140809
 [7,]  1.81473300 0.0617095
 [8,]  1.47422298 0.6670124
 [9,] -0.53998583 0.7051178
[10,]  0.80919039 1.5207123