我刚开始使用纯素食包中的RDA功能,我想在 Numerical Ecology (Legendre 1998)中重新创建一个示例,以帮助我进一步了解该功能和所产生的RDA对象。尽管尝试了多种方法,但我无法为与本书中的数字相匹配的环境变量生成其中一种排序向量。
我正在尝试重新创建一个RDA分析的示例,该分析描述了十个地点的六个鱼类物种丰富度以及四个环境地点变量。三个解释变量(珊瑚,沙子,其他)是二元变量,存在/不存在变量。数据集如下。
种类:(Ymatrix)
site sp1 sp2 sp3 sp4 sp5 sp6
1 1 1 0 0 0 0 0
2 2 0 0 0 0 0 0
3 3 0 1 0 0 0 0
4 4 11 4 0 0 8 1
5 5 11 5 17 7 0 0
6 6 9 6 0 0 6 2
7 7 9 7 13 10 0 0
8 8 7 8 0 0 4 3
9 9 7 9 10 13 0 0
10 10 5 10 0 0 2 4
解释性变量(Xmatrix):
site depth coral sand other
1 1 1 0 1 0
2 2 2 0 1 0
3 3 3 0 1 0
4 4 4 0 0 1
5 5 5 1 0 0
6 6 6 0 0 1
7 7 7 1 0 0
8 8 8 0 0 1
9 9 9 1 0 0
10 10 10 0 0 1
这是我要重新创建的数字:
Legenere Fish Triplot - Distance Scaling (Scale 1)
这是我用于运行分析的代码:
ex_rda <- rda(Ymatrix[, -1] ~., data = Xmatrix[, -1], scale = F)
我将“ scale”参数设置为false以产生与教科书示例中显示的特征值匹配的特征值。虽然可以通过将“ scale”设置为false来使特征向量匹配,但位点和物种分数与文本不匹配。 “比例”参数的定义是将物种缩放到单位方差,但是我不完全理解该参数在分析中的作用以及为什么它会改变特征向量。
即使物种和部位得分有所不同,基本绘图功能也会产生几乎完全相同的三倍图(使用缩放比例= 1)。一个区别是排除了环境变量。
因为其中三个变量是存在/不存在,所以我知道必须从分析中删除一个变量才能正确运行。为了在一个三元组中显示删除的环境变量,我尝试使用“ envfit”功能。这是用于此的代码:
fit <- envfit(ex_rda, Xmatrix[,-1], perm = 999, display = "lc")
scores(fit, "vectors")
plot(fit, p.max = 0.999, col = "green", cex = 0.8)
这样做时,新的环境向量与使用基本绘图功能制作的原始向量不对齐(蓝色=原始,绿色=新)。见下文:
“ envfit”函数中的双图得分与rda对象中汇总的得分确实匹配:
RDA对象
Biplot scores for constraining variables
RDA1 RDA2 RDA3 PC1 PC2 PC3
depth 0.4227 -0.5591 -0.71325 0 0 0
coral 0.9885 0.1508 -0.01178 0 0 0
sand -0.5565 0.8176 0.14771 0 0 0
环境得分
RDA1 RDA2
depth 0.4226500 -0.5591426
coral 0.9884960 0.1507874
sand -0.5565166 0.8176000
other -0.4040797 -0.9058435
我尝试了几种不同的方法来尝试理解为什么显示的向量发生偏移。我将rda函数中的“ scale”参数更改为true,矢量似乎对齐了,但不再与Legendre中的数字匹配。我还尝试切换到“ lc”分数,并向envfit函数添加“ scale”参数并将其设置为false。两者都几乎没有改变。
环境变量之间的这种不匹配是否与rda函数中原始的“ scale”参数有关?还是envfit函数?我也对纯素函数在站点和物种得分上使用的缩放比例以及它与Legendre 1998中描述的代数计算有何不同感到好奇。
任何有关此主题的帮助都将受到赞赏!