我正在尝试计算每行之间的成对马哈拉诺比斯距离(其中包含定义某些个体的某些变量的值)。我将尝试显示以下玩具数据的问题:
df = data.frame(c(1,2,3,4), c(500,602,7000,8550))
rownames(df) = c('A','B','C','D')
colnames(df) = c('var1', 'var2')
df
# var1 var2
#A 1 500
#B 2 602
#C 3 7000
#D 4 8550
dist = pairwise.mahalanobis(as.matrix(df),
grouping = rownames(df),
cov = cov(df))$distance
rownames(dist) = rownames(df)
colnames(dist) = rownames(df)
dist
# A B C D
#A 0.000000 4.484554 2.467904 5.953293
#B 4.484554 0.000000 5.579639 3.905751
#C 2.467904 5.579639 0.000000 1.608859
#D 5.953293 3.905751 1.608859 0.000000
这个距离矩阵对我来说很奇怪。例如,虽然两个变量中A和B彼此更接近,但根据所得矩阵,我们发现A和C之间的距离小于A和B之间的距离。
什至更奇怪的是,我以前使用的是相同的代码,但只处理了更大的数据集,并且获得了合理的结果。但是后来我更改了正在处理的数据,就开始得到像这样的荒谬结果。为了检查问题是否出在功能上,我对该玩具数据进行了实验,并得到了上面显示的奇怪的距离矩阵。因此,现在我有了另一个更大的数据集,该数据集在各个方面都非常相似(由两行组成,这两行都是数值变量),并且有了该数据集,所得的距离矩阵似乎非常合理。鉴于我要使用的新数据集以及此玩具数据,结果显然不正确...有人可以帮助我了解这里发生的情况吗?