我是一名化学家,大约一年前我决定对化学计量学有更多的了解。
我正在处理一个我不知道如何解决的问题:
我进行了一个实验设计(Doehlert类型,有3个因素),记录了几种分析物的浓度,如,Y,。然后,我在Y上进行了主成分分析,我用第一台PC上的分数(总方差的87%)作为新的y作为线性回归模型,我的实验编码设置为X。
现在,我需要在对新的“训练集”执行PCA之前,执行一次一次的交叉验证,然后像以前一样对分数建立回归模型,预测“测试集”中观察的得分值,并计算预测中的误差,比较预测的分数和在前一次PCA空间中由测试对象投影得到的分数。所以重复了n次(用我实验设计的点数)。我想知道我怎样才能和R。
发布于 2013-02-20 20:38:13
进行计算,例如prcomp,然后是lm。为此,您需要将prcomp返回的PCA模型应用于新数据。这需要两个(或三个)步骤:
prcomp计算的同一中心对新数据进行中心化prcomp计算的相同缩放向量缩放新数据prcomp计算的旋转前两个步骤由scale完成,使用prcomp对象的$center和$scale元素。然后用$rotation [, components.to.use]将数据乘以矩阵。
通过计算输入到prcomp的数据的分数,并将结果与prcomp返回的PCA模型的$x元素进行比较,您可以轻松地检查PCA的重建是否计算分数。
根据评论编辑:
如果简历的目的是计算某种错误,那么您可以在预测分数y的计算误差(我理解您的意思)和Y的计算误差之间进行选择: PCA还允许您返回并根据分数预测原始变量。这很容易,因为载荷($rotation)是正交的,所以反方向就是转置。
因此,在原Y空间中的预测是scores %*% t (pca$rotation),用tcrossprod (scores, pca$rotation)计算速度更快。
发布于 2015-02-04 11:05:52
还有R库pls (偏最小二乘),它有聚合酶链反应工具(主成分回归)。
https://stackoverflow.com/questions/14997541
复制相似问题