Как использовать функцию dist в R (с примерами)


Функцию dist() в R можно использовать для вычисления матрицы расстояний, которая отображает расстояния между строками матрицы или фрейма данных.

Эта функция использует следующий базовый синтаксис:

dist(x, метод=”евклидов”)

куда:

  • x: имя матрицы или фрейма данных.
  • метод: используемая мера расстояния. По умолчанию используется «евклидово», но варианты включают «максимум», «манхэттен», «канберра», «двоичный» или «минковский».

В следующих примерах показано, как использовать эту функцию на практике со следующим фреймом данных:

#define four vectors
a <- c(2, 4, 4, 6)
b <- c(5, 5, 7, 8)
c <- c(9, 9, 9, 8)
d <- c(1, 2, 3, 3)

#row bind four vectors into matrix
mat <- rbind(a, b, c, d)

#view matrix
mat

 [,1] [,2] [,3] [,4]
a 2 4 4 6
b 5 5 7 8
c 9 9 9 8
d 1 2 3 3

Пример 1. Использование dist() для вычисления евклидова расстояния

Евклидово расстояние между двумя векторами, A и B, рассчитывается как:

Евклидово расстояние = √ Σ(A i -B i ) 2

В следующем коде показано, как вычислить матрицу расстояний, которая показывает евклидово расстояние между каждой строкой матрицы в R:

#calculate Euclidean distance between each row in matrix
dist(mat)

 a b c
b 4.795832 
c 10.148892 6.000000 
d 3.872983 8.124038 13.190906

Вот как интерпретировать вывод:

  • Евклидово расстояние между строками a и b равно 4,795832 .
  • Евклидово расстояние между строками a и c равно 10,148892 .
  • Евклидово расстояние между строками a и d равно 3,872983 .
  • Евклидово расстояние между строкой b и строкой c равно 6.000000 .
  • Евклидово расстояние между строками b и d равно 8,124038 .
  • Евклидово расстояние между строками c и d равно 13,190906 .

Пример 2: Используйте dist() для вычисления максимального расстояния

Максимальное расстояние между двумя векторами, A и B, рассчитывается как максимальная разница между любыми парными элементами.

В следующем коде показано, как вычислить матрицу расстояний, которая показывает максимальное расстояние между каждой строкой матрицы в R:

#calculate Maximum distance between each row in matrix
dist(mat, method=" maximum ")

 a b c
b 3 
c 7 4 
d 3 5 8

Пример 3. Использование dist() для расчета расстояния до Канберры

Канберрское расстояние между двумя векторами, A и B, рассчитывается как:

Канберрское расстояние = Σ |A i -B i | / |А я | + |Б я |

В следующем коде показано, как вычислить матрицу расстояний, которая показывает канберрское расстояние между каждой строкой матрицы в R:

#calculate Canberra distance between each row in matrix
dist(mat, method=" canberra ")

 a b c
b 0.9552670 
c 1.5484515 0.6964286 
d 1.1428571 1.9497835 2.3909091

Пример 4. Использование dist() для вычисления двоичного расстояния

Бинарное расстояние между двумя векторами, A и B, рассчитывается как доля элементов, которые являются общими для двух векторов.

В следующем коде показано, как вычислить матрицу расстояний, которая показывает двоичное расстояние между каждой строкой матрицы в R:

#calculate Binary distance between each row in matrix
dist(mat, method=" binary ")

 a b c
b 0 
c 0 0 
d 0 0 0

Пример 5. Использование dist() для вычисления расстояния Минковского

Расстояние Минковского между двумя векторами, A и B, рассчитывается как:

Расстояние Минковского = (Σ|a i – b i | p ) 1/p

где i — i -й элемент в каждом векторе, а p — целое число.

В следующем коде показано, как вычислить матрицу расстояний, которая показывает расстояние Минковского (с использованием p = 3) между каждой строкой матрицы в R:

#calculate Minkowski distance between each row in matrix
dist(mat, method=" minkowski", p= 3 )

 a b c
b 3.979057 
c 8.439010 5.142563 
d 3.332222 6.542133 10.614765

Дополнительные ресурсы

Как рассчитать сходство Жаккара в R
Как рассчитать сходство косинусов в R
Как рассчитать скалярный продукт в R