Я пытаюсь вычислить попарно расстояние махаланобиса между каждой строкой (которое содержит значения определенных переменных, определяющих некоторых людей). Я попытаюсь отобразить мою проблему со следующими данными игрушки:
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 в соответствии с полученной матрицей.
Что еще более странно, я работал ранее с тем же кодом, только с большим набором данных, и получал разумные результаты. Но затем я изменил данные, над которыми я работаю, и начал получать такие абсурдные результаты, как этот. Чтобы проверить, связана ли проблема с функцией, я поэкспериментировал с данными игрушки и получил странную матрицу расстояний, показанную выше. Итак, сейчас у меня есть еще один больший набор данных, который очень похож на этот во всех аспектах (состоит из двух строк, каждая из которых является числовой переменной), и с этим набором данных результирующая матрица расстояний кажется вполне разумной. В то время как с новым набором данных, с которым я хочу работать, и с этими игрушечными данными результаты явно неверны ... Может кто-нибудь помочь мне понять, что здесь происходит?