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

使用分数函数和提取向量的 envfit vegan 结果有什么区别?

如何解决使用分数函数和提取向量的 envfit vegan 结果有什么区别?

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

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)

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

非常感谢

解决方法

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

vegan中的常规plot函数可以通过置换P-values来选择变量,但是geom_textgeom_segment没有这样做的想法。您应该只传递您想要绘制的那些行,并删除其他分数。

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