library ("easypackages")
lib_req = c ("MASS","visdat","corrplot","plotrix","doBy","FactoMineR","factoextra","caret","e1071",
"pROC","class","rpart","rpart.plot","randomForest", "ggplot2", "gridExtra", "fmsb",
"car", "epiR", "pls", "rpart", "rpart.plot")
easypackages :: packages (lib_req)
## 'data.frame': 442 obs. of 11 variables:
## $ AGE: int 59 48 72 24 50 23 36 66 60 29 ...
## $ SEX: int 2 1 2 1 1 1 2 2 2 1 ...
## $ BMI: num 32.1 21.6 30.5 25.3 23 22.6 22 26.2 32.1 30 ...
## $ BP : num 101 87 93 84 101 89 90 114 83 85 ...
## $ S1 : int 157 183 156 198 192 139 160 255 179 180 ...
## $ S2 : num 93.2 103.2 93.6 131.4 125.4 ...
## $ S3 : num 38 70 41 40 52 61 50 56 42 43 ...
## $ S4 : num 4 3 4 5 4 2 3 4.55 4 4 ...
## $ S5 : num 4.86 3.89 4.67 4.89 4.29 ...
## $ S6 : int 87 69 85 89 80 68 82 92 94 88 ...
## $ Y : int 151 75 141 206 135 97 138 63 110 310 ...
Al revisar la base de datos, se ajustaron los formatos y se convirtieron las variables a numéricas, con la excepción de la variable sexo, la cual es categórica con dos niveles: masculino y femenino.
## 'data.frame': 442 obs. of 11 variables:
## $ AGE: num 59 48 72 24 50 23 36 66 60 29 ...
## $ SEX: Factor w/ 2 levels "1","2": 2 1 2 1 1 1 2 2 2 1 ...
## $ BMI: num 32.1 21.6 30.5 25.3 23 22.6 22 26.2 32.1 30 ...
## $ BP : num 101 87 93 84 101 89 90 114 83 85 ...
## $ S1 : num 157 183 156 198 192 139 160 255 179 180 ...
## $ S2 : num 93.2 103.2 93.6 131.4 125.4 ...
## $ S3 : num 38 70 41 40 52 61 50 56 42 43 ...
## $ S4 : num 4 3 4 5 4 2 3 4.55 4 4 ...
## $ S5 : num 4.86 3.89 4.67 4.89 4.29 ...
## $ S6 : num 87 69 85 89 80 68 82 92 94 88 ...
## $ Y : num 151 75 141 206 135 97 138 63 110 310 ...
Al examinar los datos, se encontró que la población estudiada tiene edades entre 19 y 79 años. La muestra es equilibrada, con igual número de hombres y mujeres. Según el índice de masa corporal, hay personas con índices que van desde bajo hasta obesidad. Además, la presión arterial varía entre 62 y 133.
## AGE SEX BMI BP S1
## Min. :19.00 1:235 Min. :18.00 Min. : 62.00 Min. : 97.0
## 1st Qu.:38.25 2:207 1st Qu.:23.20 1st Qu.: 84.00 1st Qu.:164.2
## Median :50.00 Median :25.70 Median : 93.00 Median :186.0
## Mean :48.52 Mean :26.38 Mean : 94.65 Mean :189.1
## 3rd Qu.:59.00 3rd Qu.:29.27 3rd Qu.:105.00 3rd Qu.:209.8
## Max. :79.00 Max. :42.20 Max. :133.00 Max. :301.0
## S2 S3 S4 S5
## Min. : 41.60 Min. :22.00 Min. :2.00 Min. :3.258
## 1st Qu.: 96.05 1st Qu.:40.25 1st Qu.:3.00 1st Qu.:4.277
## Median :113.00 Median :48.00 Median :4.00 Median :4.620
## Mean :115.44 Mean :49.79 Mean :4.07 Mean :4.641
## 3rd Qu.:134.50 3rd Qu.:57.75 3rd Qu.:5.00 3rd Qu.:4.997
## Max. :242.40 Max. :99.00 Max. :9.09 Max. :6.107
## S6 Y
## Min. : 58.00 Min. : 25.0
## 1st Qu.: 83.25 1st Qu.: 87.0
## Median : 91.00 Median :140.5
## Mean : 91.26 Mean :152.1
## 3rd Qu.: 98.00 3rd Qu.:211.5
## Max. :124.00 Max. :346.0
Como se puede observar en el gráfico, ninguna de las variables presenta datos faltantes.
Al examinar la distribución de la variable de respuesta, se nota una ligera asimetría positiva. No se detectan datos atípicos, y solo unos pocos casos superan los 300 o están por debajo de 50. La mediana se sitúa alrededor de 140.
Al examinar los graficos, se nota que en la variable sexo la proporción de las categorías es aproximadamente 53% y 47%. La variable edad tiene un rango de edades entre aproximadamente 20 y 80 años y la mayoría de las observaciones están concentradas alrededor de los 50 años. La variable BMI varía entre aproximadamente 20 y 40 y la mediana está alrededor de 30. La variable BP varía entre aproximadamente 60 y 120 y la mediana está alrededor de 90.
El análisis de la relación bivariada con la variable de respuesta indica que el género no tiene un impacto significativo en Y. En los gráficos, las únicas variables que presentan una ligera relación con la variable a predecir (Y) son el BMI y S5, que muestra una relación positiva, y S3, que muestra una relación inversa. Las demás variables no evidencian una relación clara con la variable a predecir (Y).
Al analizar los datos de todas las variables cuantitativas, no se encontraron valores atípicos.
Al revisar las correlaciones, se observó lo siguiente: Las variables más correlacionadas positivamente con la variable a predecir son BMI (59%), S5 (57%) y BP (44%), mientras que la variable S3 muestra una correlación negativa del 39%.
Además, se observa una alta correlación positiva del 90% entre las variables S2 y S1, y una correlación negativa del 74% entre las variables S3 y S4.
De acuerdo con el gráfico, se puede ver que con las primeras 2 componentes principales se tiene el 58.48% de la Varianza Explicada
Al analizar los componentes 1 y 2, que explican el 58.48% de la varianza, se confirma que las variables S1 y S2 están correlacionadas. Además, las variables BMI, BP y Y también están correlacionadas entre sí.
Además, al igual que se observó en las correlaciones, S3 es la única variable que muestra una relación negativa con todas las demás variables, excepto con S1, donde la relación es casi cero.
Este modelo presenta un R-cuadrado ajustado del 50,97%, indicando que el modelo identifica 6 variables significativas. Las más destacadas son: BMI, BP y S5. Además, se consideran relevantes las variables Sex == 2, S1 y S2.
##
## Call:
## lm(formula = formula, data = Diabetes.tr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -154.841 -38.494 0.308 36.875 123.879
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -353.05553 72.90864 -4.842 1.94e-06 ***
## AGE 0.09713 0.24693 0.393 0.69431
## SEX2 -20.01038 6.40003 -3.127 0.00192 **
## BMI 5.27968 0.79325 6.656 1.12e-10 ***
## BP 1.15525 0.25174 4.589 6.26e-06 ***
## S1 -1.32823 0.60570 -2.193 0.02899 *
## S2 1.00996 0.55481 1.820 0.06957 .
## S3 0.31446 0.83946 0.375 0.70819
## S4 4.27248 6.63339 0.644 0.51995
## S5 73.19180 17.11686 4.276 2.47e-05 ***
## S6 0.26249 0.30245 0.868 0.38608
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 53.53 on 343 degrees of freedom
## Multiple R-squared: 0.5236, Adjusted R-squared: 0.5097
## F-statistic: 37.7 on 10 and 343 DF, p-value: < 2.2e-16
Para investigar las variables que podrían causar multicolinealidad en el modelo, se analiza la inflación de la varianza de las mismas. El gráfico siguiente muestra que las variables S1 y S2 tienen la mayor inflación de varianza, lo que sugiere la presencia de multicolinealidad.
Para eliminar las variables que podrían estar generando multicolinealidad, se empleará el método de selección backward. Este método eliminará las variables que no aportan información adicional al modelo.
Este modelo muestra un R-cuadrado ajustado del 51,32%, similar al del modelo saturado.
El modelo revela que las variables SEX == 2, BMI, BP, S1, S2 y S5 son las que mejor explican la varianza de Y.
Aunque el R-cuadrado no mejora considerablemente con este modelo, se obtiene una reducción en su complejidad.
##
## Call:
## lm(formula = Y ~ SEX + BMI + BP + S1 + S2 + S5, data = Diabetes.tr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -157.524 -39.260 0.998 37.015 122.374
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -330.0543 27.7625 -11.888 < 2e-16 ***
## SEX2 -18.8752 6.2467 -3.022 0.0027 **
## BMI 5.3878 0.7824 6.886 2.70e-11 ***
## BP 1.2180 0.2375 5.128 4.88e-07 ***
## S1 -1.2252 0.2383 -5.142 4.56e-07 ***
## S2 1.0127 0.2467 4.105 5.05e-05 ***
## S5 75.2522 8.0118 9.393 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 53.34 on 347 degrees of freedom
## Multiple R-squared: 0.5215, Adjusted R-squared: 0.5132
## F-statistic: 63.03 on 6 and 347 DF, p-value: < 2.2e-16
Al graficar los valores observados frente a los predichos con este modelo, se observa que el modelo tiende a sobreestimar las predicciones para los valores bajos y a subestimar los valores altos. No obstante, el modelo mantiene una tendencia general en los datos, logrando un mejor ajuste y una menor tasa de error en los valores centrales.
Según el gráfico, el número de componentes a seleccionar que logra el menor RMSEP es 2. Estos componentes explican el 50,98% de la varianza de Y.
## Data: X dimension: 354 10
## Y dimension: 354 1
## Fit method: kernelpls
## Number of components considered: 8
##
## VALIDATION: RMSEP
## Cross-validated using 10 random segments.
## (Intercept) 1 comps 2 comps 3 comps 4 comps 5 comps 6 comps
## CV 76.56 58.77 54.43 54.25 54.36 54.38 54.38
## adjCV 76.56 58.76 54.38 54.20 54.29 54.31 54.31
## 7 comps 8 comps
## CV 54.28 54.18
## adjCV 54.23 54.11
##
## TRAINING: % variance explained
## 1 comps 2 comps 3 comps 4 comps 5 comps 6 comps 7 comps 8 comps
## X 39.16 52.39 64.23 71.23 80.84 83.84 88.68 90.36
## Y 41.67 50.98 51.62 51.72 51.78 51.95 52.00 52.27
El siguiente gráfico muestra los coeficientes de las variables. Se puede observar que las variables que más contribuyen al progreso de la diabetes son BMI y S5, mientras que la variable que más reduce el progreso de la diabetes es S3.
El gráfico siguiente resalta la importancia de las variables, destacando BMI, S5 y BP como las más relevantes, mientras que la variable menos significativa para el modelo es el sexo.
En este gráfico se puede observar la relación entre las variables. Como se evidenció en análisis previos, las variables S1 y S2 muestran una alta correlación, al igual que BP y BMI. Por otro lado, se destaca que el comportamiento de S3 es opuesto al de las demás variables.
Al graficar los valores observados frente a los predichos con este modelo, se observa que, en comparación con el modelo anterior, no se evidencia un ajuste significativamente mejorado. Para los valores pequeños, el modelo tiende a sobreestimar las predicciones, mientras que para los valores grandes, tiende a subestimarlas. Sin embargo, se mantiene una tendencia en los datos donde los valores centrales se ajustan mejor y pueden predecirse con una menor tasa de error.
El árbol se construyó a partir de 354 registros, donde se obtuvo un error en el nodo raíz de 5828.9. Esto representa el porcentaje de registros correctamente clasificados en el primer nodo de división.
##
## Regression tree:
## rpart::rpart(formula = formula, data = Diabetes.tr, control = rpart.control(cp = 1e-04))
##
## Variables actually used in tree construction:
## [1] AGE BMI BP S1 S2 S3 S4 S5 S6
##
## Root node error: 2063443/354 = 5828.9
##
## n= 354
##
## CP nsplit rel error xerror xstd
## 1 0.31605623 0 1.00000 1.00310 0.056031
## 2 0.07396688 1 0.68394 0.70265 0.047353
## 3 0.04930949 2 0.60998 0.69278 0.050649
## 4 0.04786946 3 0.56067 0.66692 0.049823
## 5 0.01734999 4 0.51280 0.61569 0.046231
## 6 0.01353740 5 0.49545 0.60341 0.047194
## 7 0.01288111 6 0.48191 0.63800 0.050221
## 8 0.01212508 7 0.46903 0.64414 0.050036
## 9 0.01166271 8 0.45690 0.63844 0.050555
## 10 0.00991079 10 0.43358 0.65051 0.051510
## 11 0.00976265 12 0.41376 0.64757 0.050934
## 12 0.00881482 13 0.40399 0.64065 0.049923
## 13 0.00867909 14 0.39518 0.64899 0.050196
## 14 0.00842219 15 0.38650 0.65242 0.050696
## 15 0.00753355 16 0.37808 0.64398 0.050288
## 16 0.00694558 17 0.37055 0.65266 0.050559
## 17 0.00633390 18 0.36360 0.65541 0.050803
## 18 0.00592920 19 0.35727 0.67384 0.053504
## 19 0.00543763 21 0.34541 0.67605 0.053671
## 20 0.00291445 22 0.33997 0.68511 0.054318
## 21 0.00263183 23 0.33706 0.69723 0.054546
## 22 0.00243936 24 0.33442 0.70035 0.054479
## 23 0.00228756 25 0.33198 0.69996 0.054486
## 24 0.00211462 26 0.32970 0.70342 0.054822
## 25 0.00048643 27 0.32758 0.69550 0.054508
## 26 0.00010000 28 0.32710 0.69841 0.054734
En el siguiente gráfico se muestra el árbol sin realizar el proceso de poda. En este árbol, la primera variable utilizada para realizar las predicciones es S5, seguida de BMI. A partir de este punto, otras variables comienzan a ser utilizadas. Finalmente, el modelo evalúa 9 de las 10 variables posibles; la variable eliminada fue Sexo.
Después de realizar la poda del árbol, se obtiene uno menos complejo. Sin embargo, el modelo sigue utilizando las mismas variables para realizar sus predicciones.
Al graficar los valores observados frente a los predichos con este modelo, se observa un comportamiento escalonado en las predicciones. Se nota que una posible desventaja es que para rangos muy amplios en los valores observados, el modelo predice un único valor para todo ese rango. A pesar de ello, el modelo captura levemente la tendencia de los valores observados.
El modelo de KNN se construyó con un valor de K igual a 21, lo cual resulta en el Rsquared más alto.
Al graficar los valores observados frente a los predichos con este modelo, se observa que el modelo no captura la tendencia de los datos. Es especialmente evidente que en los valores extremos, se aleja más de los datos reales.
Después de correr el modelo con los mejores hiperparámetros, se utilizaron 231 vectores de soporte.
##
## Call:
## best.tune(METHOD = svm, train.x = Diabetes.tr[, -c(2, 11)], train.y = Diabetes.tr[,
## 11], ranges = list(epsilon = seq(0.1, 0.5, 0.05), cost = 2^(0:5)))
##
##
## Parameters:
## SVM-Type: eps-regression
## SVM-Kernel: radial
## cost: 1
## gamma: 0.1111111
## epsilon: 0.35
##
##
## Number of Support Vectors: 231
Al graficar los valores observados frente a los predichos con este modelo, se nota que el modelo sigue la tendencia de los datos: se ajusta mejor a los valores más pequeños. Sin embargo, en los valores centrales, el modelo tiende a subestimar la variable Y.
Según el gráfico, se determina que el mejor hiperparámetro de mtry es 3, donde se logra el mejor Rsquared.
El modelo identifica que las variables más importantes para realizar las predicciones son BMI, S5 y BP, mientras que la edad y el sexo no muestran mayor relevancia en los resultados.
Al graficar los valores observados frente a los predichos con este modelo, se nota que, al igual que con el modelo de regresión lineal múltiple y LPS1, el modelo tiende a sobreestimar las predicciones para valores pequeños y a subestimarlas para valores grandes. No obstante, el modelo muestra una tendencia en los datos donde los valores centrales se ajustan adecuadamente y pueden predecirse con menor error.
Al comparar la bondad de ajuste de los modelos, se observa que el mejor desempeño en términos de Rsquared lo muestra el árbol de decisión (66%), seguida por la Máquina de Soporte Vectorial (64%). En contraste, los modelos con menor desempeño son KNN (40.9%) y Random Forest (44.8%).
Si el objetivo es elegir un modelo que permita identificar las razones detrás de la progresión de la diabetes, sería recomendable optar por un modelo interpretativo. En este caso, el árbol de decisión y la regresión lineal múltiple son opciones viables. El árbol de decisión ayuda a identificar las variables más importantes para la predicción, mientras que la regresión lineal múltiple permite observar el impacto positivo o negativo de las variables en la progresión de la enfermedad a través de sus coeficientes.
Por otro lado, si se prioriza la precisión en la estimación del progreso de la diabetes y se valora menos la interpretación detallada de resultados, entonces un modelo menos interpretativo como la Máquina de Soporte Vectorial podría ser más adecuado.
En conclusión, el árbol de decisión parece ser una opción equilibrada, ya que combina una capacidad razonable de predicción con la capacidad de interpretar los resultados, haciendo de él un modelo más completo en términos de predicción e interpretación de datos.
## Rsquared ICC
## MRL 0.521 0.686
## PLS 0.510 0.675
## tree 0.660 0.795
## knn 0.409 0.536
## svm 0.640 0.770
## RF 0.448 0.614
Al comparar la bondad de ajuste de los modelos con los datos de prueba, se observa que el modelo con mejor desempeño en términos de Rsquared es la Regresión Lineal Múltiple (47.9%), seguido por Random Forest (46.3%) y PLS1 (46%). Por otro lado, los modelos con menor desempeño son el Árbol de Decisión (27.4%) y KNN (26.3%).
A diferencia de los resultados con los datos de entrenamiento, se observa que el modelo de Árbol de Decisión muestra un sobreajuste significativo, ya que su rendimiento disminuye considerablemente al evaluarlo con los datos de prueba. El modelo SVM tiene un desempeño promedio cercano al 45%, lo que indica que no es tan relevante para la predicción de nuevas observaciones en comparación con otros modelos.
Si el objetivo es elegir un modelo que permita entender las razones detrás de la progresión de la diabetes, sería recomendable optar por un modelo interpretable. En este caso, la Regresión Lineal Múltiple es una opción ideal, ya que permite medir el impacto positivo o negativo del progreso de la enfermedad a través de sus coeficientes. Por otro lado, si la interpretabilidad del modelo no es crucial, Random Forest y PLS1 también son una buena elección, dado su desempeño comparable.
En resumen, los modelos muestran una notable disminución en su precisión al realizar predicciones con datos nuevos, con un rendimiento por debajo del 50% en términos de Rsquared. Los tres modelos más destacados son la Regresión Lineal Múltiple Random Forest y PLS1. La decisión entre ellos dependerá de si se necesita interpretar el modelo o no.
## Rsquared ICC
## MRL 0.479 0.651
## PLS 0.46 0.624
## tree 0.274 0.545
## knn 0.263 0.387
## svm 0.443 0.639
## RF 0.463 0.615