繁体   English   中英

具有多个观测值、变量和组的马氏距离

[英]Mahalanobis distance with multiple observations, variables and groups

对于iris数据集,我试图找到每对物种之间的马氏距离。 我已经尝试了以下但没有运气。 我尝试了以下方法:

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 = variables, grouping = group) 中的错误:nrow(x) 和 length(grouping) 不同

这有效:

HDMD::pairwise.mahalanobis(x=iris[,1:4], grouping=iris$Species)
  • x应该是观测值的数字矩阵(列=变量,行=观测值)
  • grouping应该是长度等于nrow(x) “为观察指定组分类的字符或值的向量”

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM