2014-10-27 118 views
0

我对两个数据帧执行了非度量多维缩放(NMDS),每个数据帧包含不同的变量,但是对于相同的站点。我使用的是素食主义者包:在r中绘制procrustes分析的变量?

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

我用削足适履叠加

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

我最感兴趣的是了解每个数据集的变量如何配合适应的结果。我想使用plot()函数返回来自ResponsesS3和EnvtS3的变量图形,而不是网站(这是默认情况下绘图函数返回的)。

这可能吗?

回答

0

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

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

最后,您正试图查看变量比较如何使用一种方法,一旦计算出不相似性,就会将此信息抛弃。

我想看看coinertia分析的方法,其中有我的cocorresp包粗接口,并在ade4包更全面的一个。如果您发现自己想要比较两组物种数据,请尝试共同响应分析,其中cocorresp适合。

+0

谢谢。 Coinertia分析正是我所期待的。 – Sky 2014-10-30 16:00:07

0

就像Gav说的那样,积分必须与Procrustes旋转一一对应。但是,一旦你有一个Procrustes旋转,你可以自然地将它应用到其他具有相同列数的矩阵。列数是至关重要的:如果你有2-dim NMDS,你的变量也必须映射到这2个dim中。功能metaMDS()会为您提供与您排行分数排序相对应的列分数,但我不知道您的情况下这些分数是否足够。在素食主义者中旋转这些分数的最简单方法是使用predict方法与newdata。与你继续示例:

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

本作旋转你的行分数只会同样旋转你的得分列("species")。

我们不知道你试图达到什么目的,事实上可能有更好的方法来实现你的目标(检查加文对起动者的回答)。但是,这将做旋转。