Nombre : Andres Noboa

Cargando libreria y datos a utilizar:

Cargando data

library(ggplot2)
observacion_a <- c(4, 4.5, 4, 7.5, 7, 6, 5, 5.5, 5, 6)
observacion_b <- c(4, 4.5, 4, 7.5, 7, 6, 5, 5.5, 5, 6) + 4
df <- data.frame(observacion = rep(c("a", "b"), each = 10),
                    valor = c(observacion_a, observacion_b),
                    predictor = 1:10)
df

Cargamos el grafico para observar la distancia euclidea, recordando , esta definida por : \[d_{euc}(p,q) = \sqrt{\sum_{i=1}^{n}(P_i - q_i)^{2}}\]

El siguiente grafico muestra el perfil de dos observaciones definidas por 10 variables:

Grafico distancia euclidean

ggplot(data = df, aes(x = as.factor(predictor), y = valor,
                         colour = observacion)) +
  geom_path(aes(group = observacion)) +
  geom_point() +
  geom_line(aes(group = predictor), colour = "grey50", linetype = "dotted") +
  labs(x = "predictor") +
  theme_bw() +
  theme(legend.position = "none")

Calculando distancia manhattan

La distancia de Manhattan, también conocida como taxicab metric, rectilinear distance o L1 distance, define la distancia entre dos puntos p y q como el sumatorio de las diferencias absolutas entre cada dimensión. Recordando que la distancia de manhattan esta definida por :

\[d_{man}(p,q) = \sum_{i=1}^{n} |(p_i - q_i)|\]

df <- data.frame(observacion = c("a", "b"), x = c(2,7), y = c(2,7))


manhattan <- data.frame(
              x = rep(2:6, each = 2),
              y = rep(2:6, each = 2) + rep(c(0,1), 5),
              xend = rep(2:6, each = 2) + rep(c(0,1), 5),
              yend = rep(3:7, each = 2))

manhattan_2 <- data.frame(
                x = c(2, 5, 5, 7),
                y = c(2, 2, 4, 4),
                xend = c(5, 5, 7, 7),
                yend = c(2, 4, 4, 7))

Comparamos la distancia de manhattan con la euclidana mediante:

ggplot(data = df, aes(x = x, y = y)) +
      geom_segment(aes(x = 2, y = 2, xend = 7, yend = 7), color = "cyan3", size = 1.2)+
      geom_segment(data = manhattan, aes(x = x, y = y, xend = xend, yend = yend),
                   color = "red2", size = 1.2) +
      geom_segment(data = manhattan_2, aes(x = x, y = y, xend = xend, yend = yend),
                   color = "green", size = 1.2) +
      geom_point(size = 3) +
      theme(panel.grid.minor = element_blank(),
            panel.grid.major = element_line(size = 2),
            panel.background = element_rect(fill = "grey50",
                                            colour = "white",
                                            size = 0.2, linetype = "solid"))

Calculando correlacion

La correlación es una medida de distancia muy útil para hallar similitudes en terminos de patron o forma:

\[d_{cor}(p,q) = 1 - corr(p,q) \] En la siguiente imagen se muestra el perfil de 3 observaciones:

library(ggplot2)
observacion_c <- c(5, 5.5, 4.8, 5.4, 4.7, 5.6, 5.3, 5.5, 5.2, 4.8)

datos <- data.frame(observacion = rep(c("a", "b", "c"), each = 10),
                    valor = c(observacion_a, observacion_b, observacion_c),
                    predictor = 1:10)

ggplot(data = datos, aes(x = as.factor(predictor), y = valor, 
                         colour = observacion)) +
  geom_path(aes(group = observacion)) +
  geom_point() +
  labs(x = "predictor") +
  theme_bw() +
  theme(legend.position = "bottom")

Calculando correlacion entre observaciones

table_1 =  dist(x = rbind(observacion_a, observacion_b, observacion_c), method = "euclidean")
table_1
##               observacion_a observacion_b
## observacion_b      12.64911              
## observacion_c       3.75100      13.98821
1 - cor(x = cbind(observacion_a, observacion_b, observacion_c), method = "pearson")
##               observacion_a observacion_b observacion_c
## observacion_a     0.0000000     0.0000000     0.9466303
## observacion_b     0.0000000     0.0000000     0.9466303
## observacion_c     0.9466303     0.9466303     0.0000000