基于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)