Как использовать функцию 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
mast

  [,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)

          ABC
b4.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 ")

  ABC
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 ")

          ABC
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 ")

  ABC
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 )

          ABC
b 3.979057                    
c 8.439010 5.142563          
d 3.332222 6.542133 10.614765

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *