我在一年内为多个地点运行了Hellinger转化物种数据的PCA(例如:1995)。我想通过将1996年的数据预测到从第一年的数据(1995年)构建的PCA排序,来计算明年(1996年)相同地点的站点得分。这是为了测量在一年到一年的圣职任命空间中移动的距离。是否有R包允许我这样做?
答案 0 :(得分:0)
正如@Richard Telford所提到的,如果您使用素食主义包中的predict
来执行此PCA,则可以使用"rda"
方法进行课程rda()
。
以下是使用荷兰沙丘数据集的示例,假设前半部分来自第1年,后半部分来自第2年(他们没有)。
制作最终情节的所有步骤都涉及到一些,但预测很容易做到;主要的是你需要在两年的数据集中使用相同的列(相同的物种)。
library("vegan")
data(dune)
take <- seq_len(floor(nrow(dune) / 2))
pca <- rda(dune[take, ], scale = TRUE)
设置分数缩放的默认值并提取观察到的网站分数
scl <- "sites"
scrs <- scores(pca, display = "sites", choices = 1:2, scaling = scl)
从pca
预测左侧dune
个样本。请注意,您必须指定type = "wa"
才能获得网站分数。
pred <- predict(pca, newdata = dune[-take, ], type = "sites",
scaling = scl)
当我们创建绘图时,我们需要轴限制而不是两个绘图的跨度分数,以防:
lims <- apply(rbind(scrs, pred[, 1:2]), 2L, range)
(注意pred
包含所有轴的预测,而不仅仅是前两个;您可以使用rank
参数进行调整。)
现在我们可以绘制两组得分,第1年为分数,第2年为第1年至第2年预测的箭头:
plot(pca, display = "sites", type = "n", scaling = scl,
xlim = lims[,1], ylim = lims[,2])
arrows(scrs[,1], scrs[,2], pred[,1], pred[,2], col = "blue",
length = 0.1)
points(pca, display = "sites", scaling = scl, pch = 21, bg = "white")
这会产生: