2

我正在分享与主坐标分析 (PCoA) 中的复杂特征值相关的问题。非常感谢任何帮助!

目的:在系统发育距离矩阵上执行 PCoA -> 在回归模型中包括排序轴,以说明植物物种(n = 1013 种)之间的系统发育相关性。

输入数据:系统发育距离矩阵,通过将cophenetic()函数应用于有根和时间校准的系统发育而获得。结果是一个 1013 x 1013 矩阵,主对角线为 0。输入矩阵是对称的(根据isSymmetric())并且不包含复数(根据any(is.complex())。也没有NA。请参阅以下某些物种的子集:

    structure(c(0, 55.7063710000001, 105.333883, 237.6822, 237.682199, 
261.495339, 55.7063710000001, 0, 105.333886, 237.682203, 237.682202, 
261.495342, 105.333883, 105.333886, 0, 237.682201, 237.6822, 
261.49534, 237.6822, 237.682203, 237.682201, 0, 66.171369, 261.495341, 
237.682199, 237.682202, 237.6822, 66.171369, 0, 261.49534, 261.495339, 
261.495342, 261.49534, 261.495341, 261.49534, 0), .Dim = c(6L, 
6L), .Dimnames = list(c("Cyrtomium_falcatum", "Cyrtomium_fortunei", 
"Nephrolepis_cordifolia", "Pteris_cretica", "Pteris_vittata", 
"Azolla_filiculoides"), c("Cyrtomium_falcatum", "Cyrtomium_fortunei", 
"Nephrolepis_cordifolia", "Pteris_cretica", "Pteris_vittata", 
"Azolla_filiculoides")))

最小可重现示例:我创建了重现错误消息的距离矩阵的子集。它是 txt 格式,您可以在 R 中加载read.table("you_path/distance.matrix.subset.txt", header = T, row.names = 1, sep = " "). 在此处下载(GoogleDrive)。

问题:错误消息表明执行 PCoA 时产生了复杂的特征值(如果我正确理解错误)。我使用ape::pcoa()默认设置(ape版本 5.4.1)。

Error in min(D.eig$values) : invalid 'type' (complex) of argument

对此错误消息elsehwere进行了一些讨论,但我还没有找到解决方案。

stats::cmdscale()有趣的是,如果我使用(stats版本 3.6.3)执行 PCoA,我不会收到任何错误消息。此外,我最近对一组较小的物种(n = 79)做了同样的程序,使用ape::pcoa().

非常感谢您的任何帮助和/或见解!我是 Stack Overflow 的新手,所以请不要犹豫,告诉我如何使问题更易于理解,或者是否需要其他信息。

干杯!

4

1 回答 1

1

我想我已经找到了问题所在——这是一个名为 center() 的内部函数深处的舍入错误,它使对称矩阵变为非对称——并提交了一个 Github 问题。

https://github.com/emmanuelparadis/ape/issues/17

于 2021-06-16T03:25:14.390 回答