miércoles, 16 de marzo de 2011

Análisis de Componentes Principales en R.

En esta ocasión me interesa un poco volver a lo básico y general, y alejarme un poco de cosas especificas para la Biología.
So, presento pues la forma básica de realizar el muy conocido "análisis de componentes principales" en R.
Básicamente este análisis reduce la dimensionalidad o cantidad de un conjunto de datos y como resultado se obtiene una serie de datos "virtuales" llamados componentes principales en los cuales esta contenida la mayor cantidad de variación de los datos primarios de entrada ordenados por importancia. 
Como un elemento adicional este análisis puede servir para explorar de una manera rapida (no excesivamente eficiente) como se agrupan las variables utilizadas y/o los individuos evaluados (mas información).


Para explicar rápidamente como realizar este análisis en R, utilizaremos un set de datos de medidas tomadas a varios organismos de distintas poblaciones (misma especie) de tortugas con tres variables (longitud (lon), ancho (anc), y altura (alt) del caparazón). 
Como siempre estos datos se encontraran en formato .CSV (separado por comas)
y debe tener la siguiente apariencia y al que llamaremos "tortugas_ninja.csv":




lon,anc,alt
98,81,38
103,84,38
103,86,42
105,86,42
109,88,44
123,95,46
134,100,48
136,102,49
123,92,50
133,99,51
133,102,51
133,102,51
138,98,51
138,99,51
141,105,53
149,107,55
153,107,56
147,108,57
155,117,60
158,155,62
155,115,63
159,118,63
162,124,61
177,132,67


Manos a la Obra:






>tortugas_ninja <- read.csv("tortugas_ninja.csv",header=T)

#(llamo a R el archivo que cree en formato .CSV (separado por comas) !!se puede crear en excel y guardarlo en formato .csv pero se deben cambiar los ";" por "," y los decimales deben estar separados por "." no por ","en home)


>tortugas_ninja


#(asi puedo ver lo que tiene mi archivo tortugas_ninja y garantizar que no hayan errores en el archivo)


   lon anc alt
1   98  81  38
2  103  84  38
3  103  86  42
4  105  86  42
5  109  88  44
6  123  95  46
7  134 100  48
8  136 102  49
9  123  92  50
10 133  99  51
11 133 102  51
12 133 102  51
13 138  98  51
14 138  99  51
15 141 105  53
16 149 107  55
17 153 107  56
18 147 108  57
19 155 117  60
20 158 155  62
21 155 115  63
22 159 118  63
23 162 124  61
24 177 132  67



>attach (tortugas_ninja)

#(para tomar mis columnas como objetos)


>tortugas.cp <- princomp(tortugas_ninja[,-1], scale = TRUE)

#(realizo mi análisis de componentes principales, el argumento "[,-1]" indica que no se debe tomar la primer columna del set de datos que corresponde a una variable  altamente correlacionada con las demás(longitud) (esto se sabe por previos análisis de correlación entre variables p.ej. un correlograma))


>summary (tortugas.cp)

#(inspecciono mis resultados del análisis de componentes realizado y que tanto explican mis componentes)

Importance of components:
                          Comp.1     Comp.2
Standard deviation     17.898105 3.39881269
Proportion of Variance  0.965194 0.03480607
Cumulative Proportion   0.965194 1.00000000


>plot (tortugas.cp)

#(gráfico las varianzas para los componentes explicativos encontrados)
>biplot(tortugas.cp)

# (realizo mi gráfico de componentes principales)

>loadings(tortugas.cp)

# (cargo los datos de las variables que mis componentes me están explicando)
Loadings:
    Comp.1 Comp.2
anc -0.915  0.404
alt -0.404 -0.915

               Comp.1 Comp.2
SS loadings       1.0    1.0
Proportion Var    0.5    0.5
Cumulative Var    0.5    1.0
>tortugas.cp$scores
# (de este modo obtengo mis scores de los componentes para cada individuo de la muestra inicial, para realizar posteriores análisis con estas nuevas variables)
          Comp.1      Comp.2
 [1,]  26.942316  3.44129819
 [2,]  24.198509  4.65436178
 [3,]  20.751886  1.80466153
 [4,]  20.751886  1.80466153
 [5,]  18.113972  0.78416594
 [6,]  10.903047  1.78544299
 [7,]   5.521326  1.97801099
 [8,]   3.287767  1.87211772
 [9,]  12.029436 -3.08602990
[10,]   5.222865 -1.17015052
[11,]   2.479058  0.04291307
[12,]   2.479058  0.04291307
[13,]   6.137467 -1.57450505
[14,]   5.222865 -1.17015052
[15,]  -1.073458 -0.57322800
[16,]  -3.711372 -1.59372359
[17,]  -4.115726 -2.50832592
[18,]  -5.434683 -3.01857372
[19,] -14.879168 -2.12318993
[20,] -50.442765 11.41307753
[21,] -14.263027 -5.67570597
[22,] -17.006834 -4.46264238
[23,] -21.685739 -0.20731055
[24,] -31.428684 -2.46008828




Y finalmente eso es todo amigos....
Buenos deseos!!!

4 comentarios:

  1. Gracias por tu comentario!!!
    mira en el siguiente link encontraras toda la interpretación del análisis de componentes en R. (el que se realizo en el post y mas!!)

    http://curso-r-uah2009.wikispaces.com/1.+Componentes+principales

    que te sirva de mucho y que te haya gustado el blog!

    ResponderEliminar
  2. El enlace que mencionas lo estuve chequeando pero resulta que el archivo que hace de referencia ya no está disponible, no sé si tú dispones de ese archivo para poder chequearlo? ojala me puedas ayudar con eso, gracias
    Diana

    ResponderEliminar
  3. Gracias por el blog! me fue de gran ayuda

    ResponderEliminar