Usando GGally (antes conocido como GGpairs)

por Alfonso Malpica Maury

Proyecto Final de MCAA Posgrado FCA U.N.A.M.


Este paquete está diseñado para poder graficar en forma de matriz un set de datos con múltiples variables, el resultado es una correlación de las variables elegidas en dicho dataset. Por defecto ggpairs provee 2 comparaciones diferentes por cada par de columnas que son seleccionas, y ya sea que despliegue la densidad o el conteo de variable en las gráfica de la diagonal de la matriz. A través de la configuración de distintos parámetros dicha diagonal puede ser reemplazada con ejes o etiquetas para las variables.

La sintaxis para este paquete está descrito de la siguiente manera:

ggpairs (data, mapping = NULL, columns = 1:ncol(data), title = "", upper = list(continuous = "cor", combo = "box", discrete = "facetbar", na = "na"), lower = list(continuous = "points", combo = "facethist", discrete = "facetbar", na = "na"), diag = list(continuous = "densityDiag", discrete = "barDiag", na = "naDiag"), params = NULL, ..., axisLabels = c("show", "internal", "none"), columnLabels = colnames(data[columns]), showStrips = NULL, legends = FALSE, verbose = NULL)

A manera de ejemplo, durante este trabajo utlizaremos un archivo que puede ser obtenido en la página del INEGI que muestra distintos valores de los estados de la República Mexicana, valor como población total, el partido en el gobierno, zona, etc. El dataset a utilizar se muestra abajo:

Datos del INEGI
Estado Poblacion Partido Zona Unidades.economicas Personal.ocupado Remuneraciones Gastos Produccion.bruta Consumo.intermedio
Aguascalientes 1184996 PAN C 47449 269467 16464.748 191766.54 183482.87 134530.86
Baja California 3155070 PAN N 95882 786056 59053.233 303259.20 303152.52 171797.48
Baja California Sur 637026 PAN N 28114 156985 6817.748 64786.42 51827.98 28492.47
Campeche 822441 PRI S 32628 187384 17272.389 83350.80 648033.01 50941.76
Coahuila de Zaragoza 2748391 PRI N 83639 718386 51999.011 541444.67 633956.40 426462.66
Colima 650555 PRI C 29273 138264 5762.470 49045.67 40858.59 21987.81
Chiapas 4796580 PRI S 155280 456013 13869.883 163157.29 157603.81 81533.20
Chihuahua 3406465 PAN N 97044 803175 59777.934 326617.86 320011.90 180725.20
Ciudad de Mexico 8851080 PRD C 415481 3603572 380314.987 2049042.82 2943782.84 1408762.13
Durango 1632934 PAN N 50452 266471 12980.015 117173.32 109487.44 65621.18
Guanajuato 5486372 PAN C 222969 1067292 55914.541 664779.22 701825.70 494383.01
Guerrero 3388768 PRI S 135564 396133 8732.267 91524.90 65970.96 31904.33
Hidalgo 2665018 PRI C 98567 353978 18135.260 313153.13 305949.31 251080.85
Jalisco 7350682 PRI C 313013 1561965 79596.965 776756.18 697866.51 417867.45
Mexico 15175862 PRI C 534838 2023837 96443.561 1153107.02 1116235.40 723871.73
Michoacan de Ocampo 4351037 PRD C 195355 611496 19560.681 223746.87 179291.97 110219.90
Morelos 1777227 PRD C 84651 297797 13715.106 146558.49 144574.83 95171.50
Nayarit 1084979 PRI C 46958 172246 5517.192 55240.37 44328.26 25487.55
Nuevo Leon 4653458 IND N 135482 1399230 123009.522 1150331.66 1317129.04 827305.23
Oaxaca 3801962 PRI S 177954 454996 13914.781 305242.18 295523.93 240825.81
Puebla 5779829 PAN C 251318 874001 38563.297 466031.04 467846.69 296833.39
Queretaro 1827937 PAN C 69022 458691 31602.639 338897.92 334841.81 231721.41
Quintana Roo 1325578 PRD S 45488 347726 12810.774 135805.49 112853.54 65277.64
San Luis Potosi 2585518 PRI C 88154 420366 22868.220 260083.09 278396.07 181242.28
Sinaloa 2767761 PRI N 93242 483728 19690.968 227240.71 160131.19 93309.84
Sonora 2662480 PRI N 90642 619690 39155.896 398416.04 439968.47 257997.82
Tabasco 2238603 PRD S 59973 288749 31217.726 258872.06 479509.46 185848.51
Tamaulipas 3268554 PAN N 104334 665731 51300.815 388455.06 423644.08 260256.13
Tlaxcala 1169936 PRI C 58245 179035 5738.694 72519.38 73902.67 51122.17
Veracruz de Ignacio de la Llave 7643194 PAN S 239392 905717 57643.510 628065.78 674358.79 421326.06
Yucatan 1955577 PRI S 98478 421961 17770.834 200363.23 183621.46 121712.70
Zacatecas 1490668 PRI C 51864 186220 7127.055 82236.86 94345.73 44106.76

Columnas y Mapeo

La forma tradicional de ggpairs utiliza por defecto el despligue de todas las columnas del data set que se le solicita graficar, para nuestro caso se debe de reducir la cantidad de variables a considerar para que el tiempo de procesamiento no sea tan largo y evitar que R nos arroje un error por el cantidad de variables a considerar. En nuestro caso utilizaremos las variables Poblacion, Zona y Unidades.economicas:

ggpairs(INEGI,columns=c(4,2,5)

Para tener una presentación más vistosa se puede utilizar el parámetro mapping para incluir colores a las gráficas y pueda apreciarse de mejor manera. Utilizar una variable categórica podría ser una buena manera para diferenciar los valores

ggpairs(INEGI,columns=c(2,4,5),mapping=aes(color=Zona))

Otra forma de ejecutar el mismo comando en R es usando los nombres de las columnas en lugar de incluir el número, de esta forma:

ggpairs(INEGI,columns=c("Poblacion","Zona","Unidades.economicas"),mapping=aes(color=Zona))


Secciones de la matriz

Existen tres secciones importantes dentro de la matriz: lower, upper y diag. Las secciones lower y upper pueden contener gráficas de tipo continuos, combo o discrete

  • continuos: significa que tanto X como Y son variables continuas
  • combo: una de las variables es discreta y la otra continua
  • discrete: ambas variables son discretas

Abajo un ejemplo de como se pueden manejar distintos valore para las gráficas en los distintos tipos de variables:

ggpairs(
      INEGI,columns=c("Poblacion","Zona","Unidades.economicas"),
      lower = list (
      continuos = "smooth",
      combo = "facetdensity",
      mapping=aes(color=Zona)
      )
)

De igual forma, se pueden manipular las gráficas que deseamos aparezcan y las que no, esto simplemente usando el valor “blank” o NULL en alguna de las secciones. Un ejemplo abajo:

ggpairs(
      INEGI,columns=c("Poblacion","Zona","Unidades.economicas"),
      lower = "blank",
      diag = NULL,
      upper = list (
      continuos = "smooth",
      combo = "facetdensity",
      mapping=aes(color=Zona)
      )
)


Obteniendo una gráfica de la matriz

Existe la manera de una vez obtenida la matriz de gráficas, se pueda invocar a solo una de ellas para una mejor visualización; sin embargo, es indispensable guardar el resultado de ggpairs y entonces poder invocar la gráfica deseada a través un simple sistema de coordenadas matricial.

INEGI_plot <- ggpairs(INEGI,columns=c("Partido","Remuneraciones","Personal.ocupado"),mapping = aes(color=Zona))
INEGI_plot

Para entonces seleccionar la gráfica de la esquina a la derecha y además agregar otros valores y detalles a la gráfica

INEGI_plot[3,3]+aes(color=Zona)


AVISO IMPORTANTE

El paquete ggpairs ya no se encuentra disponible para las versiones más recientes de R (al menos para 3.3 y superiores), por lo tanto se debe descargar el paquete GGally que contiene las funciones de ggpairs