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.
carSpeeds <- read.csv(file = 'Data_Fire_unidas.csv')
#carSpeeds <- read.csv(file = 'Data_Fire_unidas2.csv')
newdata <- carSpeeds[c(3:26)]
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
## 1 -0.16091116 64.739189 0.2076858 0.57327543
## 2 -0.10985549 44.579264 0.1852110 0.02313329
## 3 -0.16798181 86.485731 0.2384313 0.45326873
## 4 -0.09488532 34.792058 0.1706397 -0.03467232
## 5 -0.13943820 39.039921 0.1750527 0.43213028
## 6 -0.08051249 3.176455 0.1247809 -0.17383865
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"
ncp: nĆŗmero de dimensiones mantenidas en los resultados finales.
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.
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.
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))
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.
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
)
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")
)
The results, for individuals can be extracted using the function get_pca_ind() [factoextra package]. Similarly to the get_pca_var(), the function get_pca_ind() provides a list of matrices containing all the results for the individuals (coordinates, correlation between variables and axes, squared cosine and contributions)
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"
# 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
fviz_pca_ind(res.pca)
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)