Sección 7 Apéndices

7.1 Introducción a R

  • Tutorial de RMarkdown: Link

  • Tutorial Manejo de Proyectos: Link

7.2 Git + Github

  • Conectar R con Git y Github: Link

7.3 Correlaciones y distancias

Con los siguientes dos paquetes se pueden realizar los plots de las matrices de correlaciones y distancias.

library(ggcorrplot)
library(corrplot)
cor.mat_all <- cor(data.matrix(iris[,-5]), use="complete.obs")

corplot_all <- corrplot(cor.mat_all, method="shade", tl.col = "black", tl.srt = 45, 
                        number.cex = 0.4, addCoef.col = "black",order = "AOE",type = "upper",addshade = "all", diag = F)

7.4 Plots Multivariados

7.4.1 Caritas de Chernoff

Instala el paquete aplpack y carga la base de datos iris.

install.packages("aplpack")
library(aplpack)
data(iris)
faces(iris[c(1,51,101),1:4],
      nrow.plot = 1, 
      ncol.plot = 3, 
      main = "La primer flor de cada especie", print.info = TRUE)

## effect of variables:
##  modified item       Var           
##  "height of face   " "Sepal.Length"
##  "width of face    " "Sepal.Width" 
##  "structure of face" "Petal.Length"
##  "height of mouth  " "Petal.Width" 
##  "width of mouth   " "Sepal.Length"
##  "smiling          " "Sepal.Width" 
##  "height of eyes   " "Petal.Length"
##  "width of eyes    " "Petal.Width" 
##  "height of hair   " "Sepal.Length"
##  "width of hair   "  "Sepal.Width" 
##  "style of hair   "  "Petal.Length"
##  "height of nose  "  "Petal.Width" 
##  "width of nose   "  "Sepal.Length"
##  "width of ear    "  "Sepal.Width" 
##  "height of ear   "  "Petal.Length"

Para los elementos de color de las caras, los colores son encontrados al promediar los conjuntos de variables: (7,8)-eyes:iris, (1,2,3)-lips, (14,15)-ears, (12,13)-nose, (9,10,11)-hair, (1,2)-face (From ?faces).

Grafiquemos las primeras 10 flores de cada especie:

faces(iris[c(1:10,51:60,101:110),1:4],
      nrow.plot = 3, 
      ncol.plot = 10, 
      main = "Las primeras 10 flores de cada especie", print.info = FALSE)

Ahora grafiquemos las primeras 5:

faces(iris[c(1:5,51:55,101:105),1:4],
      nrow.plot = 3, 
      ncol.plot = 5, 
      main = "Las primeras 5 flores de cada especie", print.info = FALSE)

Aquí podemos notar que la carita 54 es muy diferente a las demás de su especie- La carita 102 se parece más a la de la especie 55 que a las suyas. El pelo de la primera especie es muy diferente a los de las otras especies.

Es muy “fácil” hacer grupos a ojo.

apply(iris[ ,1:4],2,max)
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
##          7.9          4.4          6.9          2.5
apply(iris[ ,1:4],2,min)
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
##          4.3          2.0          1.0          0.1
chico<-c(4,2,1,.05) # Valores más chicos de las 4 variables.
grande<-c(8,5,7,3) # Valores más grandes de las 4 variables.
faces(rbind(iris[c(1:10,51:60,101:110),1:4],chico,grande), nrow.plot=5, ncol.plot=10,main="Primeros 10 de cada especie + chico + grande" )

## effect of variables:
##  modified item       Var           
##  "height of face   " "Sepal.Length"
##  "width of face    " "Sepal.Width" 
##  "structure of face" "Petal.Length"
##  "height of mouth  " "Petal.Width" 
##  "width of mouth   " "Sepal.Length"
##  "smiling          " "Sepal.Width" 
##  "height of eyes   " "Petal.Length"
##  "width of eyes    " "Petal.Width" 
##  "height of hair   " "Sepal.Length"
##  "width of hair   "  "Sepal.Width" 
##  "style of hair   "  "Petal.Length"
##  "height of nose  "  "Petal.Width" 
##  "width of nose   "  "Sepal.Length"
##  "width of ear    "  "Sepal.Width" 
##  "height of ear   "  "Petal.Length"

Ejercicio: Explora el siguiente plot, ¿porqué sonrisas?.

faces(cbind(iris[1:15,1:4],rep(1:5,rep(3,1)), rep(c(2,4,6),rep(5,3))),
      nrow.plot = 3, 
      ncol.plot = 5, 
      main = "¿Sonrisas?", print.info = FALSE)

Con las caritas de Chernoff es mejor la representación o visualización si se tienen pocos datos y se pueden representar hasta 15 variables.

7.4.2 Curvas de Andrew

Instala y carga el paquete Andrews.

install.packages(andrews)
library(andrews)
## See the package vignette with `vignette("andrews")`
par(mfrow=c(2,2))
andrews(iris, type = 1, clr = 5, ymax = 3, main = "Curva tipo 1")
andrews(iris, type = 2, clr = 5, ymax = 3, main = "Curva tipo 2")
andrews(iris, type = 3, clr = 5, ymax = 3, main = "Curva tipo 3")
andrews(iris, type = 4, clr = 5, ymax = 3, main = "Curva tipo 4")

Podemos observar que las especies de color rojo se separan más de las otras dos en casi todos los casos. Hay intersecciones en las curvas.

Ejercicio: Carga las bases de datos mtcars y ChickWeight y explora sus curvas de Andrews.

7.4.3 Gráficos de Paralelas

library(lattice)
data(mtcars)
parallelplot(~mtcars|mtcars$cyl, main="Plot de paralelas por Cilindros")

En el eje Y podemos ver todas las variables. Los cruces reflejan correlaciones negativas entre las variables.

parallelplot(~mtcars[,c(1,6,7,3,4,5)],col=as.numeric(mtcars$cyl)-3,main="Plot de paralelas por Cilindros" )

En este plot se pueden ver los grupos por colores, los que pesan poco tienen un mayor rendimiento. Cuando no hay cruces reflejan correlación positiva.

parallelplot(~mtcars[,c(1,3,4,5)],col=1)

Si calculamos la matriz de correlaciones, podemos ver que las variables con correlación negativa se reflejan aqui también.

round(cor(mtcars[,c(1,3,4,5)]),2)
##        mpg  disp    hp  drat
## mpg   1.00 -0.85 -0.78  0.68
## disp -0.85  1.00  0.79 -0.71
## hp   -0.78  0.79  1.00 -0.45
## drat  0.68 -0.71 -0.45  1.00

Estos gráficos también dependen del orden de las variables.

Ejercicio: realiza dos plots de paralelas de la base de datos iris, uno divido por especie y otro donde el color vaya a la variable especie. ¿Qué puedes decir al respecto?

7.4.4 Estrellas

palette(rainbow(12, s = 0.6, v = 0.75))
stars(mtcars[, 1:7], len = 0.8, key.loc = c(12, 1.5),
      main = "Motor Trend Cars", draw.segments = TRUE)

También se puede realizar un plot de radar.

stars(mtcars[, 1:7], locations = c(0, 0), radius = FALSE,
      key.loc = c(0, 0), main = "Motor Trend Cars", lty = 2)

Ejercicio: Crea los plots de estrellas de la base de datos iris. ¿Qué puedes inferir de ellos?

7.4.5 Plots 3D

attach(iris)
cloud(Sepal.Length~Sepal.Width*Petal.Length|Species,main="3D Scatterplot IRIS por Especie")

7.4.6 Ejercicios

  1. Carga la base de datos de marketing. Explora los plots multivariados y describe tus observaciones sobre las variables.