基于gower距离的主坐标分析
我正试图使用素食者提供的函数基于gower距离的主坐标分析,r,vegan,R,Vegan,我正试图使用素食者提供的函数capscale来可视化距离矩阵。但是,我发现我不能,因为当与特定的距离度量(“gower”距离)一起使用时,它只返回一个轴,我不明白为什么会这样 library(素食主义者) #>警告:“素食主义者”软件包是在R版本3.4.3下构建的 #>加载所需包:permute #>加载所需包:lattice #>这是纯素2.4-5 sp1 sp1 sp2 sp3 sp4 sp5 sp6 #>sp2 0.40000000 #>sp3 1.00000000 0.6000000
capscale
来可视化距离矩阵。但是,我发现我不能,因为当与特定的距离度量(“gower”距离)一起使用时,它只返回一个轴,我不明白为什么会这样
library(素食主义者)
#>警告:“素食主义者”软件包是在R版本3.4.3下构建的
#>加载所需包:permute
#>加载所需包:lattice
#>这是纯素2.4-5
sp1 sp1 sp2 sp3 sp4 sp5 sp6
#>sp2 0.40000000
#>sp3 1.00000000 0.60000000
#>sp4 0.80000000 0.40000000 0.20000000
#>sp5 0.46666667 0.06666667 0.53333 0.33333
#>sp6 0.46666667 0.06666667 0.53333 0.33333333 0.00000000
#>sp7 0.66666667 0.26666667 0.3333333 0.1333333 0.20000000 0.20000000
#>sp8 0.73333333 0.33333333 0.26666667 0.06666667 0.26666667 0.26666667
#>sp7
#>sp2
#>sp3
#>sp4
#>sp5
#>sp6
#>sp7
#>sp8 0.06666667
使用不同的距离测量,它可以正常工作:
sp_gow调用:capscale(公式=sp_gow~1)
#>
#>惯性特征值秩
#>总计1.453564 1.456806
#>无约束1.453564 1.456806 5
#>假想-0.003243 1
#>惯性是布雷距离的平方
#>
#>无约束轴的特征值:
#>MDS1 MDS2 MDS3 MDS4 MDS5
#> 1.1350 0.2578 0.0552 0.0087 0.0001
没有约束,capscale
生成无约束主坐标分析。但是,它使用函数wcmdscale
而不是cmdscale
进行计算,这两个函数处理低特征值的方式不同。使用您的数据:
> cmdscale(sp_gow, eig = TRUE)
$points
[,1] [,2]
sp1 -0.5666667 1.497751e-08
sp2 -0.1666667 -4.315554e-09
sp3 0.4333333 1.122044e-08
sp4 0.2333333 6.041776e-09
sp5 -0.1000000 -2.589333e-09
sp6 -0.1000000 -2.589333e-09
sp7 0.1000000 2.589333e-09
sp8 0.1666667 4.315554e-09
$eig
[1] 6.488889e-01 4.440892e-16 2.610151e-17 1.676474e-17 8.672740e-19
[6] 6.523746e-19 -1.829633e-33 -1.316088e-17
将其与wcmdscale进行比较:
> wcmdscale(sp_gow, eig = TRUE)
Call: wcmdscale(d = sp_gow, eig = TRUE)
Inertia Rank
Total 0.6489 1
Results have 8 points, 1 axes
Eigenvalues:
[1] 0.6489
Weights: Constant
> scores(wcmdscale(sp_gow, eig = TRUE))
Dim1
sp1 -0.5666667
sp2 -0.1666667
sp3 0.4333333
sp4 0.2333333
sp5 -0.1000000
sp6 -0.1000000
sp7 0.1000000
sp8 0.1666667
请注意,两个函数的第一个向量是相同的wcmdscale
没有显示第二个向量。但是我们可以在cmdscale
输出中看到它。此外,cmdscale
中第二个和后续向量的特征值在舍入误差为零的范围内wcmdscale
删除所有这些微小值
所有这些都意味着capscale
已经对数据进行了PCoA,只是它抑制了所有具有特征值的轴
plot(cmdscale(sp_gow, eig = TRUE)$points, asp = 1)