En esta actividad realizaremos un Análisis de Componentes Principales a partir de un estudio en el que se han medido la expresión de los genes sobre distintos tumores.
library(FactoMineR)
library(factoextra)
## Cargando paquete requerido: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
df <- read.csv("genes_tumores.csv")
df <- df[, -1] # elimino la columna tumorA,B,C .... Solo variables continuas
head(df)
## gene1 gene2 gene3 gene4 gene5 gene6
## 1 0.9323190 1.2113278 0.5383686 -0.3804224 -0.5994117 -0.46955658
## 2 1.0613959 0.7762260 0.5098463 0.1574786 -0.4035551 -0.50984955
## 3 0.4637662 1.1793956 1.1355446 0.1548933 -0.7319309 -0.42653172
## 4 -1.6228992 -0.7777483 -0.7868679 -1.1771294 -0.3007739 0.11591201
## 5 -1.1035586 -0.9511971 -0.9131699 -1.0484974 -0.3974149 -0.35492610
## 6 -1.0950318 -0.9722049 -0.9504966 -0.8261171 -0.5278552 -0.06271155
## gene7 gene8 gene9 gene10 gene11 gene12
## 1 -1.06758821 -1.23610151 0.1145246 0.8975893 1.4624217 1.1259876
## 2 -1.31883371 -0.87248832 -0.2017863 1.5210825 1.1883528 0.9711843
## 3 -1.03071756 -1.05634140 -0.2747214 1.0444794 0.7132720 0.7550505
## 4 0.19523024 0.15654077 0.7884622 0.9194994 1.0616514 0.9178455
## 5 0.23230945 -0.22601482 1.0759271 1.1158295 0.8121759 1.1303828
## 6 -0.04847066 0.05124849 1.3769491 0.8643747 0.9175155 0.6019269
pca_genes <- PCA(df, scale.unit = T, graph = F) # pasamos "df" como parametro, Decimos que nos Normalize los datos, aunque no es necesario, ya que aplicamos anteriormente log2 a los datos, graph = F no queremos mostrar gráficos, lo haremos más adelante
summary((pca_genes))
##
## Call:
## PCA(X = df, scale.unit = T, graph = F)
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7
## Variance 8.183 3.391 0.132 0.095 0.070 0.053 0.050
## % of var. 68.191 28.260 1.098 0.789 0.579 0.443 0.417
## Cumulative % of var. 68.191 96.451 97.549 98.338 98.918 99.361 99.778
## Dim.8 Dim.9
## Variance 0.017 0.009
## % of var. 0.144 0.079
## Cumulative % of var. 99.921 100.000
##
## Individuals
## Dist Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr
## 1 | 2.713 | -1.819 4.043 0.450 | 1.903 10.682 0.492 | -0.141 1.513
## 2 | 2.594 | -1.543 2.910 0.354 | 1.928 10.962 0.552 | 0.485 17.858
## 3 | 2.494 | -1.071 1.401 0.184 | 2.085 12.822 0.699 | -0.654 32.420
## 4 | 3.363 | -2.178 5.798 0.419 | -2.485 18.207 0.546 | -0.220 3.678
## 5 | 3.464 | -2.656 8.622 0.588 | -2.160 13.763 0.389 | 0.186 2.614
## 6 | 3.391 | -2.363 6.824 0.486 | -2.352 16.316 0.481 | 0.096 0.694
## 7 | 4.218 | 4.100 20.541 0.945 | -0.717 1.518 0.029 | -0.470 16.784
## 8 | 4.199 | 4.168 21.230 0.985 | -0.271 0.216 0.004 | -0.032 0.079
## 9 | 4.711 | 4.662 26.566 0.980 | -0.215 0.136 0.002 | 0.515 20.123
## 10 | 2.697 | -1.300 2.065 0.232 | 2.284 15.377 0.717 | 0.236 4.238
## cos2
## 1 0.003 |
## 2 0.035 |
## 3 0.069 |
## 4 0.004 |
## 5 0.003 |
## 6 0.001 |
## 7 0.012 |
## 8 0.000 |
## 9 0.012 |
## 10 0.008 |
##
## Variables (the 10 first)
## Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr cos2
## gene1 | 0.530 3.434 0.281 | 0.808 19.260 0.653 | 0.198 29.684 0.039 |
## gene2 | 0.577 4.066 0.333 | 0.800 18.876 0.640 | -0.093 6.571 0.009 |
## gene3 | 0.595 4.321 0.354 | 0.787 18.268 0.620 | -0.100 7.620 0.010 |
## gene4 | 0.910 10.117 0.828 | 0.372 4.079 0.138 | 0.019 0.279 0.000 |
## gene5 | 0.949 11.014 0.901 | -0.220 1.433 0.049 | 0.191 27.663 0.036 |
## gene6 | 0.917 10.278 0.841 | -0.378 4.217 0.143 | -0.040 1.211 0.002 |
## gene7 | 0.707 6.114 0.500 | -0.674 13.390 0.454 | -0.102 7.833 0.010 |
## gene8 | 0.781 7.449 0.610 | -0.611 11.002 0.373 | 0.092 6.401 0.008 |
## gene9 | -0.867 9.185 0.752 | -0.449 5.952 0.202 | 0.051 1.980 0.003 |
## gene10 | -0.963 11.328 0.927 | 0.198 1.154 0.039 | 0.064 3.090 0.004 |
fviz_eig(pca_genes,addlabels = T, ylim = c(0,100), barfill = "red")
Tal y como apreciamos en nuestro Scree plot , la primera componente PCA1 explica el 68,2% de la variabilidad total de los datos, mientras que la segunda componente PCA2 explica el 28,3%. Entre las dos componentes principales PCA1 y PCA2 explican un total del 96% de la variablidad total de los datos.
fviz_pca_biplot(pca_genes, repel = T)
scores <- pca_genes$ind$coord
scores_1_2 <- scores[,1:2]
fviz_nbclust(scores_1_2,FUNcluster = kmeans,method="wss", k.max = 8 )
Aplicando la regla del codo, podemos ver cómo la pendiente cae de forma pronunciada hasta el clúster 3 y, a partir de ahí, se aplana de golpe, lo cual indica que el número óptimo de clústeres para diferenciar los grupos es 3.
set.seed(12)
km <- kmeans(scores_1_2,centers = 3,nstart = 25)
fviz_pca_biplot(pca_genes, habillage = factor(km$cluster),addEllipses = TRUE, ellipse.type = "convex", palette = "Dark2",repel = TRUE)
En el siguiente Biplot PCA podemos observar inicialmente tres grupos o clústers claramente diferenciados, lo que indica que las observaciones dentro de cada grupo presentan una alta similitud en cuanto a la expresión de sus genes, es decir, cada grupo comparte patrones comunes de expresión genética.
Nuestro Analisis de Componentes muestra que para la PCA1 que tiene un 68% de varianza total de los datos, esta separando princilmente el grupo 1 y 3 (comparten valores negativos en el eje PCA1 o DIM1) del grupo 2 (valores positivos en Dim1) , este último contribuye significativamente en la PC1 con valores CTR 20.541, 21.230 y 26.566 respectivamente.
En cambio, para la creación de PCA2 , son los grupos 1 y 3 los que más contribuyen a esta componente.Teniendo el Grupo 3 valores positivos, distinguiéndose del Grupo 1 que tienen valores negativos en dicha componente.
Cluster 1 (Tumores 4, 5, 6) Para las observaciones 4,5,6 (Grupo 1) el GEN9 , que apunta directamente al cluster, tiene una gran influencia en dichas observaciones y además existe una correlación negativa con el GEN4 ya que hacen un ángulo obtuso.
Cluster 2 (Tumores 7, 8, 9) Para el Grupo 2 , las variables GEN5 y GEN6 están altamente correlacionadas, también apuntan e influyen significativamente en dicho grupo. Las variables GEN8 y GEN7 apuntan también a este grupo pero de un modo un poco menos significativas que las anteriores.
Cluster 3 (Tumores 1, 2, 3, 10) Los variables GEN10, GEN11 y GEN12 esta altamente correlacionadas , la longitud del vector es similar en los tres vectores e indica que los genes mencionados tienen una gran influencia sobre los tumores 1,2,3 y 10 Grupo 3.Podriamos decir también que el Gen5 al estar en sentido opuesto indica correlación negativa con respecto a los Gen10, Gen11 y Gen 12.
Para el resto de variables GEN1,2,3,4 , están alejadas de los diferentes clústers, y salvo para el cluster 1 que tendrían una correlación negativa con respecto al GEN4, no contribuiría significativamente para el resto de clústers.