使用分数函数和提取向量的 envfit vegan 结果有什么区别?
What is the difference of envfit vegan result using scores function and extract the vectors?
从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 列都有不同的值,其中哪些最适合针对站点绘制显着(<0.05)变量???
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
函数访问结果,其中 returns ... 拟合向量按相关系数缩放”。所以区别是相关性,你应该使用scores
提取的结果。无论变量的强度如何,直接访问的方向余弦将绘制单位长度的箭头(如您所见)。
vegan 中的常规 plot
函数可以 select 通过排列 P 值的变量,但是 geom_text
和 geom_segment
不知道这样做。您应该只传递要绘制的那些行,并删除其他分数。
从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 列都有不同的值,其中哪些最适合针对站点绘制显着(<0.05)变量???
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
函数访问结果,其中 returns ... 拟合向量按相关系数缩放”。所以区别是相关性,你应该使用scores
提取的结果。无论变量的强度如何,直接访问的方向余弦将绘制单位长度的箭头(如您所见)。
vegan 中的常规 plot
函数可以 select 通过排列 P 值的变量,但是 geom_text
和 geom_segment
不知道这样做。您应该只传递要绘制的那些行,并删除其他分数。