r - PCoA 函数 pcoa 提取向量;解释的方差百分比
问题描述
我有一个由 132 个观察值和 10 个变量组成的数据集。这些变量都是分类的。我试图根据方差百分比查看我的观察结果如何聚类以及它们有何不同。即我想知道a)是否有任何变量有助于将某些观察点彼此分开,b)如果是,它解释的方差百分比是多少?
有人建议我对我的数据运行 PCoA(原理坐标分析)。我使用 vegan 和 ape 包运行它。这是我将 csv 文件加载到 r 后的代码,我称之为数据
#data.dis<-vegdist(data,method="gower",na.rm=TRUE)
#data.pcoa<-pcoa(data.dis)
然后我被告知要从 pcoa 数据中提取向量,所以
#data.pcoa$vectors
然后它返回了 132 行但 20 列的值(例如,从轴 1 到轴 20)
当我只有 10 个变量时,我对为什么有 20 列值感到困惑。我的印象是我只会得到 10 列。如果有任何善良的灵魂可以帮助解释a)向量实际代表什么,b)我如何获得轴1和轴2解释的方差百分比?
我遇到的另一个问题是我并不真正理解从中提取特征值的目的,data.pcoa
因为我看到一些网站在他们的距离矩阵上运行 pcoa 后这样做,但没有进一步的解释。
解决方案
高尔指数是非欧几里得指数,您可以期望比欧几里得排序 (PCoA) 中的变量数量更多的实轴。但是,您说您的变量是分类的。我假设在R术语中它们是因素。如果是这样,则不应使用仅vegan::vegdist()
接受数字数据的 which。此外,如果将变量定义为因子,则vegan::vegdist()
拒绝计算差异并给出错误。如果您设法使用vegdist()
,则您没有正确地将变量定义为因素。如果你真的有因子变量,你应该使用除vegan之外的其他包来实现 Gower 的不同(有很多替代方案)。
对于非欧几里得差异,“方差”的百分比有点棘手,它也给出了一些与虚维度相对应的负特征值。在这种情况下,所有正特征值(实轴)的总和高于数据的总“方差”。ape::pcoa()
返回您在元素中询问的信息values
。解释的方差比例在其元素中values$Relative_eig
。总“方差”在 element 中返回trace
。所有这些都记录在?pcoa
我阅读它的地方。
推荐阅读
- php - 如何使用带有 API URL 的多个参数的 $select 来仅选择特定的列?
- ios - React Native ios 应用程序构建失败并出现“选择开发团队错误”
- c# - 如何实现抽象工厂的客户端代码?
- angular - 有没有办法通过在firebase angular 6中搜索数组类型值来查找记录
- ios - 如何使用 SwiftyJSON 解析 JSON 数组对象?
- node.js - Mocha 参数化测试不取测试数据数组的修改值
- azure-devops - 自定义 Azure Pipelines 构建任务的本地化
- apache-flink - 如何在不丢失状态的情况下通过 UI 和一些后端状态问题在 flink 中更新作业
- ios - 如何在自动布局 ios 中将视图的底部边缘和顶部边缘约束到另一个视图?
- swift - Swift Small to Large Nav Bar Title Jumpy Transition