Crear una figura de análisis de componentes principales en R Commander

Ya hemos visto cómo realizar un análisis de componentes principales en R usando los datos presentes en paquetes estadísticos. Sin embargo, por la naturaleza de los datos y su estructura dentro de R Commander, la generación de gráficos de este análisis es ligeramente diferente. Aquí os voy a explicar cómo poder crear una figura de análisis de componentes principales en R Commander de un modo muy sencillo. Además, podremos incluir elipses de equiprobabilidad por cada uno de los grupos presentes.

Quiero leer...

Generar una figura de análisis de componentes principales en R

Como es lógico, primero tenemos que tener un conjunto de datos. Y con ellos, realizar un análisis de PCA.

Este conjunto de datos consta de 9 columnas y 12 filas. De las 9 columnas o variables, 8 de ellas son numéricas (de VAR1 a VAR8) y una de ellas categórica (SP). Respecto a las filas, realmente son 12 elementos u observaciones sobre las que hemos tomado las medidas pertinentes. Nos descargamos los datos pinchando el siguiente botón:

Los importamos a continuación en R Commander siguiendo la ruta Data → Import data → From text file, clipboard, or URL.... Dependiendo de si hemos descargado los datos o los hemos copiado, los importaremos con Local file system o Clipboard.

importar-datos-en-r-commander-del-ejemplo-de-pca

Cuando visualizamos el conjunto de datos en R Commander, que hemos llamado previamente como PCA, vemos que efectivamente están compuesto por 9 variables y 12 observaciones.

datos-de-pca-ejemplo-figura-componentes-principales

Realizamos el análisis de componentes principales

Vamos a la ruta de R Commander Statistics → Dimensional analysis → Principal-component analysis... y seleccionamos todas las variables, marcando la opción de Screeplot (gráfico de desmoronamiento). El resultado es el siguiente:

> local({
+   .PC <- princomp(~VAR1+VAR2+VAR3+VAR4+VAR5+VAR6+VAR7+VAR8, cor=TRUE, data=Dataset)
+   cat("\nComponent loadings:\n")
+   print(unclass(loadings(.PC)))
+   cat("\nComponent variances:\n")
+   print(.PC$sd^2)
+   cat("\n")
+   print(summary(.PC))
+   screeplot(.PC)
+ 
+ })

Component loadings:
         Comp.1      Comp.2      Comp.3      Comp.4       Comp.5      Comp.6      Comp.7         Comp.8
VAR1 -0.1873921  0.56524063 -0.15304345  0.02673099  0.253147686  0.59026619  0.43841332  0.12863218687
VAR2 -0.4289196  0.08308355  0.04990822  0.34246540 -0.446670781 -0.22223837  0.06957113  0.66000519941
VAR3 -0.4163887  0.17197292  0.01755336  0.31069177 -0.357060898 -0.08889445  0.13049703 -0.74012435016
VAR4 -0.4050317  0.16928052 -0.67103020 -0.34462475  0.085904880 -0.14647911 -0.45760850  0.00208445540
VAR5 -0.4142241  0.10860031  0.63511681 -0.64160803 -0.002450655 -0.01272377 -0.03771204  0.00006144017
VAR6  0.1258707  0.59684933  0.27501455  0.31752144  0.419073826 -0.41540358 -0.32138756 -0.00126791339
VAR7  0.3556294  0.35809232  0.07703739 -0.07018063 -0.586009010  0.40016246 -0.48049093  0.00542593443
VAR8 -0.3599785 -0.34513233  0.19635706  0.38639521  0.287217500  0.48988320 -0.49085121  0.00523893650

Component variances:
          Comp.1           Comp.2           Comp.3           Comp.4           Comp.5           Comp.6           Comp.7           Comp.8 
5.31582369093192 2.53588369610248 0.11524424171066 0.02795346979183 0.00478294368879 0.00024185505501 0.00007005968195 0.00000004303735 

Importance of components:
                         Comp.1    Comp.2     Comp.3      Comp.4      Comp.5        Comp.6        Comp.7            Comp.8
Standard deviation     2.305607 1.5924458 0.33947642 0.167192912 0.069158829 0.01555168978 0.00837016618 0.000207454441867
Proportion of Variance 0.664478 0.3169855 0.01440553 0.003494184 0.000597868 0.00003023188 0.00000875746 0.000000005379668
Cumulative Proportion  0.664478 0.9814634 0.99586895 0.999363137 0.999961005 0.99999123716 0.99999999462 1.000000000000000
grafico-de-desmoronamiento-o-screeplot-del-ejemplo-de-pca

Podemos observar que el 98.15% de la variación se encuentra en los dos primeros componentes principales.

Crear una figura de PCA en R con ggbiplot

El paquete necesario para realizar exitosamente este gráfico estadístico es ggbiplot. Este paquete no está en los repositorios CRAN de R, por lo que tenéis que instalarlo de otro modo al explicado en cómo instalar y cargar paquetes en R Commander. En su web oficial se indica cómo se instala. Sin embargo, se han documentado algunos errores en este proceso que han sido solventados en foros como el de GitHub.

Seleccionamos la línea de código .PC

Una vez que tenemos cargado e instalado el paquete anterior, copiamos la línea de código del análisis de componentes principales mostrado previamente que empieza por .PC, y lo pegamos quitándole el punto (.) inicial, tal y como se ve a continuación:

PC <- princomp(~VAR1+VAR2+VAR3+VAR4+VAR5+VAR6+VAR7+VAR8, cor=TRUE, data=PCA)

Generamos el código de la figura con ggbiplot

Generamos un objeto (g) que haga la figura. Fijáos en que hay que poner PC en su sitio, si es este el nombre que le hemos puesto al análisis. PCA$SP se refieren respectivamente al nombre del conjunto de datos y al nombre de la variable categórica.

g <- ggbiplot(PC, obs.scale = 1, var.scale = 1, groups = PCA$SP, ellipse = TRUE, circle = FALSE)

Al código anterior no habría que modificarle nada, pero se puede personalizar

g <- g + scale_color_discrete(name = '')
g <- g + theme(legend.direction = 'horizontal', legend.position = 'top')
print(g)


Si en vez de hacerlo por partes, combinamos todo el código en una secuencia ordenada de funciones, tendríamos el siguiente resultado:

PC <- princomp(~VAR1+VAR2+VAR3+VAR4+VAR5+VAR6+VAR7+VAR8, cor=TRUE, data=PCA)
g <- ggbiplot(PC, obs.scale = 1, var.scale = 1, groups = PCA$SP, ellipse = TRUE, circle = FALSE) +
              scale_color_discrete(name = '') +
              theme(legend.direction = 'horizontal', legend.position = 'top') +
              scale_color_discrete(name = '') +
              theme(legend.direction = 'horizontal', legend.position = 'top')
print(g)

Y este es por fin el resultado de crear figura de análisis de componentes principales en R Commander:

figura de análisis de componentes principales en R

Si quieres aprender más en detalle cómo se pueden personalizar estas figuras de análisis de componentes principales, no te pierdas esta fabulosa entrada con mucho más detalles de los explicados aquí. Acabarás siendo un auténtico experto.

4 comentarios en «Crear una figura de análisis de componentes principales en R Commander»

  1. Saludos, intento cargar el ggbiplot con el siguiente comando
    install.packages(«ggbiplot»)
    use el pais de España, luego intente con Mexico, pero me sale el siguiente aviso:
    Warning: package ‘ggbiplot’ is not available (for R version 3.3.2)

    Estoy usando R version 3.3.2

    ¿Habrá alguna forma de cargar ese paquete?

    Responder
    • Hola Carlos, perdona la espera. Intenta instalar el paquete con este comando: install.packages(«ggbiplot», dependencies=TRUE). Este último atributo le está indicando que instale todos los paquetes que sean necesarios para el correcto funcionamiento de ggbiplot.

      Responder
    • Hola Esteban, primero tienes que crear el objeto g que es el ggbiplot (g <- ggbiplot(PC, obs.scale = 1, var.scale = 1, groups = PCA$SP, ellipse = TRUE, circle = FALSE))

      Responder

Deja un comentario