【问题标题】:plotting variables of procrustes analysis in r?在r中绘制procrustes分析的变量?
【发布时间】:2014-10-27 20:56:55
【问题描述】:

我已经对两个数据帧执行了非度量多维缩放 (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 函数默认返回的)。

这可能吗?

【问题讨论】:

    标签: r vegan


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢。 Coinertia 分析正是我想要的。
    【解决方案2】:

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

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

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

    我们不知道您要达到什么目标,并且确实可能​​有更好的方法来实现您的目标(首先查看 Gavin 的答案)。但是,这会进行轮换。

    【讨论】:

      猜你喜欢
      • 2019-04-14
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      相关资源
      最近更新 更多