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