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

问题描述

对于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 =变量,分组=组)中的错误: 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来防止将单列矩阵折叠为向量,即使用{{1} }

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...