Análisis de Componentes Principales en R.

March 17, 2011
By

This post was kindly contributed by R para Chibchombianos - go there to comment and to read the full post.

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!!!

Tags: ,

Comments are closed.