【问题标题】:How do you rescale variables and measure distance from CCA coordinate to centroid in vegan?您如何重新调整变量并测量从 CCA 坐标到素食主义者质心的距离?
【发布时间】:2019-06-04 18:13:32
【问题描述】:

我是生物信息学实验室的新学生,如有任何错误,请随时纠正我。

我使用 R 中的 vegan 包和以下脚本制作了一个 CCA:

cca.analysis <- cca(mod ~ genus1 + genus2 + genus3, data)

我目前正在尝试衡量每个变量(属)的得分/贡献,以便确定哪个变量对我的数据集中的社区变化影响最大。我有两个问题:

  1. 如何重新调整每个属的贡献,而不管它与其他属的相对频率如何?例如,与第 3 类相比,第 1 类的丰度更高,这意味着它将为分析带来更多的变异。
  2. 您会使用包中的什么脚本或函数来测量与质心的距离,以找出该属对变异的贡献?

编辑:我制作了一个可重复的示例,以帮助提供有关该问题的一些见解。以下是属数据:

║ genus_1 ║ genus_2 ║ genus_3 ║ ║ 15.635 ║ 10.293 ║ 0 ║ ║ 9.7813 ║ 9.0061 ║ 5.4298 ║ ║ 15.896 ║ 2.5612 ║ 3.4335 ║ ║ 4.0054 ║ 0 ║ 2.0043 ║ ║ 15.929 ║ 16.213 ║ 0 ║ ║ 11.072 ║ 15.434 ║ 0 ║ ║ 12.539 ║ 7.2498 ║ 0 ║ ║ 9.1164 ║ 11.526 ║ 2.1649 ║ ║ 4.5011 ║ 0 ║ 0 ║ ║ 11.66 ║ 13.46 ║ 5.1416 ║

我提供的公式中的mod部分对应于我从PCoA分析中提取的以下数据:

║ Coord_1 ║ Coord_2 ║ Coord_3 ║ Coord_4 ║ Coord_5 ║ Coord_6 ║ Coord_7 ║ ║ 0.954 ║ 0.928 ║ 0.952 ║ 1.009 ║ 1.016 ║ 0.943 ║ 1.031 ║ ║ 0.942 ║ 1.088 ║ 1.100 ║ 1.015 ║ 1.080 ║ 1.140 ║ 1.002 ║ ║ 0.932 ║ 0.989 ║ 1.005 ║ 0.974 ║ 0.990 ║ 1.047 ║ 1.035 ║ ║ 0.929 ║ 1.111 ║ 1.094 ║ 0.847 ║ 0.932 ║ 0.940 ║ 1.016 ║ ║ 0.947 ║ 1.008 ║ 0.937 ║ 1.055 ║ 1.056 ║ 0.964 ║ 1.022 ║ ║ 0.948 ║ 1.054 ║ 0.987 ║ 1.018 ║ 1.017 ║ 0.965 ║ 0.994 ║ ║ 0.946 ║ 1.023 ║ 0.911 ║ 1.014 ║ 1.062 ║ 1.076 ║ 1.063 ║ ║ 1.041 ║ 1.000 ║ 0.945 ║ 0.872 ║ 1.036 ║ 0.907 ║ 1.029 ║ ║ 0.926 ║ 1.107 ║ 1.027 ║ 0.943 ║ 0.993 ║ 1.006 ║ 0.947 ║ ║ 1.038 ║ 1.016 ║ 1.008 ║ 1.013 ║ 0.997 ║ 0.891 ║ 0.988 ║

您可以使用函数plot 在 R 中绘制它,希望得到如下结果: CCA plot

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。只是询问包裹推荐是题外话。只需描述您需要解决的问题。如果已经有一个包可以做到这一点,那么有人会将其包含在他们的答案中。或者,没有包也很容易做到。在这里发帖时,您应该一次只问一个明确的问题。
  • 感谢@MrFlick 的提示。我现在已经为这个问题添加了更多信息。我相信这个问题不需要重定向到不同的包,因为它的两个部分都可以使用vegan 包来回答。

标签: r vegan correspondence-analysis


【解决方案1】:

实际上,约束变量(genus1 等)的缩放不会影响它们对模型的贡献。您可以通过将其中一个约束乘以某个数字(例如 10)并比较结果模型并查看它们没有改变来验证这一点。会改变的是约束的回归系数,但它们在这里并不重要(回归系数会改变以抵消乘法的影响)。

关键是:“贡献”是什么意思?如果您的意思是这些约束中的每一个在多大程度上“解释”了数据的总变化,您可以从 anova(cca.analysis, by = "terms") 或从 anova(cca.analysis, by = "margin") 获取此信息。第一个分析将是解释变化的顺序分解,其中组件加起来达到解释的 100%,而后一个分析将分解为唯一项,其中组件加起来不等于 100%。最多三个组件(属),您还可以使用 varpart 函数(对于带有参数 chisquare = TRUEcca:为此,您需要最新的 vegan 版本),它将总解释变化分解为独特而共同的贡献。

如果您指的是“贡献”的其他含义,请解释一下。

【讨论】:

  • 谢谢@Jari Oksanen 的回答。事实上,我所说的“贡献”是指每个属在先前计算的 PCoA 上解释的百分比方差。但是,您能帮我确定使用这种方法与我在一篇研究文章中发现的方法的区别吗?我不确定是否允许我在这里发布链接,所以我将摘录文章的补充信息:“属贡献(分数)计算为从属 CCA 坐标到 CCA 质心的距离。较大值表明对社区变异的贡献更大。”
  • 这种文学方法看起来完全不同。我假设他们在 CCA 中使用原始数据而不是 PCoA 轴。但是,他们没有正确地做到这一点:CCA 是一种加权排序方法,如果您想要列变量(物种)对整体分析的贡献,您应该查看与原点的加权平方距离。在 vegan 中,这些可以用goodness() 计算。我认为您应该使用在 CCA 中协调的 PCoA,但您可以使用 RDA。但是,我不确定这种贡献是否可以有意义地计算出来。
  • 我怀疑有些地方不对劲,但没有足够的方法来确定它。在论文(非补充材料)中,说明了结果“通过对未缩放的属丰度进行规范对应分析确定的群落变异的前 10 个贡献者,绘制在两个前 PCoA 维度上(箭头按贡献比例缩放)。” - 我希望这能帮助我确定我的社区分析中最重要的属,但它看起来不像是一种可靠的方法。我将尝试进行 RDA 分析,看看我得到了什么。
猜你喜欢
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 2016-03-20
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
相关资源
最近更新 更多