微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 envfit() 确定的向量是否独立计算?

如何解决使用 envfit() 确定的向量是否独立计算?

我是 R 中 Nmds 的新手,我有一个关于如何计算表征环境数据拟合的向量的问题。

背景:我正在探索沉积物中金属的浓度如何影响底栖群落组成。我正在使用 scores()envfit()提取坐标数据,并将结果向量叠加在 Nmds 图形上。

我的理解基于“环境变量是排序分数所解释的因变量,每个因变量单独分析”。在 envfit() 帮助文本中,无论您想在 Nmds 图上叠加多少环境变量,每个变量的坐标都应该相同。

当我包含一些变量时,情况似乎就是这样。但是,当我开始添加 10 个或更多环境变量时,结果可能会发生巨大变化。我不认为这是编码错误:如您所见,除了添加一个变量之外,我正在运行的代码是相同的。

我使用的代码基本上是:

data.frame(
  scores(envfit(bci.mds_dens,na.rm = TRUE,dat_env%>%
                filter(loc_id!="TL20-BM-07")%>%  
                select(`Water Depth (ft)`,`Arsenic (mg/kg)`)),#Selecting Metals
         display="vectors"))

其中 dat_env 包含每个环境变量作为一列。这段代码的结果是:

                  Nmds1      Nmds2
Water Depth (ft)  0.1196980  0.1212918
Arsenic (mg/kg)  -0.1417012 -0.3099184

如果我添加更多变量,如果它们是独立计算的,我不希望结果发生变化。在某种程度上,情况也是如此。例如,如果我运行,选择 Arsenic (mg/kg):Zinc (mg/kg),我会得到相同的水深和砷结果。

data.frame(
     scores(envfit(bci.mds_dens,dat_env%>%
                     filter(loc_id!="TL20-BM-07")%>%  
                     select(`Water Depth (ft)`,`Arsenic (mg/kg)`:`Zinc (mg/kg)`)),#Selecting additional Metals
            display="vectors")
   )
                       Nmds1       Nmds2
Water Depth (ft)  0.11969801  0.12129178
Arsenic (mg/kg)  -0.14170121 -0.30991835
Cadmium (mg/kg)  -0.04827247  0.42203081
Chromium (mg/kg) -0.20945984  0.09785620
copper (mg/kg)   -0.28567961  0.04701332
Lead (mg/kg)     -0.07496529 -0.20329097
Mercury (mg/kg)  -0.14035867 -0.20792955
Nickel (mg/kg)   -0.12195289  0.09952376
Zinc (mg/kg)     -0.19545612  0.02121037

但是,如果我包含一个额外的环境变量(选择 Arsenic (mg/kg):Aluminum (mg/kg)),所有结果都会发生变化。

data.frame(
     scores(envfit(bci.mds_dens,`Arsenic (mg/kg)`:`Aluminum (mg/kg)`)),#Selecting additional Metals
            display="vectors")
   )
                       Nmds1     Nmds2
Water Depth (ft)  0.13765597 0.3345912
Arsenic (mg/kg)   0.28208807 0.3232619
Cadmium (mg/kg)   0.23706765 0.3226476
Chromium (mg/kg)  0.21876222 0.2343784
copper (mg/kg)    0.59141618 0.6611765
Lead (mg/kg)      0.32338315 0.2917671
Mercury (mg/kg)   0.25736750 0.3537455
Nickel (mg/kg)   -0.18547038 0.1815348
Zinc (mg/kg)      0.42798824 0.5076813
Aluminum (mg/kg)  0.08773589 0.2549420

我不认为这是编码错误,因为我所做的只是选择其他数据。我希望对 envfit() 的工作原理有所了解,以便我能够弄清楚这里发生了什么。

我没有为保密问题提供可重现的数据。如果人们认为它特别有用,我可以尝试使用虚拟数据重新创建这个问题,但我的问题更多地与函数本身有关。

感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。