INTRODUCCIÓN

El Principal Component Analysis (PCA) es una técnica utilizada para resumir y visualizar información en conjuntos de datos con múltiples variables interrelacionadas. Permite reducir los datos a través de la creación de componentes principales que capturan la mayor variación en los datos. Con PCA, es posible representar gráficamente conjuntos de datos multivariados en dos o tres dimensiones, facilitando su interpretación, explicamos tambien cómo calcularlo y visualizarlo, y se muestra cómo identificar las variables más importantes que explican las variaciones en los datos.

Funciones en R para realizar PCA

Varias funciones de diferentes paquetes están disponibles en R para computación PCA:

  1. prcomp() and princomp() del paquete base de R

  2. PCA() del paquete FactoMineR

Independientemente de la función que decida utilizar, puede extraer y visualizar fácilmente los resultados de PCA utilizando el paquete factoextra. Aquí, usaremos los dos paquetes FactoMineR (para el análisis) y factoextra (para la visualización basada en ggplot2).

Cargamos los datos de la temporada regular NBA 2023-24

dat<-read.csv("nba-2023-24.csv",header=T, sep =";")

head(dat)
##            EQUIPO PJ PG PP   PTS  AST PBAL ROB BLO
## 1  Boston Celtics 16 14  2 110.7 23.9 11.6 6.5 5.6
## 2          Dallas 19 12  7 106.4 21.6 12.9 6.4 5.7
## 3        Oklahoma 10  6  4 105.7 23.1 11.2 7.8 6.2
## 4     Dender Nugg 12  7  5 102.2 24.9 12.0 6.4 4.3
## 5       Minnesota 16  9  7 107.5 23.9 12.2 7.3 4.6
## 6 New York Knicks 13  7  6 109.9 22.5 11.2 5.7 5.4
#View(dat)

Analisis exploratorio de los datos

Realizamos un analisis exploratorio para observar correlaciones entre las variables a estudiar

cor<-cor(dat[,2:9])
corrplot(cor, tl.col = "gray2",tl.cex=0.7)

pairs.panels(cor)

corrplot.mixed(cor,tl.pos = "lt", diag = "l")

Estandarizacion de las variables

boxplot(dat[,2:9])

dat_sta<-scale(dat[,2:9])

boxplot(dat_sta)

Cabe aclarar que si utilizamos la funcion PCA de FactorMiner no es necesario estandarizar, lo hace internamente.

Realicemos el PCA

pca_nba<-PCA(dat, ncp = 5, graph = TRUE,quali.sup = 1)

pca_nba# Permite mostrar el contenido del objeto PCA
## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 16 individuals, described by 9 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 "$quali.sup"        "results for the supplementary categorical variables"
## 12 "$quali.sup$coord"  "coord. for the supplementary categories"            
## 13 "$quali.sup$v.test" "v-test of the supplementary categories"             
## 14 "$call"             "summary statistics"                                 
## 15 "$call$centre"      "mean of the variables"                              
## 16 "$call$ecart.type"  "standard error of the variables"                    
## 17 "$call$row.w"       "weights for the individuals"                        
## 18 "$call$col.w"       "weights for the variables"
  1. scale.unit es un valor lógico. Si es VERDADERO
  2. ncp: número de dimensiones mantenidas en los resultados finales.
  3. graph: un valor lógico. Si es VERDADERO, se muestra un gráfico.
  4. quali.sup : Permite realizar el PCA incluyendo las variables cualitativas

Visualizacion e interpretacion

Usaremos el paquete factoextra para ayudar en la interpretación de PCA, Independientemente de la función que se decida utilizar podemos extraer y visualizar fácilmente los resultados de PCA usando las funciones del paquete factoextra. Estas funciones son:

get_eigenvalue(): la cual extrae los valores propios/varianzas de los componentes principales

fviz_ eig(): visualizamos los valores propios

getpca_ind(), getpca_var(): extraemos los resultados para individuos y variables , respectivamente.

fviz_pca_ind(), fviz_pca_var(): Visualiza los resultados individuos y respectivamente.

fviz_pca_biplot(): Realiza un biplot de individuos y variables.

Eigenvalues(valores propios) / Varianza

Los valores propios miden la cantidad de variación retenida por cada componente principal. Los valores propios son grandes para las primeras PC y pequeños para las PC posteriores. En otras palabras, las primeras PC corresponden a las direcciones con la máxima cantidad de variación en el conjunto de datos.

Para determinar el número de componentes principales a considerar, examinamos los valores propios y la proporción de varianza retenida por cada PC. La proporción de varianza indica cuánta información se conserva al considerar cada componente principal.

podemos visualizar esto con la funcion get_eigenvalue

get_eigenvalue(pca_nba) #Permite observar la calidad del resultado(maxima resolucion que resulta)
##         eigenvalue variance.percent cumulative.variance.percent
## Dim.1 3.807296e+00     4.759121e+01                    47.59121
## Dim.2 1.879081e+00     2.348851e+01                    71.07972
## Dim.3 1.014212e+00     1.267766e+01                    83.75737
## Dim.4 6.039382e-01     7.549227e+00                    91.30660
## Dim.5 3.346316e-01     4.182895e+00                    95.48949
## Dim.6 1.850562e-01     2.313202e+00                    97.80270
## Dim.7 1.757843e-01     2.197304e+00                   100.00000
## Dim.8 4.123655e-32     5.154569e-31                   100.00000
pca_nba$eig # Otra alternativa para observar la calidad
##          eigenvalue percentage of variance cumulative percentage of variance
## comp 1 3.807296e+00           4.759121e+01                          47.59121
## comp 2 1.879081e+00           2.348851e+01                          71.07972
## comp 3 1.014212e+00           1.267766e+01                          83.75737
## comp 4 6.039382e-01           7.549227e+00                          91.30660
## comp 5 3.346316e-01           4.182895e+00                          95.48949
## comp 6 1.850562e-01           2.313202e+00                          97.80270
## comp 7 1.757843e-01           2.197304e+00                         100.00000
## comp 8 4.123655e-32           5.154569e-31                         100.00000

La suma de todos los valores propios da una varianza total de 8, y podemos ver la variación explicada por cada valor propio en la segunda columna, así funcio; Por ejemplo, 3,80 dividido entre es igual a 0,475 o sea, alrededor del 47,5 % de la variación se explica por este primer valor propio. El porcentaje acumulado explicado se obtiene sumando las sucesivas proporciones de variación explicadas para obtener el total acumulado. Por ejemplo, 47,59 % más 23,48 % es igual a 71,07 %, y así sucesivamente.

podemos ver los valores propios ordenados de mayor a menor con fviz_eig

fviz_eig(pca_nba, addlabels = TRUE, ylim = c(0, 60))

GRAFICOS DE LAS VARIABLES

Extraemos los resultados de una salida PCA con la función get_pca_var()

var<-get_pca_var(pca_nba)
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"

Los componentes de la función get_pca_var() se pueden usar en la gráfica de variables:

  1. var$coord: Coordenadas de variables para crear un diagrama de dispersión
  2. var$cos2: Representa la calidad de representación de las variables en el mapa de factores.
  3. var$contrib: Contiene las contribuciones (en porcentaje) de las variables a los componentes principales
head(var$coord)
##           Dim.1      Dim.2       Dim.3       Dim.4        Dim.5
## PJ    0.8634418  0.3497958  0.21855417 -0.28988367 -0.005184004
## PG    0.8053515  0.3670255 -0.04182925 -0.45249769  0.094783474
## PP    0.5572819  0.1267503  0.73781950  0.25526846 -0.245321593
## PTS   0.8279140 -0.0924841 -0.37094766  0.25084757 -0.055699591
## AST   0.8022809 -0.2065700  0.11953594  0.31822079  0.429945122
## PBAL -0.6520685  0.6034593  0.28780555  0.09091747  0.143352010
head(pca_nba$var$coord)
##           Dim.1      Dim.2       Dim.3       Dim.4        Dim.5
## PJ    0.8634418  0.3497958  0.21855417 -0.28988367 -0.005184004
## PG    0.8053515  0.3670255 -0.04182925 -0.45249769  0.094783474
## PP    0.5572819  0.1267503  0.73781950  0.25526846 -0.245321593
## PTS   0.8279140 -0.0924841 -0.37094766  0.25084757 -0.055699591
## AST   0.8022809 -0.2065700  0.11953594  0.31822079  0.429945122
## PBAL -0.6520685  0.6034593  0.28780555  0.09091747  0.143352010
head(var$cor)
##           Dim.1      Dim.2       Dim.3       Dim.4        Dim.5
## PJ    0.8634418  0.3497958  0.21855417 -0.28988367 -0.005184004
## PG    0.8053515  0.3670255 -0.04182925 -0.45249769  0.094783474
## PP    0.5572819  0.1267503  0.73781950  0.25526846 -0.245321593
## PTS   0.8279140 -0.0924841 -0.37094766  0.25084757 -0.055699591
## AST   0.8022809 -0.2065700  0.11953594  0.31822079  0.429945122
## PBAL -0.6520685  0.6034593  0.28780555  0.09091747  0.143352010
head(pca_nba$var$cor)
##           Dim.1      Dim.2       Dim.3       Dim.4        Dim.5
## PJ    0.8634418  0.3497958  0.21855417 -0.28988367 -0.005184004
## PG    0.8053515  0.3670255 -0.04182925 -0.45249769  0.094783474
## PP    0.5572819  0.1267503  0.73781950  0.25526846 -0.245321593
## PTS   0.8279140 -0.0924841 -0.37094766  0.25084757 -0.055699591
## AST   0.8022809 -0.2065700  0.11953594  0.31822079  0.429945122
## PBAL -0.6520685  0.6034593  0.28780555  0.09091747  0.143352010
head(var$cos2)
##          Dim.1       Dim.2       Dim.3       Dim.4        Dim.5
## PJ   0.7455317 0.122357067 0.047765925 0.084032543 0.0000268739
## PG   0.6485910 0.134707734 0.001749687 0.204754164 0.0089839070
## PP   0.3105631 0.016065638 0.544377619 0.065161987 0.0601826839
## PTS  0.6854416 0.008553309 0.137602165 0.062924503 0.0031024445
## AST  0.6436547 0.042671162 0.014288840 0.101264471 0.1848528076
## PBAL 0.4251933 0.364163152 0.082832032 0.008265986 0.0205497987
head(pca_nba$var$cos2)
##          Dim.1       Dim.2       Dim.3       Dim.4        Dim.5
## PJ   0.7455317 0.122357067 0.047765925 0.084032543 0.0000268739
## PG   0.6485910 0.134707734 0.001749687 0.204754164 0.0089839070
## PP   0.3105631 0.016065638 0.544377619 0.065161987 0.0601826839
## PTS  0.6854416 0.008553309 0.137602165 0.062924503 0.0031024445
## AST  0.6436547 0.042671162 0.014288840 0.101264471 0.1848528076
## PBAL 0.4251933 0.364163152 0.082832032 0.008265986 0.0205497987
head(var$contrib)
##         Dim.1      Dim.2      Dim.3     Dim.4        Dim.5
## PJ   19.58166  6.5115382  4.7096566 13.914097  0.008030891
## PG   17.03547  7.1688099  0.1725168 33.903166  2.684715964
## PP    8.15705  0.8549732 53.6749091 10.789513 17.984760207
## PTS  18.00337  0.4551858 13.5673904 10.419030  0.927122491
## AST  16.90582  2.2708529  1.4088606 16.767357 55.240697160
## PBAL 11.16785 19.3798554  8.1671281  1.368681  6.141022253
head(pca_nba$var$contrib)
##         Dim.1      Dim.2      Dim.3     Dim.4        Dim.5
## PJ   19.58166  6.5115382  4.7096566 13.914097  0.008030891
## PG   17.03547  7.1688099  0.1725168 33.903166  2.684715964
## PP    8.15705  0.8549732 53.6749091 10.789513 17.984760207
## PTS  18.00337  0.4551858 13.5673904 10.419030  0.927122491
## AST  16.90582  2.2708529  1.4088606 16.767357 55.240697160
## PBAL 11.16785 19.3798554  8.1671281  1.368681  6.141022253

Ahora describiremos cómo visualizar variables y sacar conclusiones sobre sus correlaciones.

CIRCULO DE CORRELACIÓN

La correlación entre una variable y un componente principal (PC) se utiliza como las coordenadas de la variable en el PC. La representación de las variables difiere de la gráfica de las observaciones: las observaciones están representadas por sus proyecciones, pero las variables están representadas por sus correlaciones.

head(var$coord, 8)
##           Dim.1      Dim.2       Dim.3       Dim.4        Dim.5
## PJ    0.8634418  0.3497958  0.21855417 -0.28988367 -0.005184004
## PG    0.8053515  0.3670255 -0.04182925 -0.45249769  0.094783474
## PP    0.5572819  0.1267503  0.73781950  0.25526846 -0.245321593
## PTS   0.8279140 -0.0924841 -0.37094766  0.25084757 -0.055699591
## AST   0.8022809 -0.2065700  0.11953594  0.31822079  0.429945122
## PBAL -0.6520685  0.6034593  0.28780555  0.09091747  0.143352010
## ROB  -0.3930281  0.8495771 -0.05320597  0.11107937  0.146327788
## BLO   0.4402841  0.6846762 -0.42751061  0.25533489 -0.188470753
fviz_pca_var(pca_nba,col.var = "black")

Este gráfico se conoce como gráficos de correlación de variables y muestra las relaciones entre todas las variables, para interpretarlo mejor tenemos lo siguiente:

  1. Las variables correlacionadas positivamente se agrupan.

  2. Las variables correlacionadas negativamente se colocan en los cuadrantes opuestos a los positivos

  3. La distancia entre las variables y el origen nos dice la calidad de las variables en el mapa de factores.

CALIDAD DE LA REPRESENTACIÓN

La calidad de representación de las variables en el mapa de factores se llama cos2

head(var$cos2, 8)
##          Dim.1       Dim.2       Dim.3       Dim.4        Dim.5
## PJ   0.7455317 0.122357067 0.047765925 0.084032543 0.0000268739
## PG   0.6485910 0.134707734 0.001749687 0.204754164 0.0089839070
## PP   0.3105631 0.016065638 0.544377619 0.065161987 0.0601826839
## PTS  0.6854416 0.008553309 0.137602165 0.062924503 0.0031024445
## AST  0.6436547 0.042671162 0.014288840 0.101264471 0.1848528076
## PBAL 0.4251933 0.364163152 0.082832032 0.008265986 0.0205497987
## ROB  0.1544711 0.721781288 0.002830876 0.012338626 0.0214118215
## BLO  0.1938501 0.468781503 0.182765323 0.065195904 0.0355212247

Visualizamos el cos2 de las variables en todas las dimensiones usando el paquete corrplot:

corrplot(var$cos2, is.corr=T)

Tambien podemos colorear las variables del circulo de correlación usando col.var = “cos2”.

Los valores de cos2 se utilizan para estimar la calidad de la representación, Cuanto más cerca está una variable del círculo de correlaciones, mejor se representa en el mapa de factores.

fviz_pca_var(pca_nba, col.var = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), repel =T# Avoid text overLapping 
) 

CONTRIBUCIÓN DE LAS VARIABLES A LAS COMPONENTES

Las contribuciones de las variables para explicar un componente principal determinado se expresan en porcentaje, estas variables están correlacionadas con PCl (Dim.1) y PC2 (Dim.2), cuanto mas grandeen porcentaje, mas contribuye la variables al componente.

head(var$contrib, 8)
##          Dim.1      Dim.2      Dim.3     Dim.4        Dim.5
## PJ   19.581655  6.5115382  4.7096566 13.914097  0.008030891
## PG   17.035473  7.1688099  0.1725168 33.903166  2.684715964
## PP    8.157050  0.8549732 53.6749091 10.789513 17.984760207
## PTS  18.003369  0.4551858 13.5673904 10.419030  0.927122491
## AST  16.905819  2.2708529  1.4088606 16.767357 55.240697160
## PBAL 11.167853 19.3798554  8.1671281  1.368681  6.141022253
## ROB   4.057238 38.4114013  0.2791206  2.043028  6.398625812
## BLO   5.091542 24.9473833 18.0204178 10.795129 10.615025222

Con la función corrplot resaltamos las variables que mas contribuyen.

corrplot(var$contrib, is.corr = F)

GRAFICOS DE INDIVIDUOS

ind<-get_pca_ind(pca_nba)
head(ind$coord)
##       Dim.1      Dim.2      Dim.3        Dim.4       Dim.5
## 1 1.9766508  0.7726267 -1.9060286 -1.526938417  0.95792573
## 2 2.0186365  1.5561826  0.7001610 -0.994471826 -0.83731406
## 3 0.4761687  1.0466179 -1.3245474  0.356224853  0.08377742
## 4 0.7330846 -0.1867719  0.3281672 -0.275232762  0.74735976
## 5 1.6568413  0.9450743  0.8740965 -0.154725381  0.11056175
## 6 1.5917756 -0.1626146 -0.2309605 -0.005780346 -0.88614748
head(pca_nba$ind$coord)
##       Dim.1      Dim.2      Dim.3        Dim.4       Dim.5
## 1 1.9766508  0.7726267 -1.9060286 -1.526938417  0.95792573
## 2 2.0186365  1.5561826  0.7001610 -0.994471826 -0.83731406
## 3 0.4761687  1.0466179 -1.3245474  0.356224853  0.08377742
## 4 0.7330846 -0.1867719  0.3281672 -0.275232762  0.74735976
## 5 1.6568413  0.9450743  0.8740965 -0.154725381  0.11056175
## 6 1.5917756 -0.1626146 -0.2309605 -0.005780346 -0.88614748
head(ind$cos2)
##        Dim.1       Dim.2      Dim.3        Dim.4       Dim.5
## 1 0.33893019 0.051783304 0.31514407 2.022523e-01 0.079600172
## 2 0.45936518 0.273000161 0.05526340 1.114877e-01 0.079034841
## 3 0.05317402 0.256894049 0.41144591 2.975954e-02 0.001646007
## 4 0.35466460 0.023021459 0.07107225 4.999308e-02 0.368611641
## 5 0.54504247 0.177337420 0.15170060 4.753260e-03 0.002427048
## 6 0.73820572 0.007704291 0.01554136 9.734672e-06 0.228784046
head(pca_nba$ind$cos2)
##        Dim.1       Dim.2      Dim.3        Dim.4       Dim.5
## 1 0.33893019 0.051783304 0.31514407 2.022523e-01 0.079600172
## 2 0.45936518 0.273000161 0.05526340 1.114877e-01 0.079034841
## 3 0.05317402 0.256894049 0.41144591 2.975954e-02 0.001646007
## 4 0.35466460 0.023021459 0.07107225 4.999308e-02 0.368611641
## 5 0.54504247 0.177337420 0.15170060 4.753260e-03 0.002427048
## 6 0.73820572 0.007704291 0.01554136 9.734672e-06 0.228784046
head(ind$contrib)
##       Dim.1      Dim.2      Dim.3        Dim.4      Dim.5
## 1 6.4139157 1.98551870 22.3877212 2.412851e+01 17.1386572
## 2 6.6892832 8.05481631  3.0209732 1.023464e+01 13.0945291
## 3 0.3722075 3.64343370 10.8115036 1.313215e+00  0.1310893
## 4 0.8822091 0.11602665  0.6636537 7.839490e-01 10.4321192
## 5 4.5063526 2.97075231  4.7083623 2.477483e-01  0.2283090
## 6 4.1593647 0.08795358  0.3287201 3.457762e-04 14.6664541
head(pca_nba$ind$contrib)
##       Dim.1      Dim.2      Dim.3        Dim.4      Dim.5
## 1 6.4139157 1.98551870 22.3877212 2.412851e+01 17.1386572
## 2 6.6892832 8.05481631  3.0209732 1.023464e+01 13.0945291
## 3 0.3722075 3.64343370 10.8115036 1.313215e+00  0.1310893
## 4 0.8822091 0.11602665  0.6636537 7.839490e-01 10.4321192
## 5 4.5063526 2.97075231  4.7083623 2.477483e-01  0.2283090
## 6 4.1593647 0.08795358  0.3287201 3.457762e-04 14.6664541

Grafico de Barras para observar el grado asosiacion de cada variable con las componentes

ag<-pca_nba$var$cor

ag<-data.frame(ag)
ag
##           Dim.1      Dim.2       Dim.3       Dim.4        Dim.5
## PJ    0.8634418  0.3497958  0.21855417 -0.28988367 -0.005184004
## PG    0.8053515  0.3670255 -0.04182925 -0.45249769  0.094783474
## PP    0.5572819  0.1267503  0.73781950  0.25526846 -0.245321593
## PTS   0.8279140 -0.0924841 -0.37094766  0.25084757 -0.055699591
## AST   0.8022809 -0.2065700  0.11953594  0.31822079  0.429945122
## PBAL -0.6520685  0.6034593  0.28780555  0.09091747  0.143352010
## ROB  -0.3930281  0.8495771 -0.05320597  0.11107937  0.146327788
## BLO   0.4402841  0.6846762 -0.42751061  0.25533489 -0.188470753
ag$dim<-rep(0,8)

for(i in 1:8){ag$dim[i] <- which.max(ag[i,-6])}

ag
##           Dim.1      Dim.2       Dim.3       Dim.4        Dim.5 dim
## PJ    0.8634418  0.3497958  0.21855417 -0.28988367 -0.005184004   1
## PG    0.8053515  0.3670255 -0.04182925 -0.45249769  0.094783474   1
## PP    0.5572819  0.1267503  0.73781950  0.25526846 -0.245321593   3
## PTS   0.8279140 -0.0924841 -0.37094766  0.25084757 -0.055699591   1
## AST   0.8022809 -0.2065700  0.11953594  0.31822079  0.429945122   1
## PBAL -0.6520685  0.6034593  0.28780555  0.09091747  0.143352010   2
## ROB  -0.3930281  0.8495771 -0.05320597  0.11107937  0.146327788   2
## BLO   0.4402841  0.6846762 -0.42751061  0.25533489 -0.188470753   2
ag$variables<-rownames(ag)

ag$cor.max<-rep(0,8)

for(i in 1:8){ag$cor.max[i] <- max(ag[i,-c(6,7)])}
ag
##           Dim.1      Dim.2       Dim.3       Dim.4        Dim.5 dim variables
## PJ    0.8634418  0.3497958  0.21855417 -0.28988367 -0.005184004   1        PJ
## PG    0.8053515  0.3670255 -0.04182925 -0.45249769  0.094783474   1        PG
## PP    0.5572819  0.1267503  0.73781950  0.25526846 -0.245321593   3        PP
## PTS   0.8279140 -0.0924841 -0.37094766  0.25084757 -0.055699591   1       PTS
## AST   0.8022809 -0.2065700  0.11953594  0.31822079  0.429945122   1       AST
## PBAL -0.6520685  0.6034593  0.28780555  0.09091747  0.143352010   2      PBAL
## ROB  -0.3930281  0.8495771 -0.05320597  0.11107937  0.146327788   2       ROB
## BLO   0.4402841  0.6846762 -0.42751061  0.25533489 -0.188470753   2       BLO
##        cor.max
## PJ   0.8634418
## PG   0.8053515
## PP   0.7378195
## PTS  0.8279140
## AST  0.8022809
## PBAL 0.6034593
## ROB  0.8495771
## BLO  0.6846762
# grafico de barras
ggplot(ag,aes(x=reorder(variables,-dim),y=cor.max, fill=as.factor(dim)))+
  geom_bar(stat="identity")+coord_flip()

Plot: Calidad y constribucion

Usamos la función fviz_pca_ind() para producir el gráfico de individuos

fviz_pca_ind(pca_nba)

Podemos colorearlo tambien, teniendo en cuenta que los individuos similares se agrupan en el grafico:

fviz_pca_ind(pca_nba, col.ind = "cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
repel =T #Avoid text overLapping (sLow if many points) 
)

fviz_pca_ind(pca_nba, col.ind = "cos2",pointsize = "cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
repel = TRUE# Avoid text overlapping (slow if many points) 
)

BIPLOT CON INDIVIDUOS Y VARIABLES

Para hacer el biplot con individuos y variables usamos el siguiente codigo:

fviz_pca_biplot(pca_nba, repel = TRUE,
                col.var = "#2E9FDF", # VariabLes coLor 
                col.ind = "#696969" # IndividuaLs coLor 
                )

##Interpretacion

  1. Un individuo que está del mismo lado de una variable dada tiene un valor alto

  2. Un individuo que está en el lado opuesto de una determinada variable tiene un valor bajo