Utilice un conjunto de datos cuantitativos, seleccionado en un contexto que sea fácilmente interpretable para usted y en el que cuente mínimo con 10 variables, para:
Este conjunto de datos contiene información relacionada con la salud y datos socioeconómicos agregados a partir de múltiples fuentes, como la Encuesta sobre la Comunidad Estadounidense, clinicaltrials.gov y cancer.gov, que abarcan diversos condados de Estados Unidos.
A continuación se muestra la base de datos a utilizar.
Nota:La base de datos contiene más registros pero decidí quedarme con los 100 primeros condados para ilustrar las técnicas vistas en clase.
Abajo podemos observar la matriz de covarianzas de los datos; de allí podemos notar lo siguiente:
La matriz de correlación cabe resaltar la fuerte asociación lineal entre las variables; de esta forma se complementan y ratifican las afirmaciones sacadas anteriormente en el análisis de la matriz de covarianzas.
De resaltar también que la vartiable percentmarried no tiene asociación lineal representativa con ninguna variable del dataset en cuestión.
Se usa a la función PCA de la libreria FactoMineR con el parámetro scale.unit = TRUE para realizar la normalización de los datos previo a los cálculos de los valores y vectores propios de la PCA.
pca = PCA(datos2, scale.unit = TRUE)
A continuación se muestran los valores propios de la matriz de datos; allí se puede observar que los las tres primeras componentes (PC1, PC2 y PC3) de forma conjunta explican aproximandamente el 74,5 % de la variabilidad total, teniendo asociados valores propios mayores que 1, lo cual nos da una idea de que estos son estadísticamente significativos. De acuerdo a lo anterior, realizamos la PCA con 3 componentes.
| eigenvalue | percentage of variance | cumulative percentage of variance | |
|---|---|---|---|
| comp 1 | 4.7547025 | 43.2245678 | 43.22457 |
| comp 2 | 2.1163513 | 19.2395571 | 62.46412 |
| comp 3 | 1.3250082 | 12.0455295 | 74.50965 |
| comp 4 | 0.9648440 | 8.7713095 | 83.28096 |
| comp 5 | 0.7226592 | 6.5696293 | 89.85059 |
| comp 6 | 0.4238939 | 3.8535811 | 93.70417 |
| comp 7 | 0.3434572 | 3.1223378 | 96.82651 |
| comp 8 | 0.2094210 | 1.9038268 | 98.73034 |
| comp 9 | 0.0744483 | 0.6768029 | 99.40714 |
| comp 10 | 0.0617854 | 0.5616852 | 99.96883 |
| comp 11 | 0.0034290 | 0.0311730 | 100.00000 |
De acuerdo a lo anterior, decidimos entonces quedarnos con las tres primeras componentes principales para reducir la dimensionalidad del conjunto de datos; a continuación podemos observar la contribución que tiene cada una de las variables dentro de cada componente; podemos determinar que:
Para el componente 1, las variables de mayor peso o importancia son:
Esta componente podría representar el aspecto socio económico del condado, relacionado con los ingresos y niveles de alfabetismo de sus habitantes.
Para la componente 2 las variables de mayor contribución son:
Este componente podría estar orientado a caracterizar a los habitantes en cuanto al estado económico, su estructura demográfica y sus patrones de relaciones familiares y matrimoniales.
Para la componente 3 las variables de mayor contribución son:
Esta componente claramente reúne las variables asociadas a medir algunos aspectos relacionados con la salud de los habitantes del condado.
| Dim.1 | Dim.2 | Dim.3 | Dim.4 | Dim.5 | |
|---|---|---|---|---|---|
| avganncount | 9.9225146 | 9.3304380 | 17.7983804 | 6.0728578 | 3.1358770 |
| avgdeathsperyear | 9.5801591 | 10.1673470 | 17.2542609 | 6.3824417 | 3.2750562 |
| medincome | 16.7067068 | 3.0326213 | 1.1284107 | 0.0471002 | 0.6815095 |
| povertypercent | 9.9660361 | 18.0010337 | 1.2818421 | 0.2174545 | 0.8656619 |
| studypercap | 0.0040349 | 0.2266133 | 14.7062551 | 79.3387978 | 4.0271416 |
| medianage | 5.3336752 | 16.1268821 | 9.6594145 | 1.8970818 | 12.1028817 |
| percentmarried | 0.2613415 | 24.5172300 | 20.7177677 | 0.3246227 | 1.0686260 |
| pcths25_over | 11.9468334 | 2.6879007 | 0.3156358 | 2.3995510 | 40.2313094 |
| pctbachdeg25_over | 16.0809582 | 0.0131446 | 3.1651285 | 2.8004967 | 12.5108474 |
| pctunemployed16_over | 6.2636004 | 10.2540347 | 10.2103770 | 0.0166109 | 19.6596079 |
| pctprivatecoverage | 13.9341398 | 5.6427546 | 3.7625272 | 0.5029849 | 2.4414814 |
# Contributions of variables to PC1
fviz_contrib(pca, choice = "var", axes = 1)
# Contributions of variables to PC2
fviz_contrib(pca, choice = "var", axes = 2)
# Contributions of variables to PC2
fviz_contrib(pca, choice = "var", axes = 3)
A Continuación se muestran los biplots de todos los pares de componentes que se pueden generar de acuerdo a la selección previamente realizada.
fviz_pca_biplot(pca, repel = TRUE,addlabels = TRUE) #biplot
Acá podemos observar que las variables mayor correlacionadas con la componente 1 y 2 son precisamente aquellas que mayor aporte realizan a su construcción, tal como lo vimos anteriormente. Se puede observar adicionalmente por ejemplo que las variables pctprivatecoverage, medincome, pctbachdeg25_over, avganncount y avgdeathsperyear tienen una asociación positiva con la PC1 ya que sus vectores apuntan en la dirección positiva del eje asociado a la dim 1.
En el caso de la componente 2, las variables con mayor correlación positiva son: percentmarried y medianage. Las variables pctunemployed16_over y povertypercent por su parte tienen una asociación negativa con la componente 2.
La longitud de los vectores representa la calidad de la representación de las variables en cada componente.
fviz_pca_biplot(pca,repel = TRUE, axes = c(1, 3),addlabels = TRUE) #biplot
Acá podemos observar que las variables mayor correlacionadas con la
componente 3 son studypercap,
avganncount, *percentmarried y
avgdeathsperyear lo cual corresponde con las variables
que mayor aporte tienen a su construcción; adicionalmente tienen una
asociación positiva con la componente 3 ya que sus vectores apuntan en
la dirección positiva del eje asociado a la dimensión.
fviz_pca_biplot(pca, repel = TRUE,axes = c(2, 3), addlabels = TRUE) #biplot
Se puede observar aquí por ejemplo que las variables
pctunemployed16_over, avganncount,
povertypercent y avgdeathsperyear
tienen una asociación negativa con la PC3 ya que sus vectores apuntan en
la dirección negativa del eje asociado a la dim 3.
Acá podemos ver las correlaciones de las variables con las componentes;los vectores asociados a una variable que estén muy cerca del eje que corresponde a una determinada componente, indica un correlación alta entre ellos. Por ejemplo, tal como concluimos anteriormente la variable pctbachdeg25_ove está fuertemente correlacionada con el componente 1. Además podemos determinar, debido al pequeño angulo que existe entre los vectores asociados a las variables pctunemployed16_over y povertypercent, que estas variables tienen una correlación alta; de igual forma podemos ver que los vectores de las variables medincome y povertypercent apuntan en direcciones opuestas formando un angulo entre ellas de aproximadamente 180 grados, lo que nos indica una fuerte correlación negativa.
fviz_pca_var(pca, col.var = "black")
fviz_pca_var(pca, col.var = "black", axes = c(1, 3))
Acá podemos ver la calidad de la representación a través de un gráfico de barras. Las variables que tienen un valor cercano a uno, indican que la representación de la variable a través del par de componentes es fiel o de muy buena calidad. Por ejemplo, las componentes 1 y 2, conservan, explican o representan gran parte de la variabilidad de las variables medincome, povertyupercent y pctprivatecoverage. De forma general, con el uso de las tres componentes hay una buena representación de la mayor parte las variables consideradas en el dataset.
fviz_cos2(pca, choice = "var", axes = 1:2)
fviz_cos2(pca, choice = "var", axes = 1:3)
fviz_cos2(pca, choice = "var", axes = 2:3)
El análisis factorial esta relacionado con los componentes principales, pero existen ciertas diferencias. En primer lugar, los componentes principales se construyen para explicar las varianzas, mientras que los factores se construyen para explicar las covarianzas o correlaciones entre las variables. En segundo lugar, componentes principales es un herramienta descriptiva, mientras que el an·lisis factorial presupone un modelo estadístico formal de generación de la muestra dada.
Primero realizaremos el test de esfericidad de Bartlett y la prueba de Kaiser-Meyer-Olkin. La Medida Kaiser-Meyer-Olkin es un estadístico que indica la proporción de varianza en las variables que pueden ser causadas por factores subyacentes. Los valores altos (cercanos a 1.0) generalmente indican que un análisis factorial puede ser útil con los datos. Si el valor es menor que 0,50, los resultados del análisis factorial probablemente no serán muy útiles. El test de esfericidad de Bartlett contrasta la hipótesis de que la matriz de correlaciones es una matriz de identidad, lo que indicaría que las variables no están relacionadas y, por lo tanto, no son adecuadas para la detección de estructuras.
mat_cor <- hetcor(datos2)$correlations
cortest.bartlett(mat_cor)->p_esf
p_esf$p
## [1] 1.593664e-207
Dado que prueba de esfericidad de Bartlett tiene un valor-p de 1.593664e-207, con una confianza del 95% rechazamos la hipótesis nula y concluimos que la matriz de datos si contiene estructuras de correlación adecuadas para el análisis.
KMO(mat_cor)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = mat_cor)
## Overall MSA = 0.67
## MSA for each item =
## avganncount avgdeathsperyear medincome
## 0.59 0.58 0.69
## povertypercent studypercap medianage
## 0.62 0.22 0.61
## percentmarried pcths25_over pctbachdeg25_over
## 0.67 0.63 0.73
## pctunemployed16_over pctprivatecoverage
## 0.81 0.82
Este test nos arroja un valor medio de 0.67 (mediocre); esto nos indica que los resultados del análisis factorial son aceptables.
De acuerdo a los valores propios mayores que la unidad que se aprecian en las gráficas podemos inferir que dos es el número de factores óptimos para análisis factorial.
scree(mat_cor)
fa.parallel(mat_cor,fa="fa")
## Parallel analysis suggests that the number of factors = 4 and the number of components = NA
Los test realizados para verificar el supuesto de normalidad fueron negativos, lo que nos indica con una confianza del 95% que los datos no provienen de una distribución normal multivariada; debido a ésto, no es conveniente estimar los parámetros del análisis factorial mediante el método de máxima verosimilitud.
library(MVN)
# Royston's MVN test
result <- mvn(data = datos2, mvnTest = "royston")
result$multivariateNormality
## Test H p value MVN
## 1 Royston 165.1546 1.169275e-32 NO
# Henze-Zirkler's MVN test
result <- mvn(data = datos2, mvnTest = "hz")
result$multivariateNormality
## Test HZ p value MVN
## 1 Henze-Zirkler 1.493889 0 NO
# Doornik-Hansen's MVN test
result <- mvn(data = datos2, mvnTest = "dh")
result$multivariateNormality
## Test E df p value MVN
## 1 Doornik-Hansen 1866.666 22 0 NO
Se usará el método de mínimos cuadrados ordinarios (OLS) para el cálculo de los factores, donde el número de factores es igual a dos. La rotación elegida para el análisis de resultados será la rotación varimax ya que nos interesa tener una estructura de factores en la cual cada variable pondere altamente a un único factor y sean así más claros en la interpretación.
modelo_varimax<-fa(mat_cor,
nfactors = 2,
rotate = "varimax",
fm="minres") # modelo mínimo residuo
En el Biplot podemos observar que las variables pctprivatecoverage, pctunemployed16_over, medincome y povertypercent son las más correlacionadas con el factor 1, mientras que las variables avganncount, avgdeathsperyear y medianage lo son con el factor 2.
#Rotaciones
biplot.psych(fa(datos2,nfactors = 2,fm="minres",rotate = 'varimax'),main = "Biplot con rotación Varimax",col=c(2,3,4),pch = c(25,18))
Acá podemos observar que el factor 1 tiene mayor aporte a la representación de las variables medincome, pctprivatecoverage y pctbachdeg25_over.Esto coincide con componente 1 formado en el PCA ya que ambos están asociados por las mismas variables. En el caso del factor 2 vemos que las variables avganncount y avgdeathsperyear son las que más relación tienen con este.
fa.diagram(modelo_varimax)
La proporción de varianza explicada que logramos con los dos factores es del 55.8%, lo cual es inferior a lo alcanzado con el PCA de tres factores (74.5%)
modelo_varimax$loadings
##
## Loadings:
## MR1 MR2
## avganncount 0.187 0.774
## avgdeathsperyear 0.167 0.779
## medincome 0.826 0.423
## povertypercent -0.938
## studypercap
## medianage -0.661
## percentmarried 0.289 -0.461
## pcths25_over -0.371 -0.643
## pctbachdeg25_over 0.608 0.594
## pctunemployed16_over -0.612
## pctprivatecoverage 0.809 0.289
##
## MR1 MR2
## SS loadings 3.248 2.888
## Proportion Var 0.295 0.263
## Cumulative Var 0.295 0.558
En general, vemos que la varianza explicada por los dos factores propuestos es bueno para todas las variables, excepto para studypercap, percentmarried, medianage y pcths25_over.
modelo_varimax$communalities
## avganncount avgdeathsperyear medincome
## 0.633692058 0.634921199 0.861345698
## povertypercent studypercap medianage
## 0.880568730 0.002400202 0.437373648
## percentmarried pcths25_over pctbachdeg25_over
## 0.296101508 0.551560145 0.722192586
## pctunemployed16_over pctprivatecoverage
## 0.377158210 0.738694072
De forma inversa a lo analizado en la sección de comunalidades, vemos que las variables studypercap, percentmarried, medianage y pcths25_over no son bien explicadas por los dos factores considerados y por ende el modelo de reducción de dimensionalidad a través de dos factores no es tan adecuado.
modelo_varimax$uniquenesses
## avganncount avgdeathsperyear medincome
## 0.3663117 0.3650825 0.1386560
## povertypercent studypercap medianage
## 0.1194329 0.9976007 0.5626289
## percentmarried pcths25_over pctbachdeg25_over
## 0.7039008 0.4484438 0.2778107
## pctunemployed16_over pctprivatecoverage
## 0.6228446 0.2613077
Debido al incumplimiento del supuesto de normalidad, es más pertinente en nuestro caso hacer uso de los resultados del PCA. Adicionalmente, el análisis mediante PCA nos permite realizar una reducción de la dimensionalidad con una mayor explicación de la variabilidad total. Por otra parte, el análisis de componentes principales hace énfasis en explicar la varianza de los datos, mientras que el objetivo del análisis factorial es explicar la correlación entre variables y encontrar factores no observables o medibles.