You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言vegan包CCA排序后,如何投影添加被动物种?

错误原因解析

你调用predict()时传入了物种数据给newdata参数,但你的CCA模型是基于环境变量(dune.env)拟合的,predict(..., type="response")的作用是用新的环境变量数据预测物种丰度,因此R会在你传入的passive_data中寻找环境变量(比如A1),自然找不到对应对象,导致报错。

正确实现方法:事后添加被动物种

要在不改动原模型的前提下添加被动物种,需手动计算被动物种在原CCA排序轴上的投影得分,具体代码如下:

library(vegan)
data("dune")
data("dune.env")

# 1. 运行原CCA模型(仅用前27个物种)
cca_model <- cca(dune[, 1:27] ~ ., data = dune.env)

# 2. 提取被动物种数据
passive_sp <- dune[, 28:30]

# 3. 计算被动物种在原CCA约束轴上的投影得分
# 逻辑与vegan内置物种得分计算一致:物种与样方排序轴的协方差 / 样方轴标准差
passive_scores <- cov(passive_sp, cca_model$CCA$u) / apply(cca_model$CCA$u, 2, sd)

# 4. 绘制排序图并添加被动物种
plot(cca_model, display = c("sp", "env"), main = "CCA with Passive Species")
# 用红色三角标记被动物种位置
points(passive_scores, pch = 2, col = "red", cex = 1.2)
# 添加被动物种名称
text(passive_scores, labels = colnames(passive_sp), col = "red", pos = 3)

可选方案:建模时直接指定被动物种

如果允许在建模阶段就设定补充物种,可使用Condition()函数一次性完成:

# 建模时将后3个物种设为补充(被动)变量
cca_model_with_passive <- cca(dune ~ ., data = dune.env, Condition = dune[,28:30])
# 绘图时指定显示补充变量(默认蓝色空心点)
plot(cca_model_with_passive, display = c("sp", "cn", "env"))

内容的提问来源于stack exchange,提问作者Chloe Payne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:14:56