0

我在两个数据帧上执行了非度量多维缩放 (NMDS),每个数据帧包含不同的变量但针对相同的站点。我正在使用素食包:

> head (ResponsesS3)
   R1_S3 R10_S3 R11_S3 R12_S3 R2_S3 R3_S3 R4_S3 R6_S3 R7_S3 R8_S3 R9_S3
4      0      0      0      0     0     1     0     0     0     0     0
5      0      0      0      0     0     1     0     0     0     0     0
7      1      0      0      1     0     0     0     0     0     0     0
12     0      0      0      0     0     1     0     0     0     0     0
14     2      2      0      0     0     0     2     0     0     0     0
16     0      0      1      0     0     0     0     0     0     1     0


> head (EnvtS3)
     Dep_Mark  Dep_Work   Dep_Ext   Use_For Use_Fish    Use_Ag Div_Prod
4  0.06222836 1.0852315 0.8367309 1.1415929 1.644670 0.1006964 0.566474
5  0.25946808 1.3342266 0.0000000 1.7123894 0.822335 0.0000000 0.283237
7  2.20668862 0.0000000 0.8769881 0.4280973 0.822335 0.5244603 0.849711
12 2.26323697 0.0000000 0.8090991 1.1415929 0.000000 1.4957609 1.416185
14 1.65107675 0.5195901 0.2921132 0.5707965 0.822335 1.7873609 0.849711
16 1.82230225 0.4760163 0.1915366 2.2831858 0.000000 1.6614904 0.849711


> ResponsesS3.mds = metaMDS (ResponsesS3, k =2, trymax = 100)

> EnvtS3.mds = metaMDS (EnvtS3, k =2, trymax = 100)

我使用 procrustean 叠加来拟合结果

> pro.ResponsesS3.EnvtS3.mds <- procrustes(ResponsesS3.mds,EnvtS3.mds)

我最感兴趣的是了解每个数据集中的变量如何组合在一起。我想使用 plot() 函数返回来自 ResponsesS3 和 EnvtS3 的变量图,而不是站点(这是 plot 函数默认返回的)。

这可能吗?

4

2 回答 2

0

不,这是不可能的。你会发现你遇到的问题是两个数据集中会有不同数量的变量,procrustes()如果你尝试,这会导致方法失败procrustes(..., scores = "species")

即使您符合(默认),如果我们可以提取物种信息procrustes(..., score = "sites"),您建议绘制谁的情节?当前绘图将一个矩阵的行与另一个矩阵的行连接起来;这在默认设置下有效,因为假设数据集是在相同位置/站点上的测量值。但这对于物种/变量是不可能的。更根本的是,我们应该如何将物种与环境变量配对?

最后,您正在尝试查看变量的比较方式,但您已经使用了一种方法,一旦计算出差异,该方法基本上会丢弃这些信息。

我会看一下coinertia分析的方法,其中我的cocorresp包中有一个粗略的接口,而ade4包中有一个更完整的接口。如果您发现自己想要比较两组物种数据,请尝试 cocorrespondence 分析,cocorresp适合。

于 2014-10-27T22:24:33.300 回答
0

就像 Gav 说的那样,Procrustes 轮换的点必须一对一地匹配。但是,一旦有了 Procrustes 旋转,您自然可以将其应用于具有相同列数的其他矩阵。列数至关重要:如果您有 2-dim NMDS,您的变量也必须映射到这 2-dim。函数metaMDS()将为您提供与您的行分数排序相对应的列分数,但我不知道这些在您的情况下有多合适。在 vegan 中旋转这些分数的最简单方法是使用predict方法 with newdata。继续你的例子:

predict(pro.ResponsesS3.EnvtS3.mds, newdata=scores(EnvtS3.mds, "species"))

这只会旋转你的列分数 ( "species"),就像旋转你的行分数一样。

我们不知道您要达到什么目标,并且确实可能​​有更好的方法来实现您的目标(请查看 Gavin 的答案作为入门)。但是,这将进行旋转。

于 2014-10-28T07:38:47.320 回答