[英]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.