如何解决具有多个观测值,变量和组的马氏距离
对于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} }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。