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.
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.
¿Qué técnica de clasificación le proporciona una mejor interpretación de los datos?. Explique claramente.
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.
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 50 primeros condados para ilustrar las metodologías.
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)
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:
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
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
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:
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
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.
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.
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\))
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.
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.
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.
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.
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
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.
Se puede observar que hay dos grupos de variables altamente correlacionadas:
Por ende es recomendable dejar una sola variable; en este caso dejaremos únicamente las variables Presion.Max y la T.Min.
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.
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.
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_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
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
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.
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
Se proponen tres modelos: LDA, QDA y SVM. El análisis de cada uno se muestra a continuación:
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)
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
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)
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
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')
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
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.