首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多观测、变量和群的Mahalanobis距离

具有多观测、变量和群的Mahalanobis距离
EN

Stack Overflow用户
提问于 2020-09-23 22:12:50
回答 1查看 495关注 0票数 0

对于iris数据集,我试图找到每一对物种之间的Mahalanobis距离。我试过以下几种方法,但没有运气。我尝试了以下几点:

代码语言:javascript
复制
group <- matrix(iris$Species) 
group <- t(group[,-5])

variables <- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")
varibles <- as.matrix(iris[,variables])

mahala_sq <- pairwise.mahalanobis(x=variables, grouping=group)

但是得到错误消息

pairwise.mahalanobis中的错误(x=变量,分组=组):nrow(x)和长度(分组)是不同的

EN

回答 1

Stack Overflow用户

发布于 2020-09-23 22:26:12

这样做是可行的:

代码语言:javascript
复制
HDMD::pairwise.mahalanobis(x=iris[,1:4], grouping=iris$Species)

  • x应该是观测值的数值矩阵(columns=variables,rows=observations)
  • grouping应该是“表示观测的组分类的字符或值的向量”,长度等于nrow(x)

)。

在编辑您的问题时,我意识到问题来自于一个错误(您分配了varibles而不是variables);如果您修复了该错误,您的代码似乎会正常工作(至少不会抛出错误)。(我仍然声称我的解决方案更简单.)

如果您想更小心一点,可以使用x <- iris[colnames(x) != "Species"] (或subset(select=)dplyr::select()模拟)来按名称而不是位置来引用省略的列。

如果您希望(出于某种原因)使用单个响应变量运行此分析,则需要使用drop=FALSE防止将一列矩阵折叠到向量,即使用x=iris[,1,drop=FALSE]

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64036986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档