将随后几年的物种数据投射到 PCA 排序上
Projecting subsequent years of species data onto PCA ordination
我是 运行 一年内多个地点的 Hellinger 转化物种数据的 PCA(例如:1995 年)。我想通过将 1996 年的数据投影到根据第一年的数据(1995 年)构建的 PCA 排序来计算明年(1996 年)这些相同站点的站点分数。这是为了衡量从一年到另一年在排序 space 中移动的距离。是否有允许我执行此操作的 R 包?
正如@Richard Telford 提到的,如果您使用 vegan[=] 中的 rda()
,则可以对 class "rda"
使用 predict
45=] 执行此 PCA 的包。
这是一个使用荷兰沙丘数据集的示例,假设前半部分样本来自第 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")
这会产生:
我是 运行 一年内多个地点的 Hellinger 转化物种数据的 PCA(例如:1995 年)。我想通过将 1996 年的数据投影到根据第一年的数据(1995 年)构建的 PCA 排序来计算明年(1996 年)这些相同站点的站点分数。这是为了衡量从一年到另一年在排序 space 中移动的距离。是否有允许我执行此操作的 R 包?
正如@Richard Telford 提到的,如果您使用 vegan[=] 中的 rda()
,则可以对 class "rda"
使用 predict
45=] 执行此 PCA 的包。
这是一个使用荷兰沙丘数据集的示例,假设前半部分样本来自第 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")
这会产生: