【问题标题】:How to do a leave-one-out cross validation for CAP/capscale in R vegan?如何在 R vegan 中对 CAP/capscale 进行留一交叉验证?
【发布时间】:2020-11-04 22:15:18
【问题描述】:

我想对 R 中的 CAP 执行“留一法交叉验证”(LOO-CV)。CAP 是使用 R 包 vegan 中的 capscale 计算的,是对主坐标,类似于 rda 或 cca,但基于另一个相似矩阵,在我的例子中是 Bray-Curtis。我发现在predict.cca 中有函数calibrate.cca,但我不能让它工作。 https://www.rdocumentation.org/packages/vegan/versions/2.4-2/topics/predict.cca

这就是我所拥有的(基于 vegan 中可用的示例数据 mite

library(vegan)
data(mite, mite.env)
str(mite.env) #"SubsDens", "WatrCont", "Substrate", "Shrub", "Topo"

miteBC <- vegdist(mite, method="bray") #Bray-Curtis similarity matrix
miteCAP <-capscale(miteBC~Substrate + Shrub + Topo, data=mite.env,  #CAP in capscale
                   distance = "bray", metaMDSdist = F)
summary(miteCAP)
anova(miteCAP)
anova(miteCAP, by = "axis")
anova(miteCAP, by = "margin")

calibrate.cca(miteCAP, type =  c("response")) #error cannot find function calibrate.cca

在程序 Primer 中,它是在 CAP 函数中自动完成的(“将观察结果分配给组”),其中它自动将每个样本分配给一个组并得到一个错误分类错误(类似于分类randomForest,我已经做过了),但我想用R,用vegan::capscale应该是可能的。

非常感谢任何帮助!

【问题讨论】:

    标签: r classification cross-validation predict vegan


    【解决方案1】:

    函数vegan::calibrate 没有参数type 并且永远不会返回"response"。检查其文档。它进行环境校准,并在模型矩阵的尺度上返回约束(Substrate、Shrub、Topo)的预测值,这些因素几乎没有直接意义。

    没有直接的 LOO 选项:您必须手动循环点,并使用完整的左侧点作为 newdata。但是,我建议将 k-fold 交叉验证作为预测能力估计的更好替代方法:LOO 对数据的更改太少,并且对预测能力给出了过于乐观的看法。

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 2013-02-26
      相关资源
      最近更新 更多