install.packages(c("FactoMineR","factoextra","ggplot2"))
## Installing packages into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
library("ggplot2")
library("FactoMineR")
library("factoextra")
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa

A continuación, se usaran los conjuntos de datos de demostración decathlon2 del paquete factoextra

data(decathlon2)
decathlon2.active <-decathlon2[1:23, 1:10]
head(decathlon2.active[,1:6], 4)
##         X100m Long.jump Shot.put High.jump X400m X110m.hurdle
## SEBRLE  11.04      7.58    14.83      2.07 49.81        14.69
## CLAY    10.76      7.40    14.26      1.86 49.37        14.05
## BERNARD 11.02      7.23    14.25      1.92 48.93        14.99
## YURKOV  11.34      7.09    15.19      2.10 50.42        15.31
PCA(decathlon2.active,scale.unit =TRUE,ncp =5,graph =TRUE)

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 23 individuals, described by 10 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"

Calcula el análisis de componentes principales en los individuos/variables activos

library("FactoMineR")
res.pca <-PCA(decathlon2.active,graph =FALSE)

print(res.pca)
## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 23 individuals, described by 10 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"

EINGVALUES AND VARIANCES Se puede leer un poco mas de este tema en el Resumen realizado en la parte final de este archivo.

library("factoextra")
eig.val <-get_eigenvalue(res.pca)
eig.val
##        eigenvalue variance.percent cumulative.variance.percent
## Dim.1   4.1242133        41.242133                    41.24213
## Dim.2   1.8385309        18.385309                    59.62744
## Dim.3   1.2391403        12.391403                    72.01885
## Dim.4   0.8194402         8.194402                    80.21325
## Dim.5   0.7015528         7.015528                    87.22878
## Dim.6   0.4228828         4.228828                    91.45760
## Dim.7   0.3025817         3.025817                    94.48342
## Dim.8   0.2744700         2.744700                    97.22812
## Dim.9   0.1552169         1.552169                    98.78029
## Dim.10  0.1219710         1.219710                   100.00000
fviz_eig(res.pca,addlabels =TRUE,ylim =c(0,50))

GRAFICAS Se realizan los codigos para poder visualizar los codigos.

var <- get_pca_var (res.pca)
var
## Principal Component Analysis Results for variables
##  ===================================================
##   Name       Description                                    
## 1 "$coord"   "Coordinates for the variables"                
## 2 "$cor"     "Correlations between variables and dimensions"
## 3 "$cos2"    "Cos2 for the variables"                       
## 4 "$contrib" "contributions of the variables"
# Coordenadas
head(var$coord)
##                   Dim.1       Dim.2      Dim.3       Dim.4      Dim.5
## X100m        -0.8506257 -0.17939806  0.3015564  0.03357320 -0.1944440
## Long.jump     0.7941806  0.28085695 -0.1905465 -0.11538956  0.2331567
## Shot.put      0.7339127  0.08540412  0.5175978  0.12846837 -0.2488129
## High.jump     0.6100840 -0.46521415  0.3300852  0.14455012  0.4027002
## X400m        -0.7016034  0.29017826  0.2835329  0.43082552  0.1039085
## X110m.hurdle -0.7641252 -0.02474081  0.4488873 -0.01689589  0.2242200
# Cos2: calidad en mapa Factore
head(var$cos2)
##                  Dim.1        Dim.2      Dim.3        Dim.4      Dim.5
## X100m        0.7235641 0.0321836641 0.09093628 0.0011271597 0.03780845
## Long.jump    0.6307229 0.0788806285 0.03630798 0.0133147506 0.05436203
## Shot.put     0.5386279 0.0072938636 0.26790749 0.0165041211 0.06190783
## High.jump    0.3722025 0.2164242070 0.10895622 0.0208947375 0.16216747
## X400m        0.4922473 0.0842034209 0.08039091 0.1856106269 0.01079698
## X110m.hurdle 0.5838873 0.0006121077 0.20149984 0.0002854712 0.05027463
# Contribucion a los componentes Principales
head(var$contrib)
##                  Dim.1      Dim.2     Dim.3       Dim.4     Dim.5
## X100m        17.544293  1.7505098  7.338659  0.13755240  5.389252
## Long.jump    15.293168  4.2904162  2.930094  1.62485936  7.748815
## Shot.put     13.060137  0.3967224 21.620432  2.01407269  8.824401
## High.jump     9.024811 11.7715838  8.792888  2.54987951 23.115504
## X400m        11.935544  4.5799296  6.487636 22.65090599  1.539012
## X110m.hurdle 14.157544  0.0332933 16.261261  0.03483735  7.166193
# Coordenadas de las variables
head(var$coord,4)
##                Dim.1       Dim.2      Dim.3      Dim.4      Dim.5
## X100m     -0.8506257 -0.17939806  0.3015564  0.0335732 -0.1944440
## Long.jump  0.7941806  0.28085695 -0.1905465 -0.1153896  0.2331567
## Shot.put   0.7339127  0.08540412  0.5175978  0.1284684 -0.2488129
## High.jump  0.6100840 -0.46521415  0.3300852  0.1445501  0.4027002
# Taza de variables
fviz_pca_var(res.pca,col.var ="black")

head(var$cos2,4)
##               Dim.1       Dim.2      Dim.3      Dim.4      Dim.5
## X100m     0.7235641 0.032183664 0.09093628 0.00112716 0.03780845
## Long.jump 0.6307229 0.078880629 0.03630798 0.01331475 0.05436203
## Shot.put  0.5386279 0.007293864 0.26790749 0.01650412 0.06190783
## High.jump 0.3722025 0.216424207 0.10895622 0.02089474 0.16216747
library("corrplot")
## corrplot 0.92 loaded
corrplot(var$cos2,is.corr=FALSE)

# cos2: Total de variables en Dim.1 y Dim.2
fviz_cos2(res.pca,choice ="var",axes =1:2)

# Color usado por valor cos2: Calidad en el mapa de Factore
fviz_pca_var(res.pca,col.var ="cos2",
             gradient.cols =c("#00AFBB","#E7B800","#FC4E07"),
             repel =TRUE# Avoid text overlapping
             )

# Cambiar transparencia de valores de cos2 
fviz_pca_var(res.pca,alpha.var ="cos2")

head(var$contrib,4)
##               Dim.1      Dim.2     Dim.3     Dim.4     Dim.5
## X100m     17.544293  1.7505098  7.338659 0.1375524  5.389252
## Long.jump 15.293168  4.2904162  2.930094 1.6248594  7.748815
## Shot.put  13.060137  0.3967224 21.620432 2.0140727  8.824401
## High.jump  9.024811 11.7715838  8.792888 2.5498795 23.115504
library("corrplot")
corrplot(var$contrib,is.corr=FALSE)

# Contribuciones variables PC1
fviz_contrib(res.pca,choice ="var",axes =1,top =10)

# Contribuciones variables PC2
fviz_contrib(res.pca,choice ="var",axes =2,top =10)

fviz_contrib(res.pca,choice ="var",axes =1:2,top =10)

fviz_pca_var(res.pca,col.var ="contrib",
             gradient.cols =c("#00AFBB","#E7B800","#FC4E07")
             )

# Cambiar la transparencia por Valores Contribución
fviz_pca_var(res.pca,alpha.var ="contrib")

# Crea variable continua Aleatoria de largo 10
set.seed(123)
my.cont.var <-rnorm(10)

# Variables de color por la variable continua
fviz_pca_var(res.pca,col.var =my.cont.var,
             gradient.cols =c("blue","yellow","red"),
             legend.title ="Cont.Var")

# Crea una variable de agrupación usando kmeans
# Crea 3 grupos de variables (centros = 3)
set.seed(123)
res.km <-kmeans(var$coord,centers =3,nstart =25)
grp <-as.factor(res.km$cluster)

# Variables de color por grupos
fviz_pca_var(res.pca,col.var =grp,
             palette =c("#0073C2FF","#EFC000FF","#868686FF"),
             legend.title ="Cluster")

res.desc <-dimdesc(res.pca,axes =c(1,2),proba =0.05)
# Descripción de dimensión 1
res.desc$Dim.1
## 
## Link between the variable and the continuous variables (R-square)
## =================================================================================
##              correlation      p.value
## Long.jump      0.7941806 6.059893e-06
## Discus         0.7432090 4.842563e-05
## Shot.put       0.7339127 6.723102e-05
## High.jump      0.6100840 1.993677e-03
## Javeline       0.4282266 4.149192e-02
## X400m         -0.7016034 1.910387e-04
## X110m.hurdle  -0.7641252 2.195812e-05
## X100m         -0.8506257 2.727129e-07
# Descripción de dimensión 2
res.desc$Dim.2
## 
## Link between the variable and the continuous variables (R-square)
## =================================================================================
##            correlation      p.value
## Pole.vault   0.8074511 3.205016e-06
## X1500m       0.7844802 9.384747e-06
## High.jump   -0.4652142 2.529390e-02
ind <-get_pca_ind(res.pca)
ind
## Principal Component Analysis Results for individuals
##  ===================================================
##   Name       Description                       
## 1 "$coord"   "Coordinates for the individuals" 
## 2 "$cos2"    "Cos2 for the individuals"        
## 3 "$contrib" "contributions of the individuals"
# Coordenadas de Individuos
head(ind$coord)
##                Dim.1      Dim.2      Dim.3       Dim.4       Dim.5
## SEBRLE     0.1955047  1.5890567  0.6424912  0.08389652  1.16829387
## CLAY       0.8078795  2.4748137 -1.3873827  1.29838232 -0.82498206
## BERNARD   -1.3591340  1.6480950  0.2005584 -1.96409420  0.08419345
## YURKOV    -0.8889532 -0.4426067  2.5295843  0.71290837  0.40782264
## ZSIVOCZKY -0.1081216 -2.0688377 -1.3342591 -0.10152796 -0.20145217
## McMULLEN   0.1212195 -1.0139102 -0.8625170  1.34164291  1.62151286
# Calidad de Individuos
head(ind$cos2)
##                 Dim.1      Dim.2       Dim.3       Dim.4        Dim.5
## SEBRLE    0.007530179 0.49747323 0.081325232 0.001386688 0.2689026575
## CLAY      0.048701249 0.45701660 0.143628117 0.125791741 0.0507850580
## BERNARD   0.197199804 0.28996555 0.004294015 0.411819183 0.0007567259
## YURKOV    0.096109800 0.02382571 0.778230322 0.061812637 0.0202279796
## ZSIVOCZKY 0.001574385 0.57641944 0.239754152 0.001388216 0.0054654972
## McMULLEN  0.002175437 0.15219499 0.110137872 0.266486530 0.3892621478
# Contribucion de Individuos
head(ind$contrib)
##                Dim.1      Dim.2      Dim.3       Dim.4       Dim.5
## SEBRLE    0.04029447  5.9714533  1.4483919  0.03734589  8.45894063
## CLAY      0.68805664 14.4839248  6.7537381  8.94458283  4.21794385
## BERNARD   1.94740183  6.4234107  0.1411345 20.46819433  0.04393073
## YURKOV    0.83308415  0.4632733 22.4517396  2.69663605  1.03075263
## ZSIVOCZKY 0.01232413 10.1217143  6.2464325  0.05469230  0.25151025
## McMULLEN  0.01549089  2.4310854  2.6102794  9.55055888 16.29493304
fviz_pca_ind(res.pca)

fviz_pca_ind(res.pca,col.ind ="cos2",
             gradient.cols =c("#00AFBB","#E7B800","#FC4E07")
             ,repel =TRUE# Evita la superposición de texto (lento si hay muchos puntos)
             )

fviz_pca_ind(res.pca,pointsize ="cos2",
             pointshape =21,fill ="#E7B800",
             repel =TRUE# Evita la superposición de texto (lento si hay muchos puntos)
             )

fviz_pca_ind(res.pca,col.ind ="cos2",
             pointsize ="cos2",gradient.cols =c("#00AFBB","#E7B800","#FC4E07"),
             repel =TRUE# Evita la superposición de texto (lento si hay muchos puntos)
             )

fviz_cos2(res.pca,choice ="ind")

# TContribucion Total PC1 & PC2
fviz_contrib(res.pca,choice ="ind",axes =1:2)

# Crear una variable continua aleatoria de longitud 23,
# Misma duración que el número de personas activas en el PCA
set.seed(123)
my.cont.var <-rnorm(23)

# Variables de color por la variable continua
fviz_pca_ind(res.pca,col.ind =my.cont.var,
             gradient.cols =c("blue","yellow","red"),
             legend.title ="Cont.Var")

head(iris,3)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
# La variable Especie (índice = 5) se elimina 
# antes del análisis PCA
iris.pca <-PCA(iris[,-5],graph =FALSE)


fviz_pca_ind(iris.pca,
             geom.ind ="point",# show points only (nbut not "text")
             col.ind =iris$Species,# color por grupos
             palette =c("#00AFBB","#E7B800","#FC4E07"),
             addEllipses =TRUE,# Concentration ellipses
             legend.title ="Groups"
             )

# Agregar puntos suspensivos de confianza
fviz_pca_ind(iris.pca,geom.ind ="point",col.ind =iris$Species,
             palette =c("#00AFBB","#E7B800","#FC4E07"),
             addEllipses =TRUE,ellipse.type ="confidence",
             legend.title ="Groups"
             )

fviz_pca_ind(iris.pca,label ="none",# Etiquetas Individuales Ocultas
             habillage =iris$Species,# color by groups
             addEllipses =TRUE,# Concentration ellipses
             palette ="jco"
             )

# Variables en dimension 2 and 3
fviz_pca_var(res.pca,axes =c(2,3))

# Individuo en dimensiones 2 and 3
fviz_pca_ind(res.pca,axes =c(2,3))

# Mostrar puntos variables y etiquetas de texto
fviz_pca_var(res.pca,geom.var =c("point","text"))

# Mostrar solo etiquetas de texto individuales
fviz_pca_ind(res.pca,geom.ind ="text")

# Cambiar el tamaño de las flechas y etiquetas
fviz_pca_var(res.pca,arrowsize =1,labelsize =5,repel =TRUE)

# Cambias puntos, tamaños, formas y color
# Cambiar tamaño de la etiqueta
fviz_pca_ind(res.pca,pointsize =3,
             pointshape =21,fill ="lightblue",
             labelsize =5,repel =TRUE)

# Agregar puntos suspensivos de confianza
fviz_pca_ind(iris.pca,geom.ind ="point",
             col.ind =iris$Species,# color by groups
             palette =c("#00AFBB","#E7B800","#FC4E07"),
             addEllipses =TRUE,ellipse.type ="confidence",
             legend.title ="Groups"
             )

# Casco convexo
fviz_pca_ind(iris.pca,geom.ind ="point",
             col.ind =iris$Species,# color by groups
             palette =c("#00AFBB","#E7B800","#FC4E07"),
             addEllipses =TRUE,ellipse.type ="convex",
             legend.title ="Groups"
             )

fviz_pca_ind(iris.pca,
             geom.ind ="point",# mostrar solo puntos (pero no "texto")
             group.ind =iris$Species,# color por grupos
             legend.title ="Groups",
             mean.point =FALSE)

fviz_pca_var(res.pca,axes.linetype ="blank")

ind.p <-fviz_pca_ind(iris.pca,geom ="point",col.ind =iris$Species)
ggpubr::ggpar(ind.p,
              title ="Principal Component Analysis",
              subtitle ="Iris data set",
              caption ="Source: factoextra",
              xlab ="PC1",ylab ="PC2",
              legend.title ="Species",legend.position ="top",
              ggtheme =theme_gray(),palette ="jco"
              )

fviz_pca_biplot(res.pca,repel =TRUE,
                col.var ="#2E9FDF",# Color Variables 
                col.ind ="#696969"# Color Individual 
                )

fviz_pca_biplot(iris.pca,
                col.ind =iris$Species,palette ="jco",
                addEllipses =TRUE,label ="var",
                col.var ="black",repel =TRUE,
                legend.title ="Species"
                )

fviz_pca_biplot(iris.pca,
                # Llenar individuos por grupos
                geom.ind ="point",
                pointshape =21,
                pointsize =2.5,
                fill.ind =iris$Species,
                col.ind ="black",
                # Color variable por grupos
                col.var =factor(c("sepal","sepal","petal","petal")),
                
                legend.title =list(fill ="Species",color ="Clusters"),
                repel =TRUE       # Avoid label overplotting
                )+
  
  ggpubr::fill_palette("jco")+    # Llenado individual de color
  ggpubr::color_palette("npg")    # Color Variable 

fviz_pca_biplot(iris.pca,
                # Individuos
                geom.ind ="point",
                fill.ind =iris$Species,col.ind ="black",
                pointshape =21,pointsize =2,
                palette ="jco",
                addEllipses =TRUE,
                # Variables
                alpha.var ="contrib",col.var ="contrib",
                gradient.cols ="RdYlBu",
                
                legend.title =list(fill ="Species",color ="Contrib",
                                   alpha ="Contrib")
                )

PCA(decathlon2.active,ind.sup =NULL,
    quanti.sup =NULL,quali.sup =NULL,graph =TRUE)

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 23 individuals, described by 10 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
res.pca <-PCA(decathlon2,ind.sup =24:27,
              quanti.sup =11:12,quali.sup =13,graph=FALSE)

X : un marco de datos. Las filas son individuos y las columnas son variables numéricas. - ind.sup : un vector numérico que especifica los índices de los individuos suplementarios - quanti.sup, quali.sup : un vector numérico que especifica, respectivamente, los índices de las variables cuantitativas y cualitativas - gráfico: un valor lógico. Si es VERDADERO, se muestra un gráfico.

res.pca$quanti.sup
## $coord
##             Dim.1       Dim.2      Dim.3       Dim.4       Dim.5
## Rank   -0.7014777 -0.24519443 -0.1834294  0.05575186 -0.07382647
## Points  0.9637075  0.07768262  0.1580225 -0.16623092 -0.03114711
## 
## $cor
##             Dim.1       Dim.2      Dim.3       Dim.4       Dim.5
## Rank   -0.7014777 -0.24519443 -0.1834294  0.05575186 -0.07382647
## Points  0.9637075  0.07768262  0.1580225 -0.16623092 -0.03114711
## 
## $cos2
##            Dim.1       Dim.2      Dim.3      Dim.4        Dim.5
## Rank   0.4920710 0.060120310 0.03364635 0.00310827 0.0054503477
## Points 0.9287322 0.006034589 0.02497110 0.02763272 0.0009701427
fviz_pca_var(res.pca)

#Cambiar el color de las variables
fviz_pca_var(res.pca,
             col.var ="black",     # Variables Activas
             col.quanti.sup ="red"# Suplementos de Variables 
             )

# Ocultar variables activas en el gráfico, 
# Mostrar solo variables suplementarias
fviz_pca_var(res.pca,invisible ="var")

# Ocultar variables suplementarias
fviz_pca_var(res.pca,invisible ="quanti.sup")

# Gráfico de variables activass
p <-fviz_pca_var(res.pca,invisible ="quanti.sup")

# Añadir variables suplementarias
fviz_add(p, res.pca$quanti.sup$coord,
         geom =c("arrow","text"),
         color ="red")

res.pca$ind.sup
## $coord
##              Dim.1       Dim.2      Dim.3      Dim.4       Dim.5
## KARPOV   0.7947206  0.77951227 -1.6330203  1.7242283 -0.75070396
## WARNERS -0.3864645 -0.12159237 -1.7387332 -0.7063341 -0.03230011
## Nool    -0.5591306  1.97748871 -0.4830358 -2.2784526 -0.25461493
## Drews   -1.1092038  0.01741477 -3.0488182 -1.5343468 -0.32642192
## 
## $cos2
##              Dim.1        Dim.2      Dim.3      Dim.4        Dim.5
## KARPOV  0.05104677 4.911173e-02 0.21553730 0.24028620 0.0455487744
## WARNERS 0.02422707 2.398250e-03 0.49039677 0.08092862 0.0001692349
## Nool    0.02897149 3.623868e-01 0.02162236 0.48108780 0.0060077529
## Drews   0.09207094 2.269527e-05 0.69560547 0.17617609 0.0079736753
## 
## $dist
##   KARPOV  WARNERS     Nool    Drews 
## 3.517470 2.482899 3.284943 3.655527
p <-fviz_pca_ind(res.pca,col.ind.sup ="blue",repel =TRUE)
p <-fviz_add(p, res.pca$quali.sup$coord,color ="red")
p

res.pca$quali
## $coord
##              Dim.1      Dim.2       Dim.3      Dim.4      Dim.5
## Decastar -1.343451  0.1218097 -0.03789524  0.1808357  0.1343364
## OlympicG  1.231497 -0.1116589  0.03473730 -0.1657661 -0.1231417
## 
## $cos2
##              Dim.1       Dim.2        Dim.3      Dim.4       Dim.5
## Decastar 0.9051233 0.007440939 0.0007201669 0.01639956 0.009050062
## OlympicG 0.9051233 0.007440939 0.0007201669 0.01639956 0.009050062
## 
## $v.test
##              Dim.1      Dim.2      Dim.3      Dim.4      Dim.5
## Decastar -2.970766  0.4034256 -0.1528767  0.8971036  0.7202457
## OlympicG  2.970766 -0.4034256  0.1528767 -0.8971036 -0.7202457
## 
## $dist
## Decastar OlympicG 
## 1.412108 1.294433 
## 
## $eta2
##                 Dim.1      Dim.2       Dim.3      Dim.4      Dim.5
## Competition 0.4011568 0.00739783 0.001062332 0.03658159 0.02357972
fviz_pca_ind(res.pca,habillage =13,
             addEllipses =TRUE,ellipse.type ="confidence",
             palette ="jco",repel =TRUE)

# Visualizar variable con cos2 >= 0.6
fviz_pca_var(res.pca,select.var =list(cos2 =0.6))

# Top 5 variables activas con el cos2 más alto
fviz_pca_var(res.pca,select.var=list(cos2 =5))

# Seleccionar por nombres
name <-list(name =c("Long.jump","High.jump","X100m"))
fviz_pca_var(res.pca,select.var =name)

# Top 5 personas contribuyentes y variablee
fviz_pca_biplot(res.pca,select.ind =list(contrib =5),
                select.var =list(contrib =5),
                ggtheme =theme_minimal())

RESUMEN

Introducción:

# 3.1

El análisis de componentes principales (principal component analysis) o PCA es una técnica que permite hacer un gráfico en el cual se plasman una serie de datos los cuales provienen de diferentes variables que no comparten una relación entre sí para poder hacer una visualización más clara de estos datos.

La razón del uso de esta técnica es con la finalidad de reducir la dimensionalidad ( variables ) y al reducirlas también se evita la pérdida de información, al reducirse al menor número variables transformadas ( componentes principales), estos componentes principales se plasman en un gráfico X y Y y representan las direcciones.

# 3.2

En esta sección nos representan un ejemplo de las componentes principales, en este caso PC1 y PC2, estas direcciones son plasmadas en el plano por los lugares de mayor variación. Se puede hacer una disminución de las diferentes dimensiones de un plano en la dimensión principal o también conocida como primer componente principal. Al observarse el gráfico referente a la redundancia, se puede concluir que cuando hay una alta redundancia o los datos plasmados en el gráfico se encuentran muy unidos, se puede concluir que hay una alta correlación entre las variables mientras que si hay un baja redundancia esto significa que las variables no se relacionan.

# 3.3

En el software de R se puede hacer uso del PCA mediante diferentes funciones, tales como pueden ser:

● PCA() [FactoMineRpackage], ● ca() [capackage], ● dudi.coa() [ade4package], ● corresp() [MASSpackage], ● andepCA() [ExPositionpackage],

Para poder visualizar los resultados del PCA se hace llamado a la función “ factoextra R package.” Cabe resaltar que no importa la función que se use para hacer uso del PCA.

# 3.3.2

Para el ejemplo se hará uso de la función “ CA() [FactoMineRpackage], “ y se instala escribiendo lo siguiente: “ instalar.paquetes(C(“FactoMineR”,“hecho extra”)) “

Para el ejemplo se hará uso de una base de datos que describen el desempeño de los atletas durante dos eventos deportivos (Dectar y OlympicG). Contiene 27 individuos (atletas) descritos por 13 variables.

● El color azul claro representa los individuos que se usan para analizar las componentes principales.

● El color azul oscuro representa coordenadas que se producirán a partir del PCA de los individuos activos(azul claro).

● El color rosado representa las variables para analizar los componentes principales.( variables activas).

● El color rojo representa la clasificación y los puntos de los atletas.( variable continua suplementaria).

● El color verde representa a los dos encuentros de atleta-tic.(variable continua suplementaria).

# 3.3.3

Es muy importante escalar(estandarizar) las variables a la hora de hacer un análisis de los componentes principales ya que muchas variables pueden contener diferentes variedades como por ejemplo Kg,g,cm, etc. También es importante estandarizarlos cuando su media y desviación estándar son muy diferentes, todo esto se hace con el motivo de poder comparar las variables sin que los resultados del PCA se vean afectados, se debe intentar tener desviación estándar 1 y media 0.

Para estandarizar los datos en el software R se usa “ scale() “ sin embargo una vez se hace llamado a “ PCA() [ in FactoMineR],“ se estandarizan los datos automáticamente.

# 3.3.4

se puede hacer uso de la función “ PCA(X,scale.unit =TRUE,ncp =5,graph =TRUE)” la cual es una versión simplificada ”PCA() [FactoMineRpackage]“

Teniendo ya todo se puede hacer una visualización de los datos que se puede hacer normalmente con la función “factoextra R package” o mediante otras funciones como pueden ser:

● get_eigenvalue(res.pca) ● fviz_eig(res.pca) ● get_pca_ind(res.pca),get_pca_var(res.pca) ● fviz_pca_ind(res.pca) ● fviz_pca_biplot(res.pca)

# 3.4.1

En esta sección se habla sobre cómo los valores propios representan el nivel de variación de las variables, y cómo se relaciona con los primeros PC que siempre tienden a tener altos niveles de variación ya que representan la dirección, donde es necesario saber la máxima cantidad de variación. Esta parte es muy importante ya que para poder sacar los componentes principales se necesita analizar los valores propios y varianzas. Para hacer esto se hace llamado a la función “get_eigenvalue()[factoextrapackage].”

Círculo de correlación

En este caso, un cos2 alto indica una buena representación de la variable en el componente principal y un cos2 bajo indica que la variable no está perfectamente representada por los PC.

Si una variable está perfectamente representada por solo dos componentes principales (Dim.1 y Dim.2), la suma del cos2 en estas dos PC es igual a uno. En este caso las variables se posicionarán en el círculo de correlaciones. Para algunas de las variables, es posible que se requieran más de 2 componentes para representar perfectamente los datos. En este caso las variables se posicionan dentro del círculo de correlaciones. Para estos tipos de códigos los valores de cos2 se utilizan para estimar la calidad de la representación, también para cuanto más cerca esté una variable del círculo de correlaciones, mejor será su representación en el mapa de factores y para las variables que están cerca del centro del gráfico son menos importantes para los primeros componentes. Hay que tener en cuenta que también es posible cambiar la transparencia de las variables según sus valores de cos2.

Aportes de variables a PCs

La función fviz_contrib() [paquete factoextra] se puede utilizar para dibujar un gráfico de barras de contribuciones variables. Si hay datos que contienen muchas variables, se puede decidir mostrar las principales variables. ntribtutintineo varíables.ElsiguientecódigoRmuestralas10principalesvariablesquecontribuyenala esto siendo una linea de código.

Habla también sobre la contribución de las variables y si estas fueran uniforme, el valor que se estaría esperado sería de 1/ longitud(variables) = 1/10 = 10%. Esto para que un componente dado y una variable con una contribución mayor que este límite pueda considerarse importante para contribuir al componente.

Se puede ver que las variables - X100m, Long.jump y Pole.vault - son las que más contribuyen a las dimensiones 1 y 2 y las variables más importantes (o contribuyentes) se pueden resaltar en el gráfico de correlación de la siguiente manera: fviz_pca_var(res.pca,col.var =“contribución”, degradado.cols =C(“#00AFBB”,“#E7B800”,“#FC4E07”) ) Hay que tener en cuenta que también es posible cambiar la transparencia de las variables según sus valores de contribución usando la opciónalfa.var = “contrib”.

Color por grupos

Se habla un poco sobre como cambiar el color a las variables y esto es posible poniendo color en cada una de las variables por grupos definidos por una variable cualitativa/categórica, también llamada factoren terminología R. Para cambiar el color de los grupos, el argumentopaletadebería ser usado. Para cambiar los colores del degradado, el argumentodegradado.colsdebería ser usado.

Gráfica de individuos

Para finalizar, se habla sobre los resultados para individuos, que se pueden extraer usando la funciónget_pca_ind() [factoextra paquete]. De manera similar a laget_pca_var(), la funciónget_pca_ind(), que proporciona una lista de matrices que contienen todos los resultados para los individuos y también habla de crear gráficos individuales, para crear un gráfico de barras de la calidad de representación (cos2) de los individuos en el mapa de factores, puede usar la funciónfviz_cos2() como se describió anteriormente para las variables: fviz_cos2(res.pca,elección =“Indiana”) estos y más comandos son los que aparecen en el libro.

En los siguientes capitulos, los capítulos de las gáfricas, entendemos que:

Hay diferentes funciones que se pueden implementar al momento de cambiar algunas características de las gráficas como el tamaño y los colores; los cuales se representan como códigos, por ejemplo: “cos2”, “RdBu”, “Blues”, también, las paletas de colores personalizados pueden llevar los siguientes códigos, los cuales son creados para organizar los trabajos y facilidad la creación de proyecto, como por ejemplo: “npg”, “aaas”, “lancet”, “jco”, “ucscgb”, “rickandmorty”. De acuerdo con lo anterior, los individuos pueden colorearse con variables determinadas o también llamadas personalizadas generalmente con col.ind. También, existe la opción de que los individuos sean coloreados por grupos, en este caso, es preciso usar códigos de iris que representa al conjunto de datos que se quiere demostrar o se puede usar el argumento vestiduraocol.ind que es mucho más preciso al momento de colorear a los individuos empleando la variable factor, además, los puntos medios de los grupos también se muestran automáticamente. Hay otros argumentos que básicamente se encargan de crear y modificar pequeños detalles en cuanto a los colores como, por ejemplo: al colorear un grupo de datos o individuos por grupos, que se pueden representar como puntos, triángulos, cuadrados, flechas, etc, los cuales tiene asignados códigos específicos para su visualización. En cuanto al tamaño, existen diferentes argumentos de acuerdo a las necesidades como, por ejemplo: si se desea introducir un nuevo tema, es preciso, el uso de una letra de mayor grosor. Por otra parte, se puede usar la función funciónfviz_cos2() para generar diferentes gráficos de barras que estén asociadas a los individuos en el mapa dado, esto mediante el código (cos2).

Al momento de visualizar e interpretar gráficos es preciso tener en cuenta los siguientes aspectos: las dimensiones, las cuales se pueden personalizar; estas pueden estar en 1, 2 o 3 dimensiones para representar ya sean variables o individuos. La personalización de gráficos también es una opción, la cual permite construir un gráfico de acuerdo a los intereses específicos del creador y que generalmente se desarrollan con las siguientes variables fviz_pca_ind() y fviz_pca_var(). La línea de ejes personalizadas pueden mostrarse cómo punteadas, en negro, en blanco, entre otras opciones. El tema de los gráficos también puede ser modificado con códigos personalizados.

Otro concepto muy importante que se describe en el texto es el Biplot que hace referencia a una representación gráfica que se puede encontrar en 2 o 3 dimensiones, además, el número de individuos o de variables debe ser pequeño para que los gráficos puedan visualizarse correctamente, aquí se tiene en cuenta los códigos y argumentos mencionados anteriormente sobre el color y las etiquetas.

Luego de entender la visualización e interpretación, es importante tener en cuenta los elementos suplementarios los cuales presentan coordenadas predecibles utilizando la información proporcionada por el análisis de componentes principales realizado en variables e individuos activos. Estas variables e individuos serán especificadas a partir de la función PCA, esta la representaremos de la siguiente manera: PCA(X,ind.sup =NULO, quanti.sup =NULO,cal.sup =NULO,gráfico =CIERTO) En esta función cabe resaltar que X es un marco de datos, ind.sup un vector numérico que especifica los índices de los individuos suplementarios y quanti.sup especifica los índices de las variables cuantitativas y cualitativas, es decir, estos términos sirven de modo que indican los individuos respecto a su función y de esta manera catalogarlos conforme a lo que se requiere.

Ahora es necesario señalar las variables cuantitativas, cualitativas y los individuos. Estos proporcionarán un mayor enfoque en cuanto a los elementos suplementarios. En primer lugar, a diferencia de las variables cuantitativas, las variables cualitativas pueden distinguir a los individuos dentro de un grupo. Esto hace que los datos sean más importantes ya que son más fáciles de interpretar y reflejan métodos de investigación que definen mejor a los individuos. Para colorear un individuo de acuerdo con una variable cualitativa, se requiere el argumento ‘vestido’ para especificar el índice de la variable cualitativa. Con base en lo anterior, el argumento proviene del paquete FactoMineR que significa “vestir” en inglés.

El siguiente se llama el filtrado de resultados, esta parte se refiere a que en caso de que haya un gran número de individuos y variables, es posible visualizar solo algunos de ellos usando los argumentos “seleccionar.ind” y “seleccionar.var” debido a que se encuentran muchos individuos y es necesario seleccionar a los más destacados para poder graficar. Posteriormente, se deberá exportar gráficos a archivos PDF/PNG. En esta sección es útil la función exportación en el paquete ggpubr puesto que nos permite exportar parcelas individuales a un archivo ya sea PDF o PNG. Además, puede organizar los gráficos antes de exportarlos y de esta manera comprender la información de una forma visible. En conclusión, es evidente que este análisis de componentes principales requiere de una serie de pasos para poder realizarlo y así dar a entender el significado de este gran número de variables e individuos. Otro aspecto que facilitó este tema fue la descripción de cómo realizar e interpretar el análisis de los componentes ya que es una técnica utilizada para describir un conjunto de datos en términos de nuevas variables no correlacionadas.