如何解决使用分数函数和提取向量的 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_text
和geom_segment
没有这样做的想法。您应该只传递您想要绘制的那些行,并删除其他分数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。