如何解决主坐标分析 (PCoA) 中的复特征值
我正在分享一个与主坐标分析 (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,105.333886,237.682203,237.682202,261.495342,237.682201,261.49534,66.171369,261.495341,0),.Dim = c(6L,6L),.Dimnames = list(c("Cyrtomium_falcatum","Cyrtomium_fortunei","Nephrolepis_cordifolia","Pteris_cretica","Pteris_vittata","Azolla_filiculoides"),c("Cyrtomium_falcatum","Azolla_filiculoides")))
最小可重现示例:我创建了一个重现错误消息的距离矩阵子集。它是txt格式,你可以用read.table("you_path/distance.matrix.subset.txt",header = T,row.names = 1,sep = " ")
在R中加载。下载它 here (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 的新手,所以请告诉我如何让问题更容易理解,或者是否需要其他信息。
干杯!
解决方法
我想我已经解决了这个问题——这是一个名为 center() 的内部函数深处的一个舍入错误,它使对称矩阵变为非对称矩阵——并提交了一个 Github 问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。