Функция pairwise.mahalanobis не дает разумной матрицы расстояний - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь вычислить попарно расстояние махаланобиса между каждой строкой (которое содержит значения определенных переменных, определяющих некоторых людей). Я попытаюсь отобразить мою проблему со следующими данными игрушки:

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 в соответствии с полученной матрицей.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...