【问题标题】:R vegan RDA not all levels of constraint are displayed in triplotR vegan RDA 并非所有级别的约束都显示在三图中
【发布时间】:2012-12-12 19:02:41
【问题描述】:

在我的 RDA 三图中,我想显示“站点”、“物种”及其约束条件,在我的例子中是 Field 和 Trt。问题是并非所有级别的约束都显示在图中。每个因素有两个水平。

我的 RDA 代码是:

Dummy.rda <- rda(species.rda ~ Field + Trt,RDA.env, scale=TRUE)

summary(Dummy.rda, scaling=3)  #Here I see only one level of each reported in:Biplot scores for constraining variables. However all levels appear in: Centroids for factor constraints

anova.cca(Dummy.rda, step=100, by='margin') # degrees of freedom are correct for both factors (df=1)

plot(Dummy.rda, scaling = 3) #This displays all levels of Field and Trt but only one of each has an arrow

plot(Dummy.rda, display = "species", xlim = xlims, ylim = ylims, 
       scaling = 3)
text(Dummy.rda, scaling = 3, display = "bp")  # I want to customize the RDA plot, but this 'text' only displays 1 level of each of Field and Trt.

【问题讨论】:

  • 问题是关于文本功能?如果是,你能展示你想要绘制什么或你的数据样本来重现它吗?
  • 在您的最后一次短信通话中尝试display = 'cn' 。这将绘制因子质心而不是箭头。
  • 问题是为什么没有显示所有级别的约束。上面的代码正确显示了“站点”和“物种”,我想使用 text() 添加箭头来表示环境约束。在我的例子中,Trt 有 2 个级别,Field 有 2 个级别,但是上面的脚本在三图上只显示了一个级别。
  • @SteveCrittenden 很抱歉来晚了,但您看到的是回归中管理因子变量的标准方式。必须删除从该因子创建的虚拟变量之一,因为它线性依赖于其他虚拟变量。因此,我们必须将其作为显式变量排除在分析之外——包括其影响。有关更详细的讨论/解释,请参阅我的答案。

标签: r constraints rda vegan triplot


【解决方案1】:

缺少的级别是因为您试图将因子变量视为连续变量——严格来说,我猜它们不应显示为双标箭头。无论如何,就像在使用虚拟变量的回归中一样,因子的一个水平不能被包括在内,因为它线性依赖于模型矩阵中剩余水平的虚拟变量。考虑这个例子:

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

mod <- rda(dune ~ Management, data = dune.env)

> model.matrix(mod)
   ManagementHF ManagementNM ManagementSF
2             0            0            0
13            0            0            1
4             0            0            1
16            0            0            1
6             1            0            0
1             0            0            1
8             1            0            0
5             1            0            0
....<truncated>

您在model.matrix() 的输出中看到的是进入排序的变量。请注意,模型矩阵中有三个变量,但Management 因子中有四个级别:

> with(dune.env, levels(Management))
[1] "BF" "HF" "NM" "SF"

R 中的约定是使用因子的第一水平作为参考水平。在回归中,这将包含在截距中,但我们在 RDA 中没有其中之一。请注意在model.matrix() 输出的第一行中,所有值都是0;这表明该行位于BF 管理组中。但由于模型中只有三个变量,我们只能用三个双标箭头来表示它们——这正是数学的工作方式。

我们可以做的是绘制组质心,这就是您所指的summary() 输出中显示的内容,可以使用scores() 提取:

> scores(mod, display = "cn")
                   RDA1       RDA2
ManagementBF -1.2321245  1.9945903
ManagementHF -1.1847246  0.7128810
ManagementNM  2.1149031  0.4258579
ManagementSF -0.5115703 -2.0172205
attr(,"const")
[1] 6.322924

因此将质心添加到现有绘图中:

text(mod, scaling = 3, display = "cn")

无论做什么,都无法为参考组添加双标箭头。

我希望这能解释您所看到的行为?

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2017-08-30
    • 1970-01-01
    • 2019-10-19
    • 2019-12-18
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多