ACP

El análisis de componentes principales nos permite resumir y visualizar información en un conjunto de datos que contiene individuos/observaciones descritas por múltiples variables cuantitativas intercorrelacionadas. Cada variable podría considerarse como una dimensión diferente. Si tiene más de 3 variables en sus conjuntos de datos, podría ser muy difícil visualizar un hiperespacio multidimensional. La información de un conjunto de datos dado corresponde a la variación total que contiene. El análisis de componentes principales se utiliza para extraer la información importante de un conjunto variable multivariante y para expresar esta información como un conjunto de algunas variables nuevas llamadas componentes principales. Estas nuevas variables corresponden a una combinación lineal de las originales. El número de componentes principales es menor o igual al número de variables originales.

El objetivo de PCA es identificar direcciones (o componentes principales) a lo largo de las cuales la variación en los datos es máxima. En otras palabras, PCA reduce la dimensionalidad de datos multivariado a dos o tres componentes principales, que se pueden visualizar gráficamente, con mínima pérdida de información.

Data_Fire_unidas <- read.csv(file = 'Data_Fire_unidas.csv')


#kable(head(Data_Fire_unidas),format = "markdown")
Data_ <- read.csv(file = 'Data_Fire_unidas.csv')

newdata <- Data_[c(3:28)]
head(newdata)
##         ARVI      AVI         BAI        BSI      CIre        EVI      FDI
## 1 0.10219266   0.0000 -0.11571252 0.14634008 0.2009267 -0.7471720 1.871909
## 2 0.11750667   0.0000 -0.07481187 0.08229795 0.2230737 -0.3493421 1.708570
## 3 0.12575744   0.0000 -0.15941040 0.18292696 0.2516362 -0.7031531 2.258794
## 4 0.11464263 265.4844 -0.16981339 0.15153002 0.2234783 -0.2963775 2.209118
## 5 0.09335939   0.0000 -0.09949226 0.12711903 0.1942764 -0.5049842 1.746442
## 6 0.08973140 140.4836 -0.18943445 0.18089545 0.1551821 -0.2396145 2.230337
##          GCI      GNDVI       HI       IBI      MIRBI      MSI      MSRre
## 1 -0.3472522 0.16091116 1.131201 0.1904775 -1819.8647 1.740368 0.14665375
## 2 -0.4826683 0.10985549 1.095897 0.1471637  -985.8863 1.557228 0.14062977
## 3 -0.3512111 0.16798181 1.112619 0.2218089 -1629.6715 1.998810 0.17486607
## 4 -0.5099901 0.09488532 1.041252 0.2107616  -381.9945 1.924265 0.13174725
## 5 -0.3931288 0.13943820 1.124168 0.1800244 -1588.4424 1.673421 0.11800383
## 6 -0.4376636 0.08051249 1.014001 0.2368382   126.1502 2.076375 0.06178939
##         NBRI       NDFI         NDGI       NDMI       NDSI       NDVI
## 1 -0.2113695 -1.0000000 -0.022962759 -0.2693445 -0.4125476 0.13849322
## 2 -0.1711324 -1.0000000  0.014031514 -0.2151028 -0.3178830 0.12350996
## 3 -0.2790589 -0.9932787 -0.009065579 -0.3273173 -0.4703296 0.15899796
## 4 -0.2974717 -1.0000000  0.019104515 -0.3156972 -0.3986431 0.11379089
## 5 -0.1959311 -1.0000000 -0.023123551 -0.2514485 -0.3777326 0.11673274
## 6 -0.3433263 -1.0000000  0.002715569 -0.3494201 -0.4181124 0.08321009
##          NDWI      NIRv      SAVI        SIPI clase classification
## 1 -0.16091116 64.739189 0.2076858  0.57327543     1              1
## 2 -0.10985549 44.579264 0.1852110  0.02313329     1              1
## 3 -0.16798181 86.485731 0.2384313  0.45326873     1              1
## 4 -0.09488532 34.792058 0.1706397 -0.03467232     1              1
## 5 -0.13943820 39.039921 0.1750527  0.43213028     1              1
## 6 -0.08051249  3.176455 0.1247809 -0.17383865     1              1
newdata.escalada<- scale(newdata,center=T,scale=T)
dataConCate <- Data_[c(3:26,32)]
head(dataConCate)
##         ARVI      AVI         BAI        BSI      CIre        EVI      FDI
## 1 0.10219266   0.0000 -0.11571252 0.14634008 0.2009267 -0.7471720 1.871909
## 2 0.11750667   0.0000 -0.07481187 0.08229795 0.2230737 -0.3493421 1.708570
## 3 0.12575744   0.0000 -0.15941040 0.18292696 0.2516362 -0.7031531 2.258794
## 4 0.11464263 265.4844 -0.16981339 0.15153002 0.2234783 -0.2963775 2.209118
## 5 0.09335939   0.0000 -0.09949226 0.12711903 0.1942764 -0.5049842 1.746442
## 6 0.08973140 140.4836 -0.18943445 0.18089545 0.1551821 -0.2396145 2.230337
##          GCI      GNDVI       HI       IBI      MIRBI      MSI      MSRre
## 1 -0.3472522 0.16091116 1.131201 0.1904775 -1819.8647 1.740368 0.14665375
## 2 -0.4826683 0.10985549 1.095897 0.1471637  -985.8863 1.557228 0.14062977
## 3 -0.3512111 0.16798181 1.112619 0.2218089 -1629.6715 1.998810 0.17486607
## 4 -0.5099901 0.09488532 1.041252 0.2107616  -381.9945 1.924265 0.13174725
## 5 -0.3931288 0.13943820 1.124168 0.1800244 -1588.4424 1.673421 0.11800383
## 6 -0.4376636 0.08051249 1.014001 0.2368382   126.1502 2.076375 0.06178939
##         NBRI       NDFI         NDGI       NDMI       NDSI       NDVI
## 1 -0.2113695 -1.0000000 -0.022962759 -0.2693445 -0.4125476 0.13849322
## 2 -0.1711324 -1.0000000  0.014031514 -0.2151028 -0.3178830 0.12350996
## 3 -0.2790589 -0.9932787 -0.009065579 -0.3273173 -0.4703296 0.15899796
## 4 -0.2974717 -1.0000000  0.019104515 -0.3156972 -0.3986431 0.11379089
## 5 -0.1959311 -1.0000000 -0.023123551 -0.2514485 -0.3777326 0.11673274
## 6 -0.3433263 -1.0000000  0.002715569 -0.3494201 -0.4181124 0.08321009
##          NDWI      NIRv      SAVI        SIPI Combinaciones
## 1 -0.16091116 64.739189 0.2076858  0.57327543 Fuego_Acierto
## 2 -0.10985549 44.579264 0.1852110  0.02313329 Fuego_Acierto
## 3 -0.16798181 86.485731 0.2384313  0.45326873 Fuego_Acierto
## 4 -0.09488532 34.792058 0.1706397 -0.03467232 Fuego_Acierto
## 5 -0.13943820 39.039921 0.1750527  0.43213028 Fuego_Acierto
## 6 -0.08051249  3.176455 0.1247809 -0.17383865 Fuego_Acierto
newdata <- Data_[c(3:26)]
res.pca <- PCA(newdata, scale.unit = TRUE, ncp = 5, graph = FALSE)
res.pca
## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 1524 individuals, described by 24 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$eig
##           eigenvalue percentage of variance cumulative percentage of variance
## comp 1  9.765402e+00           4.068917e+01                          40.68917
## comp 2  7.191640e+00           2.996517e+01                          70.65434
## comp 3  2.336926e+00           9.737190e+00                          80.39153
## comp 4  1.035897e+00           4.316236e+00                          84.70777
## comp 5  9.594772e-01           3.997822e+00                          88.70559
## comp 6  7.525661e-01           3.135692e+00                          91.84128
## comp 7  5.965553e-01           2.485647e+00                          94.32693
## comp 8  4.281626e-01           1.784011e+00                          96.11094
## comp 9  3.472017e-01           1.446674e+00                          97.55761
## comp 10 2.088567e-01           8.702362e-01                          98.42785
## comp 11 1.630496e-01           6.793732e-01                          99.10722
## comp 12 7.745243e-02           3.227185e-01                          99.42994
## comp 13 6.001295e-02           2.500539e-01                          99.67999
## comp 14 3.430404e-02           1.429335e-01                          99.82293
## comp 15 1.277486e-02           5.322859e-02                          99.87616
## comp 16 1.220502e-02           5.085423e-02                          99.92701
## comp 17 8.101957e-03           3.375815e-02                          99.96077
## comp 18 4.819515e-03           2.008131e-02                          99.98085
## comp 19 2.968093e-03           1.236706e-02                          99.99322
## comp 20 1.063748e-03           4.432284e-03                          99.99765
## comp 21 3.889581e-04           1.620659e-03                          99.99927
## comp 22 1.752377e-04           7.301569e-04                         100.00000
## comp 23 6.359776e-10           2.649907e-09                         100.00000
## comp 24 5.483404e-32           2.284752e-31                         100.00000

ncp: número de dimensiones mantenidas en los resultados finales.

Los valores propios miden la cantidad de variación retenida por cada componente principal.

Los valores propios son grandes para los primeros CCPP y pequeños para las siguientes. Es decir, los primeros CCPP corresponden a las direcciones con la cantidad máxima de variación en el conjunto de datos. Examinamos los valores propios para determinar el número de componentes principales que se deben considerar. Los valores propios y la proporción de varianzas (es decir, información) retenidas por los componentes principales se puede extraer usando la función get_eigenvalue() del paquete factoextra.

head(res.pca$x)[,1:4]
## NULL
eig.val <- get_eigenvalue(res.pca)
eig.val
##          eigenvalue variance.percent cumulative.variance.percent
## Dim.1  9.765402e+00     4.068917e+01                    40.68917
## Dim.2  7.191640e+00     2.996517e+01                    70.65434
## Dim.3  2.336926e+00     9.737190e+00                    80.39153
## Dim.4  1.035897e+00     4.316236e+00                    84.70777
## Dim.5  9.594772e-01     3.997822e+00                    88.70559
## Dim.6  7.525661e-01     3.135692e+00                    91.84128
## Dim.7  5.965553e-01     2.485647e+00                    94.32693
## Dim.8  4.281626e-01     1.784011e+00                    96.11094
## Dim.9  3.472017e-01     1.446674e+00                    97.55761
## Dim.10 2.088567e-01     8.702362e-01                    98.42785
## Dim.11 1.630496e-01     6.793732e-01                    99.10722
## Dim.12 7.745243e-02     3.227185e-01                    99.42994
## Dim.13 6.001295e-02     2.500539e-01                    99.67999
## Dim.14 3.430404e-02     1.429335e-01                    99.82293
## Dim.15 1.277486e-02     5.322859e-02                    99.87616
## Dim.16 1.220502e-02     5.085423e-02                    99.92701
## Dim.17 8.101957e-03     3.375815e-02                    99.96077
## Dim.18 4.819515e-03     2.008131e-02                    99.98085
## Dim.19 2.968093e-03     1.236706e-02                    99.99322
## Dim.20 1.063748e-03     4.432284e-03                    99.99765
## Dim.21 3.889581e-04     1.620659e-03                    99.99927
## Dim.22 1.752377e-04     7.301569e-04                   100.00000
## Dim.23 6.359776e-10     2.649907e-09                   100.00000
## Dim.24 5.483404e-32     2.284752e-31                   100.00000

La proporción de variación explicada por cada valor propio se da en la segunda columna. Por ejemplo, aproximadamente el 40,68% de la variación es explicado por el primer valor propio. El porcentaje acumulado explicado se obtiene por sumando las sucesivas proporciones de variación explicadas para obtener el total acumulado. por ejemplo, 40,68917% más 29,96517% es igual a 70,65434%, y así sucesivamente. Por lo tanto, alrededor del 70,65434% de la variación se explica por los dos primeros valores propios juntos.

Scree Plot

Un método alternativo para determinar el número de componentes principales es observar un diagrama de pantalla, que es el diagrama de valores propios ordenados de mayor a menor. El número de componentes se determina en el punto, más allá del cual los valores propios restantes son todos relativamente pequeños y de tamaño comparable

fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))

Círculo de correlación

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

var <- get_pca_var(res.pca)
head(var$coord, 4)
##           Dim.1      Dim.2      Dim.3        Dim.4        Dim.5
## ARVI  0.8093303  0.3823635  0.3653033 -0.089026092  0.020872686
## AVI  -0.1384145 -0.4045017  0.7069708 -0.098392163 -0.045226859
## BAI   0.8208718 -0.3248220 -0.2700903 -0.023975778 -0.002444864
## BSI  -0.5958765  0.7570528 -0.1901736 -0.004940999  0.006605740
fviz_pca_var(res.pca, col.var = "red")

La gráfica anterior también se conoce como gráficas de correlación variable. Muestra las relaciones entre todas las variables. Se puede interpretar de la siguiente manera:

• Las variables correlacionadas positivamente se agrupan.

• Las variables correlacionadas negativamente se colocan en lados opuestos del origen de la trama (cuadrantes opuestos).

• La distancia entre variables y el origen mide la calidad de las variables en el mapa de factores. Las variables que están alejadas del origen están bien representadas en el mapa de factores.

Calidad de representación

La calidad de representación de las variables en el mapa de factores se llama cos2 (coseno cuadrado, coordenadas cuadradas). Se puede acceder al cos2 de la siguiente manera:

head(var$cos2, 4)
##           Dim.1     Dim.2      Dim.3        Dim.4        Dim.5
## ARVI 0.65501550 0.1462019 0.13344649 7.925645e-03 4.356690e-04
## AVI  0.01915857 0.1636216 0.49980775 9.681018e-03 2.045469e-03
## BAI  0.67383050 0.1055094 0.07294875 5.748379e-04 5.977359e-06
## BSI  0.35506881 0.5731290 0.03616600 2.441347e-05 4.363580e-05
library("corrplot")
## corrplot 0.84 loaded
corrplot(var$cos2, is.corr=FALSE)

También es posible crear un diagrama de barras de las variables cos2 usando la función fviz_cos2 () [en factoextra]:

fviz_cos2(res.pca, choice = "var", axes = 1:2)

Un cos2 alto indica una buena representación de la variable en el componente principal. En este caso, la variable se coloca cerca de la circunferencia del círculo de correlación.

Un cos2 bajo indica que la variable no está perfectamente representada por los PC. En este caso, la variable está cerca del centro del círculo.

Es posible colorear las variables por sus valores de cos2 usando el argumento col.var = “cos2”. Esto produce un degradado de colores. En este caso, el argumento gradient.cols se puede utilizar para proporcionar un color personalizado. Por ejemplo, gradient.cols = c (“blanco”, “azul”, “rojo”) significa:

• las variables con valores bajos de cos2 se colorearán en “blanco”

• las variables con valores de cos2 medios se colorearán en “azul”

• las variables con valores altos de cos2 se colorearán en rojo

fviz_pca_var(res.pca, col.var = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE # Avoid text overlapping
)

Contribuciones de variables a los CCPP:

Las contribuciones de las variables en la contabilidad de la variabilidad en un componente principal dado se expresan en porcentaje.

• Las variables que están correlacionadas con PC1 (es decir, Dim.1) y PC2 (es decir, Dim.2) son las más importante para explicar la variabilidad en el conjunto de datos.

• Variables que no se correlacionan con ningún PC o correlacionan con las últimas dimensiones son variables con una contribución baja y podrían eliminarse para simplificar el análisis.

La contribución de las variables se puede extraer de la siguiente manera:

head(var$contrib, 4)
##          Dim.1    Dim.2     Dim.3       Dim.4        Dim.5
## ARVI 6.7075122 2.032942  5.710344 0.765099951 0.0454069171
## AVI  0.1961882 2.275165 21.387406 0.934554371 0.2131857606
## BAI  6.9001821 1.467111  3.121569 0.055491818 0.0006229809
## BSI  3.6359878 7.969378  1.547589 0.002356748 0.0045478730
library("corrplot")
corrplot(var$contrib, is.corr=FALSE)

La función fviz_contrib () [paquete factoextra] se puede utilizar para dibujar un diagrama de barras de la variable contribuciones. Si sus datos contienen muchas variables, puede decidir mostrar solo la parte superior variables contribuyentes. El siguiente código R muestra las 10 principales variables que contribuyen a la componentes principales:

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

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

Las variables más importantes (o contribuyentes) se pueden resaltar en el siguiente diagrama de correlación:

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

Graficas de individuos

Los resultados, para individuos, se pueden extraer usando la función get_pca_ind () [del paquete factoextra]. De manera similar a get_pca_var(), la función get_pca_ind() proporciona una lista de matrices que contienen todos los resultados de los individuos (coordenadas, correlación entre variables y ejes, coseno cuadrado y contribuciones)

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"

Para acceder a los diferentes componentes:

# Coordinates of individuals
head(ind$coord)
##       Dim.1    Dim.2      Dim.3       Dim.4       Dim.5
## 1 -1.496436 3.716406 -2.0241511  0.20287511 0.008879246
## 2 -1.389287 2.508531 -1.2377027  0.01492381 0.100956012
## 3 -1.523448 4.593727 -1.6298032  0.03508128 0.080759581
## 4 -2.363526 3.316851 -0.6819374 -0.22679568 0.093833403
## 5 -1.745379 3.156521 -2.0421497  0.19930090 0.044907179
## 6 -3.177859 3.469469 -1.2430432 -0.11056751 0.060280335
# Quality of individuals
head(ind$cos2)
##        Dim.1     Dim.2      Dim.3        Dim.4        Dim.5
## 1 0.10644466 0.6565293 0.19475729 1.956435e-03 3.747659e-06
## 2 0.18477877 0.6024308 0.14665634 2.132198e-05 9.757365e-04
## 3 0.08623902 0.7841132 0.09870034 4.572980e-05 2.423463e-04
## 4 0.31107295 0.6126231 0.02589587 2.864251e-03 4.902939e-04
## 5 0.17028366 0.5569431 0.23311417 2.220302e-03 1.127262e-04
## 6 0.40086889 0.4778142 0.06133459 4.852752e-04 1.442396e-04
# Contributions of individuals
head(ind$contrib)
##        Dim.1      Dim.2      Dim.3        Dim.4        Dim.5
## 1 0.01504669 0.12601821 0.11504189 2.607091e-03 5.391784e-06
## 2 0.01296907 0.05741510 0.04301330 1.410775e-05 6.970192e-04
## 3 0.01559482 0.19253847 0.07458311 7.795600e-05 4.460345e-04
## 4 0.03753579 0.10037809 0.01305747 3.258128e-03 6.021370e-04
## 5 0.02046937 0.09090848 0.11709688 2.516037e-03 1.379151e-04
## 6 0.06785693 0.10982801 0.04338530 7.743791e-04 2.485030e-04

Plots: calidad y contribución.

pca_nci <- prcomp(newdata, scale = TRUE)

names(pca_nci)
## [1] "sdev"     "rotation" "center"   "scale"    "x"
#head(pca_nci)
colores <- function(vec){
# la función rainbow() devuelve un vector que contiene el número de colores distintos
col <- rainbow(length(unique(vec)))
return(col[as.numeric(as.factor(vec))])
}

par(mfrow = c(1,1))

# Observaciones sobre PC1 y PC2
plot(pca_nci$x[,1:2], col = colores(dataConCate$"Combinaciones"), 
     pch = 1, 
     xlab = "Z1", 
     ylab = "Z2")

Para visualizar la contribución de los individuos a los dos primeros componentes principales:

# Total contribution on PC1 and PC2
fviz_contrib(res.pca, choice = "ind", axes = 1:2)