TAREA

  1. Realice un análisis de clúster jerárquico donde contraste los resultados obtenidos utilizando diferentes distancias (euclidiana, mahalanobis, etc.) y diferentes técnicas de aglomeración (ward, average, etc.). Además analice e interprete los diferentes grupos de acuerdo con un criterio de corte dado un objetivo de agrupación. Recuerde analizar la selección de la técnica más adecuada con el coeficiente de correlación cofenético.

  2. Para la misma base de datos determine clusters utilizando la técnica de k-means para diferentes números de grupos iniciales. E este caso compare los grupos con base en el coeficiente de silueta.

  3. ¿Qué técnica de clasificación le proporciona una mejor interpretación de los datos?. Explique claramente.

  4. Utilice el conjunto de datos de la hoja de cálculo DISCRIMINANTE del documento Archivo Base de datos_tareas.xls para:

    • Determinar la multinormalidad del conjunto de datos. ¿Es posible llevar al cabo un análisis discriminante?

    • Indiferente del resultado de la prueba de multinormalidad, realizar el análisis discriminante:

      • Determinar las funciones discriminantes

      • Graficar las funciones discriminantes

      • Calcular la matriz de clasificación

      • Validar la Clasificación

      • Predecir la clasificación de algunos elementos, para este caso seleccione de la base de datos 70 elementos que no se incluyan en el modelo de clasificación y posteriormente clasifíquelos.

    • Para la base de datos DISCRIMINANTE, seleccionar otros dos métodos de clasificación no lineales y comparar sus resultados con el análisis discriminante. Determinar cual es el mejor modelo de clasificación para el conjunto de datos.

DATOS

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.

Variables

  • geography: Nombre del condado. (String)
  • avganncount: número medio anual de casos de cáncer en el condado.(Numeric)
  • avgdeathsperyear: Promedio anual de muertes en el condado.(Numeric)
  • medincome: Ingreso medio de los hogares del condado.(Numeric)
  • povertypercent: Porcentaje de personas que viven en la pobreza.(Numeric)
  • studypercap: Número de ensayos clínicos per cápita en el condado.(Numeric)
  • medianage: Mediana de edad de la población del condado.(Numeric)
  • percentmarried: Porcentaje de personas casadas en el condado. (Numeric)
  • pcths25_over: Porcentaje de personas de 25 años o más que terminaron la escuela secundaria.(Numeric)
  • pctbachdeg25_over:Porcentaje de personas de 25 años o más que tienen una licenciatura.(Numeric)
  • pctunemployed16_over: Porcentaje de personas de 16 años o más que están desempleadas.(Numeric)
  • pctprivatecoverage: Porcentaje de personas con seguro médico privado.(Numeric)

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 50 primeros condados para ilustrar las metodologías.

CLUSTERIZACIÓN JERÁRQUICA

Haciendo uso de la distancia de Mahalanobis proporcionada por la libreria biotools se utilizarán dos métodos de agrupación: Average y Ward. Primero procederemos a estandarizar las variables:

data_std <-scale(datos)

Clusterización Mahalanobis

Haciendo uso de la distancia de Mahalanobis proporcionada por la librería biotools se utilizarán dos métodos de agrupación average y Ward. A continuación se muestra la matriz de distancias:

A continuación se muestran las dos metodologías de agrupación (Ward y Average) para la distancia de Mahalanobis:

Cluster Ward

clusterW_maha <-hclust(dist_mah, method="ward.D") 

El coeficiente de correlación cofenético se muestra a continuación:

Ours.cophW = cophenetic(clusterW_maha)
cor(dist_mah, Ours.cophW)
## [1] 0.37119

Cluster average

clusterAV_maha <-hclust(dist_mah, method="average") 

El coeficiente de correlación cofenético correspondiente, se muestra a continuación:

Ours.cophAV = cophenetic(clusterAV_maha)
cor(dist_mah, Ours.cophAV)
## [1] 0.8547629

Clusterización Euclidiana

Haciendo uso de la distancia euclidiana se utilizarán dos métodos de agrupación average y Ward. A continuación se observa la matriz de distancias resultante:

A continuación se muestran las dos metodologías de agrupación (Ward y Average) para la distancia de Euclidiana:

Cluster Ward

clusterW_euc <-hclust(dist_eucl, method="ward.D") 

El coeficiente de correlación cofenético correspondiente se muestra a continuación:

Ours.cophW = cophenetic(clusterW_euc)
cor(dist_eucl, Ours.cophW)
## [1] 0.4509868

Cluster average

clusterAV_euc <-hclust(dist_eucl, method="average") 

El coeficiente de correlación cofenético correspondiente se muestra a continuación:

Ours.cophAV = cophenetic(clusterAV_euc)
cor(dist_eucl, Ours.cophAV)
## [1] 0.8647882

Este es el dendograma resultante de la agrupación mediante el método Average, realizando un corte con k=4.

ANÁLISIS

A continuación, se muestra una tabla que resume el coeficiente de correlación cofenético obtenido en cada combinación método-distancia; de allí se concluye que el mejor método de agrupación jerárquico es el método Average. Usando la distancia Euclidiana ó la distancia Mahalanobis con este método el coeficiente de correlación es alto y cercano entre sí.

De acuerdo a lo anterior, se decide usar por simplicidad la distancia Euclidiana en conjunto con el método de promedios; eligiendo la formación de cuatro grupos (\(k=6\)), se obtiene el siguiente dendograma; se puede observar que al elegir esta cantidad de grupos, uno de ellos agrupa la mayor cantidad de condados del estado de virginia; la mayoría de estos condados tienen valores en sus variables cerca del promedio general respectivo. Por otra parte nos deja por ejemplo un grupo conformado por los condados del estado de Washington (Pierce- Snohomish) que presentan un número medio anual de casos de cáncer,un promedio anual de muertes e ingresos medios de los hogares superiores a la media. Esto nos puede indicar que esta forma de segmentar puede ser útil en la caracterización de los condados con base en las variables de estudio.

CLUSTERIZACIÓN K-MEANS

DETERMINACIÓN DEL NÚMERO DE GRUPOS

Silhouette

El coeficiente de Silueta es una métrica para evaluar la calidad del agrupamiento obtenido con algoritmos de agrupación. Mediante esta técnica, definimos que el número óptimo de clusters es tres (\(k=3\))

WSS

Con esta técnica tenemos para cada número de grupos que se pueden formar (\(k\geq1\)), la suma de cuadrados dentro de cada grupo. La idea es elegir el valor en el eje x (nro clusters) que identifica al punto de inflexión, es decir al punto donde la suma de cuadrados ya no disminuye considerablemente. En la gráfica vemos que no hay un punto de quiebre evidente;se observa que la suma de cuadrados no termina de estabilizarse y decrece con cada grupo formado.

MODELO K-MEANS

Con base en el número de clusters sugerido mediante el método de la silhouette (\(k=3\)), procedemos a realizar el modelo de agrupamiento.

A continuación se observa una tabla con las medias de cada variable en cada cluster.

Del gráfico k-means podemos observar que:

  • El grupo o cluster 3, es claramente diferenciable y está conformado por los condados con los valores promedio más altos de las variables avganncount, avgdeathsperyear, medincome, pctbachdeg25_over y pctprivatecoverage; con lo cual podemos concluir que este grupo está conformando por condados en los que tienen buenos recursos y están siendo afectados por tasas de mortalidad más altas (probablemente debido al alto porcentaje de cáncer). Este grupo podría ser prioridad número 1 en alguna política de salud publica que ataque este problema.

  • El cluster número 1, es similar al cluster 3 en cuanto a las variables que segmentan a los condados que los que lo conforma; podría ser catalogado de prioridad número 2 si de alguna política política de salud publica se trata de implementar para mitigar el problema de salud que lo aqueja.

  • El cluster número 2, está conformado por condados con menos cantidad de casos promedio de cáncer por año y también los más pobres (promedio de medincome y povertypercent más altos). Es de particular interés destacar que estos condados tienen el promedio de ensayos clínicos per cápita en el condado más alto.

¿ CUÁL ES LA MEJOR TÉCNICA?

En este caso resulta más fácil de interpretar el resultado obtenido mediante la técnica k-means. El análisis realizado anteriormente nos permite entender en términos del problema, la razón por la que los condados fueron dividos de esta forma; esta facilidad en la interpretación se traduce en la posibilidad de usar la agrupación para diversos fines prácticos tales como la priorización de políticas públicas de forma eficiente y particular.

ANÁLISIS DISCRIMINANTE

A continuación de muestran los datos que se emplearán en el análisis discriminante. Para los modelos LDA y QDA, dado que se requiere que las variables predictoras cumplan el supuesto de normalidad y por ende sean variables continuas, se usarán todas las variables excepto las que se muestran a continuación. En el modelo SVM sí serán incluidas.

  • Altitud
  • Año
  • Mes
  • Día

Condiciones de LDA

Las condiciones que se deben cumplir para que un Análisis Discriminante Lineal sea válido son:

  • Cada predictor que forma parte del modelo se distribuye de forma normal en cada una de las clases de la variable respuesta. En el caso de múltiples predictores, las observaciones siguen una distribución normal multivariante en todas las clases.

  • La varianza del predictor es igual en todas las clases de la variable respuesta. En el caso de múltiples predictores, la matriz de covarianza es igual en todas las clases. Si esto no se cumple se recurre a Análisis Discriminante Cuadrático (QDA).

Nota:Cuando la condición de normalidad no se cumple, el LDA pierde precisión pero aun así puede llegar a clasificaciones relativamente buenas

ANÁLISIS EXPLORATORIO

3D SCATTER PLOT

Inicialmente podemos observar que al menos las variables: T.Min, Presión.máx y T.Máx son variables que nos ayudarán bastante a discriminar las ciudades. Puede interactuar con el modelo 3D y observar que muchos puntos pero no todos pueden ser discriminados, es decir, pueden ser agrupados en tres clusters.

MATRIZ DE CORRELACIÓN

Se puede observar que hay dos grupos de variables altamente correlacionadas:

  • Presion.Max y Presion.min
  • T.Min, T.Max y T.media.

Por ende es recomendable dejar una sola variable; en este caso dejaremos únicamente las variables Presion.Max y la T.Min.

GRÁFICOS NORMALIDAD

A continuación se muestran los histogramas de las variables que se incluirán en el modelo discriminante con la intención de validar el cumplimiento del supuesto de normalidad de forma gráfica.

En este conjunto de variables parece que no hay violaciones evidentes al supuesto de normalidad.

HISTOGRAMAS

QQ-PLOTS

TEST DE NORMALIDAD

UNIVARIANTE

Contraste de normalidad Shapiro-Wilk para cada variable. Para cada variable en cada nivel de la variable Ciudad, se desea probar: \[H_{0}: X \thicksim N(\mu, \sigma^{2})\] \[H_{1}: X \nsim N(\mu, \sigma^{2})\]

Dado un nivel de confianza \(\alpha\) se rechaza \(H_{0}\) si: \(valor-p \leq \alpha\) con una confianza de \((1-\alpha)\%\). Tal como se observa en la tabla, para todas las variables en todas las ciudades, podemos rechazar la hipótesis nula con una confinza del 95% y por ende concluir que estas no se distribuyen de forma normal.

MULTIVARIANTE

Como era de esperarse, los test realizados para verificar la normalidad multivariante, rechazan la hipótesis nula y con una confianza del 95% podemos decir que los datos no provienen de una distribución normal.

library(MVN)
#outliers <- mvn(data = datos_disc[,-1], mvnTest = "hz", multivariateOutlierMethod = "quan")

Royston’s test

royston_test <- mvn(data = datos_disc[1:2000,6:11], mvnTest = "royston")
royston_test$multivariateNormality
##      Test        H       p value MVN
## 1 Royston 851.4863 1.098548e-180  NO

Henze-Zirkler’s test

hz_test <- mvn(data = datos_disc[,6:11], mvnTest = "hz")
hz_test$multivariateNormality
##            Test       HZ p value MVN
## 1 Henze-Zirkler 21.55589       0  NO

TEST DE HOMEGENEIDAD DE COVARIANZA

En este caso, se desea probar si:

\(H_{0}:\) La matriz de covarianzas es igual para todas las ciudades
\(H_{1}:\) La matriz de covarianzas No es igual para todas las ciudades

Dado un nivel de confianza \(\alpha\) se rechaza \(H_{0}\) si:\(valor-p \leq \alpha\) con una confianza de \((1-\alpha)\%\).
El test de Box tiene un valor-p inferior a \(\alpha=0.05\), lo cual nos permite rechazar la hipótesis nula con una confianza del 95% y concluir que no hay homogeneidad de covarianzas; en este caso es recomendable y más adecuado realizar un Análisis Discriminante Cuadrático (QDA).

## 
##  Box's M-test for Homogeneity of Covariance Matrices
## 
## data:  datos_disc[, 6:11]
## Chi-Sq (approx.) = 1592.2, df = 42, p-value < 2.2e-16

Nota: Este test es muy sensible a violaciones de la normalidad multivariante y por ende en este caso resulta inapropiado; el test pudo resultar significativo debido a la falta de distribución normal multivariante en lugar de la falta de homogeneidad en las matrices de covarianza.

MODELAMIENTO.

Primero dividimos el conjunto de datos en entrenamiento y prueba con ayuda del siguiente código. El 80% será para entrenamiento y el 20% para testeo.

set.seed(1)
sample <- sample(c(TRUE, FALSE), nrow(datos_disc), replace=TRUE, prob=c(0.8,0.2))
datos_disc_train<- datos_disc[sample, ]
datos_disc_test <- datos_disc[!sample, ]

Cantidad de datos para entrenar el modelo:

## [1] 2035

Cantidad de datos para validación:

## [1] 518

MODELOS

Se proponen tres modelos: LDA, QDA y SVM. El análisis de cada uno se muestra a continuación:

MODELO LDA

El test Box’s M es muy sensible a la falta de normalidad multivariante, con frecuencia resulta significativo no porque la matriz de covarianza no sea constante; Por esta razón se va a asumir que la matriz de covarianza sí es constante y que LDA puede alcanzar una buena precisión en la clasificación. A continuación se configura el modelo LDA de la siguiente forma:

modelo_lda <- lda(Ciudad ~  T.Min +
                    Dir.Viento+Vel.Viento+Precipitación+Sol+Presión.máx, data = datos_disc_train)
PREDICCIONES

Haciendo uso de los datos de testeo, se prueba la calidad de predicción del LDA.

## Confusion Matrix and Statistics
## 
##                    Reference
## Prediction          Huelva Palma de Mallorca Vigo
##   Huelva                42                44    0
##   Palma de Mallorca     98               180    0
##   Vigo                   2                 5  147
## 
## Overall Statistics
##                                          
##                Accuracy : 0.7124         
##                  95% CI : (0.6713, 0.751)
##     No Information Rate : 0.4421         
##     P-Value [Acc > NIR] : < 2.2e-16      
##                                          
##                   Kappa : 0.5455         
##                                          
##  Mcnemar's Test P-Value : 4.547e-06      
## 
## Statistics by Class:
## 
##                      Class: Huelva Class: Palma de Mallorca Class: Vigo
## Sensitivity                0.29577                   0.7860      1.0000
## Specificity                0.88298                   0.6609      0.9811
## Pos Pred Value             0.48837                   0.6475      0.9545
## Neg Pred Value             0.76852                   0.7958      1.0000
## Prevalence                 0.27413                   0.4421      0.2838
## Detection Rate             0.08108                   0.3475      0.2838
## Detection Prevalence       0.16602                   0.5367      0.2973
## Balanced Accuracy          0.58938                   0.7235      0.9906

MODELO QDA

Dado el incumplimiento de homegeneidad de covarianza, se plantea un modelo cuadrático (QDA) de la siguiente forma:

model_QDA = qda(Ciudad ~  T.Min + 
                    Dir.Viento+Vel.Viento+Precipitación+Sol+Presión.máx, data = datos_disc_train)
PREDICCIONES

Haciendo uso de los datos de testeo, se prueba la calidad de predicción del QDA.

## Confusion Matrix and Statistics
## 
##                    Reference
## Prediction          Huelva Palma de Mallorca Vigo
##   Huelva                77                40    0
##   Palma de Mallorca     62               183    0
##   Vigo                   3                 6  147
## 
## Overall Statistics
##                                           
##                Accuracy : 0.7857          
##                  95% CI : (0.7478, 0.8203)
##     No Information Rate : 0.4421          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.667           
##                                           
##  Mcnemar's Test P-Value : 0.003273        
## 
## Statistics by Class:
## 
##                      Class: Huelva Class: Palma de Mallorca Class: Vigo
## Sensitivity                 0.5423                   0.7991      1.0000
## Specificity                 0.8936                   0.7855      0.9757
## Pos Pred Value              0.6581                   0.7469      0.9423
## Neg Pred Value              0.8379                   0.8315      1.0000
## Prevalence                  0.2741                   0.4421      0.2838
## Detection Rate              0.1486                   0.3533      0.2838
## Detection Prevalence        0.2259                   0.4730      0.3012
## Balanced Accuracy           0.7179                   0.7923      0.9879

SVM

A continuación se plantea una máquina de soporte vectorial (SVM) con kernel radial.

model_SVM <- svm(Ciudad ~ ., data = datos_disc_train, 
                       type = 'C-classification', kernel = 'radial')
model_SVM <- svm(Ciudad ~ ., data = datos_disc_train[,c(1,6:11)], 
                       type = 'C-classification', kernel = 'radial')
PREDICCIONES

Haciendo uso de los datos de testeo, se prueba la calidad de predicción del SVM.

## Confusion Matrix and Statistics
## 
##                    Reference
## Prediction          Huelva Palma de Mallorca Vigo
##   Huelva               101                14    0
##   Palma de Mallorca     41               215    0
##   Vigo                   0                 0  147
## 
## Overall Statistics
##                                         
##                Accuracy : 0.8938        
##                  95% CI : (0.864, 0.919)
##     No Information Rate : 0.4421        
##     P-Value [Acc > NIR] : < 2.2e-16     
##                                         
##                   Kappa : 0.8341        
##                                         
##  Mcnemar's Test P-Value : NA            
## 
## Statistics by Class:
## 
##                      Class: Huelva Class: Palma de Mallorca Class: Vigo
## Sensitivity                 0.7113                   0.9389      1.0000
## Specificity                 0.9628                   0.8581      1.0000
## Pos Pred Value              0.8783                   0.8398      1.0000
## Neg Pred Value              0.8983                   0.9466      1.0000
## Prevalence                  0.2741                   0.4421      0.2838
## Detection Rate              0.1950                   0.4151      0.2838
## Detection Prevalence        0.2220                   0.4942      0.2838
## Balanced Accuracy           0.8370                   0.8985      1.0000

¿CUÁL MODELO ES MEJOR?

La máquina de soporte vectorial (SVM) y el QDA tienen mejores métricas de desempeño que el LDA. El accuracy del SVM resultó superior al del QDA ( 89.38% y 78.57% respectivamente). El modelo SVM mejora la sensibilidad y especificidad para las ciudades lo que conlleva a un aumento en la tasa de verdaderos positivos. Por lo anterior, el SVM es el mejor de los tres modelos.