【问题标题】:What is the difference of envfit vegan result using scores function and extract the vectors?使用 score 函数和提取向量的 envfit vegan 结果有什么区别?
【发布时间】:2021-06-18 01:15:32
【问题描述】:

从vegan(R包)的envfit函数获得的向量(fit$vectors)和使用(scores函数)提取有什么区别:

library(vegan)
data(varespec, varechem)
ord <- metaMDS(varespec)
fit <- envfit(ord, varechem, perm = 999)

fit$vectors
            NMDS1    NMDS2     r2 Pr(>r)    
N        -0.05699 -0.99837 0.2538  0.044 *  
P         0.61934  0.78513 0.1938  0.116    
K         0.76606  0.64277 0.1809  0.124    
Ca        0.68482  0.72871 0.4119  0.006 ** 
Mg        0.63219  0.77481 0.4271  0.003 ** 
S         0.19092  0.98161 0.1752  0.115    
Al       -0.87184  0.48978 0.5269  0.001 ***
Fe       -0.93628  0.35126 0.4450  0.005 ** 
Mn        0.79879 -0.60162 0.5230  0.001 ***
Zn        0.61731  0.78672 0.1879  0.121    
Mo       -0.90312  0.42938 0.0609  0.515    
Baresoil  0.92521 -0.37947 0.2508  0.052 .  
Humdepth  0.93300 -0.35987 0.5199  0.002 ** 
pH       -0.64823  0.76144 0.2307  0.070 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Permutation: free
Number of permutations: 999

data.frame(scores(fit, "vectors"))
               NMDS1      NMDS2
N        -0.02871183 -0.5029777
P         0.27264080  0.3456235
K         0.32580371  0.2733667
Ca        0.43952421  0.4676897
Mg        0.41315337  0.5063630
S         0.07992162  0.4109201
Al       -0.63286315  0.3555304
Fe       -0.62458948  0.2343268
Mn        0.57765907 -0.4350718
Zn        0.26758332  0.3410181
Mo       -0.22295444  0.1060014
Baresoil  0.46331553 -0.1900256
Humdepth  0.67275508 -0.2594927
pH       -0.31134547  0.3657210

为什么每个 NMDS 列具有不同的值,其中哪一个最适合针对站点绘制显着 (

sites <- data.frame(ord$points)

评分功能

sc <- data.frame(scores(fit, "vectors"))

sc <- data.frame(fit$vectors) 


ggplot(data=sites, aes(x=MDS1, y=MDS2)) + geom_point() + coord_fixed() +
    geom_segment(data = sc, aes(x = 0, xend = NMDS1, y = 0, yend = NMDS2),
                 arrow = arrow(length = unit(0.25, "cm")), colour = "grey") +
    geom_text(data = sc, aes(x = NMDS1, y = NMDS2, label = rownames(sc)),
              size = 3)

使用 score 函数或使用 fit$vectors ???

非常感谢

【问题讨论】:

    标签: r vegan


    【解决方案1】:

    根据文档(参见?envfit)“连续变量(向量)的打印输出给出了方向余弦,它是单位长度向量头部的坐标。”此外,它解释说“在plot 中,这些通过它们的相关性(列 'r2' 的平方根)进行缩放,因此“弱”预测变量的箭头比“强”预测变量的箭头短。您可以使用命令 @ 查看缩放的相对长度987654323@。”最后一条信息在文档末尾得到确认,上面写着“可以使用 scores.envfit 函数访问结果,该函数返回......按相关系数缩放的拟合向量”。所以区别是相关性,你应该使用scores提取的结果。直接访问的方向余弦将绘制单位长度的箭头(如您所见),而与变量的强度无关。

    vegan 中传统的plot 函数可以通过排列P-值来选择变量,但是geom_textgeom_segment 不知道这样做。您应该只传递您想要绘制的那些行,并删除其他分数。

    【讨论】:

      猜你喜欢
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多