我已按照this教程创建并可视化PCA。我特别感兴趣的部分是向现有模型添加新数据点。
正如教程所示,人们会使用predict(ir.pca,newdata = tail(log.ir,2))来预测新的PC。但是,如何将这些新观察结果添加到现有情节中呢?它看起来不像预测函数返回与ggplot函数中使用的ir.pca相同的对象。
我发现了类似的问题here和here,但这些问题正在计算新的PCA分数,并将它们添加到方差图中(如果我理解正确的话)。
最终我要看的是新点是否属于使用初始数据集定义/导出的置信椭圆内。
我在教程中使用的代码:
sed
正如教程所示,我想添加新数据,这些数据来自用ggplot可视化的现有情节
由于
答案 0 :(得分:1)
当我们检查ggplot
对象时,我们发现它有一个名为data
的元素:
str(g)
# List of 9
# $ data :'data.frame': 150 obs. of 3 variables:
# ..$ xvar : num [1:150] -2.41 -2.22 -2.58 -2.45 -2.54 ...
# ..$ yvar : num [1:150] -0.397 0.69 0.428 0.686 -0.508 ...
# ..$ groups: Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
# $ layers :List of 5
# <snip>
因此我们可以将新数据点添加到data
数据帧。假设来自iris
的这10个观察结果是我们的&#34;新的&#34;观察,我们预测他们的PC值:
set.seed(123)
x <- sample(seq_len(nrow(iris)), 10)
predicted <- predict(ir.pca, newdata = log.ir[x, ])
我们可以将这些预测值添加到data
数据框
g$data <- rbind(g$data,
data.frame(
xvar = predicted[, "PC1"],
yvar = predicted[, "PC2"],
groups = "new"
)
)