En este artículo, veremos cómo usar la función dist() en el lenguaje de programación R.
R proporciona una función dist() incorporada mediante la cual podemos calcular seis tipos diferentes de distancias entre cada par único de vectores en un vector bidimensional. El método dist() acepta una array numérica como argumento y un método que representa el tipo de distancia a medir. El método debe ser una de estas distancias: euclidiana, máxima, Manhattan, Canberra, binaria y Minkowski. También acepta otros argumentos, pero son opcionales.
Sintaxis:
dist(vect, método = ” “, diag = VERDADERO o FALSO, superior = VERDADERO o FALSO)
Parámetros:
- vect: Un vector bidimensional
- método: La distancia a medir. Debe ser igual a uno de estos, “euclidean”, “maximum”, “manhattan”, “canberra”, “binary” o “minkowski”
- diag: valor lógico (VERDADERO o FALSO) que transmite si la diagonal de la array de distancia debe ser impresa por print.dist o no.
- superior: valor lógico (VERDADERO o FALSO) que transmite si el triángulo superior de la array de distancia debe ser impreso por print.dist o no.
Tipo de retorno:
Devuelve un objeto de clase «dist»
Ahora veamos cómo calcular estas distancias usando la función dist().
Distancia euclidiana
La distancia euclidiana entre dos puntos en el espacio euclidiano es básicamente la longitud de un segmento de línea entre los dos puntos. Se puede calcular a partir de las coordenadas cartesianas de los puntos con la ayuda del teorema de Pitágoras, por lo que en ocasiones se denomina distancia de Pitágoras.
Por ejemplo, en un espacio bidimensional que tiene dos puntos Point1 (x 1 ,y 1 ) y Point2 (x 2 ,y 2 ), la distancia euclidiana está dada por √(x 1 – x 2 ) 2 + (y 1 – y 2 ) 2 .
La distancia euclidiana entre los dos vectores viene dada por,
√Σ(vect1i - vect2i)2
dónde,
- vect1 es el primer vector
- vect2 es el segundo vector
Por ejemplo, tenemos dos vectores, vect1 como (2, 1, 5, 8) y vect2 como (1, 2, 4, 9). Su distancia euclidiana está dada por, √(2 – 1) 2 + (1 – 2) 2 + (5 – 4) 2 + (8 – 9) 2 que es igual a 2.
Sintaxis:
dist(vect, método = “euclidiano”, diag = VERDADERO o FALSO, superior = VERDADERO o FALSO)
Ejemplo: distancia euclidiana
R
# R program to illustrate how to calculate # euclidean distance using dist() function # Initializing a vector vect1 <- c(1, 4, 8, 9, 2, 3) # Initializing another vector vect2 <- c(9, 4, 1, 2, 4, 7) # Initializing another vector vect3 <- c(1, 7, 9, 3, 2, 8) # Initializing another vector vect4 <- c(2, 1, 4, 7, 8, 9) # Initializing another vector vect5 <- c(1, 4, 8, 3, 9, 2) # Initializing another vector vect6 <- c(3, 7, 8, 6, 5, 9) #Row bind vectors into a single matrix twoDimensionalVect <- rbind(vect1, vect2, vect3, vect4, vect5, vect6) print("Euclidean distance between each pair of vectors is: ") cat("\n\n") # Calculate Euclidean distance between vectors using # built in dist method By passing two-dimensional # vector as a parameter Since we want to calculate # Euclidean distance between each unique pair of vectors # That is why we are passing Euclidean as a method dist(twoDimensionalVect, method = "euclidean", diag = TRUE, upper = TRUE)
Producción:
Distancia de Manhattan
La distancia de Manhattan es una métrica de distancia entre dos puntos en un espacio vectorial N-dimensional. Se define como la suma de la distancia absoluta entre las coordenadas en las dimensiones correspondientes. Por ejemplo, en un espacio bidimensional que tiene dos puntos Point1 (x 1 , y1) y Point2 (x 2 , y 2 ), la distancia de Manhattan viene dada por |x 1 – x 2 | + |y 1 – y 2 |.
En R Manhattan la distancia se calcula con respecto a los vectores. La distancia de Manhattan entre los dos vectores viene dada por,
Σ|vect1i - vect2i|
dónde,
- vect1 es el primer vector
- vect2 es el segundo vector
Por ejemplo, tenemos dos vectores, vect1 como (3, 6, 8, 9) y vect2 como (1, 7, 8, 10). Su distancia Manhattan está dada por, |3 – 1| + |6 – 7| + |8 – 8| + |9 – 10| que es igual a 4.
Sintaxis:
dist(vect, método = “manhattan”, diag = VERDADERO o FALSO, superior = VERDADERO o FALSO)
Ejemplo: distancia de Manhattan
R
# R program to illustrate how to calculate # Manhattan distance # using dist() function # Initializing a vector vect1 <- c(1, 4, 8, 9, 2, 3) # Initializing another vector vect2 <- c(9, 4, 1, 2, 4, 7) # Initializing another vector vect3 <- c(1, 7, 9, 3, 2, 8) # Initializing another vector vect4 <- c(2, 1, 4, 7, 8, 9) # Initializing another vector vect5 <- c(1, 4, 8, 3, 9, 2) # Initializing another vector vect6 <- c(3, 7, 8, 6, 5, 9) #Row bind vectors into a single matrix twoDimensionalVect <- rbind(vect1, vect2, vect3, vect4, vect5, vect6) print("Manhattan distance between each pair of vectors is: ") cat("\n\n") # Calculate Manhattan distance between vectors using # built in dist method By passing two-dimensional # vector as a parameter Since we want to calculate # Manhattan distance between each unique pair of vectors # That is why we are passing Manhattan as a method dist(twoDimensionalVect, method = "manhattan", diag = TRUE, upper = TRUE)
Producción:
Distancia máxima
La distancia máxima entre dos vectores, A y B, se calcula como la diferencia máxima entre cualquier elemento por pares. En R la distancia máxima se calcula con respecto a los vectores. La distancia máxima entre dos vectores viene dada por,
max(|vect1i - vect2i|)
dónde,
- vect1 es el primer vector
- vect2 es el segundo vector
Por ejemplo, tenemos dos vectores, vect1 como (3, 6, 8, 9) y vect2 como (1, 8, 9, 10). Su distancia máxima viene dada por, max(|3 – 1|, |6 – 8|, |8 – 9|, |9 – 10|) que es igual a 2.
Sintaxis:
dist(vect, método = “máximo”, diag = VERDADERO o FALSO, superior = VERDADERO o FALSO)
Ejemplo: distancia máxima
R
# R program to illustrate how to calculate Maximum distance # using dist() function # Initializing a vector vect1 <- c(1, 4, 8, 9, 2, 3) # Initializing another vector vect2 <- c(9, 4, 1, 2, 4, 7) # Initializing another vector vect3 <- c(1, 7, 9, 3, 2, 8) # Initializing another vector vect4 <- c(2, 1, 4, 7, 8, 9) # Initializing another vector vect5 <- c(1, 4, 8, 3, 9, 2) # Initializing another vector vect6 <- c(3, 7, 8, 6, 5, 9) #Row bind vectors into a single matrix twoDimensionalVect <- rbind(vect1, vect2, vect3, vect4, vect5, vect6) print("Maximum distance between each pair of vectors is: ") cat("\n\n") # Calculate Maximum distance between vectors using # built in dist method By passing two-dimensional # vector as a parameter Since we want to calculate # Maximum distance between each unique pair of vectors # That is why we are passing Maximum as a method dist(twoDimensionalVect, method = "maximum", diag = TRUE, upper = TRUE)
Producción:
Distancia de Canberra
La distancia de Canberra es una medida numérica de la distancia entre pares de puntos en un espacio vectorial. En R Canberra, la distancia se calcula con respecto a los vectores. La distancia de Canberra entre dos vectores viene dada por,
∑ |vect1i - vect2i| / (|vect1i| + |vect2i|)
dónde,
- vect1 es el primer vector
- vect2 es el segundo vector
Por ejemplo, tenemos dos vectores, vect1 como (2, 2, 7, 5) y vect2 como (3, 8, 3, 5). Su distancia de Canberra está dada por, |2 – 3| / (2 + 3) + |2 – 8| / (2 + 8) + |7 – 3| / (7 + 3) + |5 – 5| / (5 + 5) = 0,2 + 0,6 + 0,4 + 0 que es igual a 1,2.
Sintaxis:
dist(vect, método = “canberra”, diag = VERDADERO o FALSO, superior = VERDADERO o FALSO)
Ejemplo: distancia de Canberra
R
# R program to illustrate how to calculate # Canberra distance # using dist() function # Initializing a vector vect1 <- c(1, 4, 8, 9, 2, 3) # Initializing another vector vect2 <- c(9, 4, 1, 2, 4, 7) # Initializing another vector vect3 <- c(1, 7, 9, 3, 2, 8) # Initializing another vector vect4 <- c(2, 1, 4, 7, 8, 9) # Initializing another vector vect5 <- c(1, 4, 8, 3, 9, 2) # Initializing another vector vect6 <- c(3, 7, 8, 6, 5, 9) #Row bind vectors into a single matrix twoDimensionalVect <- rbind(vect1, vect2, vect3, vect4, vect5, vect6) print("Canberra distance between each pair of vectors is: ") cat("\n\n") # Calculate Canberra distance between vectors using # built in dist method By passing two-dimensional # vector as a parameter Since we want to calculate # Canberra distance between each unique pair of vectors # That is why we are passing Canberra as a method dist(twoDimensionalVect, method = "canberra", diag = TRUE, upper = TRUE)
Producción:
distancia binaria
La distancia binaria entre dos vectores, A y B, se calcula como la proporción de elementos que comparten los dos vectores.
Aquí,
- vect1 es el primer vector
- vect2 es el segundo vector
Sintaxis:
dist(vect, método = “binario”, diag = VERDADERO o FALSO, superior = VERDADERO o FALSO)
Ejemplo: distancia binaria
R
# R program to illustrate how to calculate # Binary distance # using dist() function # Initializing a vector vect1 <- c(1, 4, 8, 9, 2, 3) # Initializing another vector vect2 <- c(9, 4, 1, 2, 4, 7) # Initializing another vector vect3 <- c(1, 7, 9, 3, 2, 8) # Initializing another vector vect4 <- c(2, 1, 4, 7, 8, 9) # Initializing another vector vect5 <- c(1, 4, 8, 3, 9, 2) # Initializing another vector vect6 <- c(3, 7, 8, 6, 5, 9) #Row bind vectors into a single matrix twoDimensionalVect <- rbind(vect1, vect2, vect3, vect4, vect5, vect6) print("Binary distance between each pair of vectors is: ") cat("\n\n") # Calculate Binary distance between vectors using # built in dist method By passing two-dimensional # vector as a parameter Since we want to calculate # Binary distance between each unique pair of vectors # That is why we are passing Binary as a method dist(twoDimensionalVect, method = "binary", diag = TRUE, upper = TRUE)
Producción:
Distancia Minkowski
La distancia de Minkowski es una distancia medida entre dos puntos en un espacio N-dimensional. Es una generalización de la distancia euclidiana y la distancia de Manhattan. Por ejemplo, en un espacio bidimensional que tiene dos puntos Point1 (x 1 , y 1 ) y Point2 (x 2 , y 2 ), la distancia de Minkowski está dada por (|x 1 – y 1 | p + |x 2 – y 2 | p ) 1/p . En R Minkowski la distancia se calcula con respecto a los vectores. La distancia de Minkowski entre los dos vectores viene dada por,
(Σ|vect1i - vect2i|p)1/p
dónde,
- vect1 es el primer vector
- vect2 es el segundo vector
- p es un entero
R proporciona un método dist() incorporado para calcular la distancia de Minkowski entre cada par de vectores en un vector bidimensional.
Sintaxis:
dist(vect, método = “minkowski”, p = entero, diag = VERDADERO o FALSO, superior = VERDADERO o FALSO)
Por ejemplo, tenemos dos vectores, vect1 como (3, 6, 8, 9) y vect2 como (2, 7, 7, 10). Su distancia de Minkowski está dada por, ( |3 – 2| 2 + |6 – 7| 2 + |8 – 7| 2 + |9 – 10| 2 ) 1/2 que es igual a 2.
Ejemplo: distancia de Minkowski
R
# R program to illustrate how to calculate # Minkowski distance # using dist() function # Initializing a vector vect1 <- c(1, 4, 8, 9, 2, 3) # Initializing another vector vect2 <- c(9, 4, 1, 2, 4, 7) # Initializing another vector vect3 <- c(1, 7, 9, 3, 2, 8) # Initializing another vector vect4 <- c(2, 1, 4, 7, 8, 9) # Initializing another vector vect5 <- c(1, 4, 8, 3, 9, 2) # Initializing another vector vect6 <- c(3, 7, 8, 6, 5, 9) #Row bind vectors into a single matrix twoDimensionalVect <- rbind(vect1, vect2, vect3, vect4, vect5, vect6) print("Minkowski distance between each pair of vectors is: ") cat("\n\n") # Calculate Minkowski distance between vectors using # built in dist method By passing two-dimensional # vector as a parameter Since we want to calculate # Minkowski distance between each unique pair of vectors # That is why we are passing Minkowski as a method dist(twoDimensionalVect, method = "minkowski", diag = TRUE, upper = TRUE p = 2)
Producción: