P1

Cargue todos los paquetes que necesita para trabajar con data.table, modelos de predicción de regresión, árboles de decisión, cluster y Cross-Validation. Además, cargue la base de datos. (1 punto) Importante: Verifique la clase (class) de las variables que vaya a utilizar en todos sus modelos y si es necesario transformarla a numérica o factor, hágalo!

library(data.table)
library(margins)
library(caret)
library(ggplot2)
library(rpart)
library(rpart.plot)
library(factoextra)
library(dbscan)
library(tidyverse)
library(sp)
library(rgdal)
library(KernSmooth)
library(classInt)
library(jtools)
library(moderndive)
library(knitr)
rm(list=ls())
Heart <- fread("C:/Users/franc/Desktop/7° Semestre/Data science/Control 3/heart.csv")
str(Heart)
## Classes 'data.table' and 'data.frame':   303 obs. of  14 variables:
##  $ age     : int  63 37 41 56 57 57 56 44 52 57 ...
##  $ sex     : int  1 1 0 1 0 1 0 1 1 1 ...
##  $ cp      : int  3 2 1 1 0 0 1 1 2 2 ...
##  $ trtbps  : int  145 130 130 120 120 140 140 120 172 150 ...
##  $ chol    : int  233 250 204 236 354 192 294 263 199 168 ...
##  $ fbs     : int  1 0 0 0 0 0 0 0 1 0 ...
##  $ restecg : int  0 1 0 1 1 1 0 1 1 1 ...
##  $ thalachh: int  150 187 172 178 163 148 153 173 162 174 ...
##  $ exng    : int  0 0 0 0 1 0 0 0 0 0 ...
##  $ oldpeak : num  2.3 3.5 1.4 0.8 0.6 0.4 1.3 0 0.5 1.6 ...
##  $ slp     : int  0 0 2 2 2 1 1 2 2 2 ...
##  $ caa     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ thall   : int  1 2 2 2 2 1 2 3 3 2 ...
##  $ output  : int  1 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, ".internal.selfref")=<externalptr>
Heart[,cp:= as.factor(cp)]
Heart[,restecg:= as.numeric(restecg)]
Heart[,age:= as.numeric(age)]
Heart[,chol:= as.numeric(chol)]
Heart[,trtbps:= as.numeric(trtbps)]
Heart[,thalachh:= as.numeric(thalachh)]
Heart[,oldpeak:= as.numeric(oldpeak)]
Heart[,thall:= as.numeric(thall)]
Heart[,output:= as.factor(output)]

P2

Realice dos modelos de regresión lineal multiple para predecir la Presión arterial en reposo ¿Cuál predice mejor dentro de muestra?. (8 puntos) Observación: No obtendrá puntaje si compara un modelo de regresión de una variable.

f01 <- formula(trtbps~age+sex+chol+oldpeak)  #1
reg_lm <- lm(f01,data=Heart)
summary(reg_lm)
## 
## Call:
## lm(formula = f01, data = Heart)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -37.613 -10.830  -0.893   9.743  62.517 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 100.95857    7.30785  13.815  < 2e-16 ***
## age           0.44980    0.11120   4.045 6.67e-05 ***
## sex          -1.36118    2.12732  -0.640   0.5228    
## chol          0.01978    0.01934   1.022   0.3075    
## oldpeak       2.18451    0.85459   2.556   0.0111 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 16.73 on 298 degrees of freedom
## Multiple R-squared:  0.1023, Adjusted R-squared:  0.09021 
## F-statistic: 8.487 on 4 and 298 DF,  p-value: 1.697e-06
f03 <- formula(trtbps~age+sex+chol+oldpeak+thalachh+fbs)  #2
reg_lm3<- lm(f03,data=Heart)
summary(reg_lm3)
## 
## Call:
## lm(formula = f03, data = Heart)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -34.598 -11.028  -1.601  10.537  60.259 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 84.32614   11.85464   7.113 8.56e-12 ***
## age          0.49361    0.11880   4.155 4.26e-05 ***
## sex         -1.52471    2.10061  -0.726  0.46851    
## chol         0.01692    0.01911   0.886  0.37656    
## oldpeak      2.72209    0.87820   3.100  0.00212 ** 
## thalachh     0.08972    0.04744   1.891  0.05956 .  
## fbs          7.26986    2.68885   2.704  0.00725 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 16.47 on 296 degrees of freedom
## Multiple R-squared:  0.1354, Adjusted R-squared:  0.1179 
## F-statistic: 7.728 on 6 and 296 DF,  p-value: 9.896e-08

El modelo que mejor predice la presion arterial en reposo es el Modelo 2 (f03) se debe a que el R cuadrático del modelo 2 es superior al del modelo 1, lo que nos explica que el modelo tiene tiene una capacidad de explicar el 14%de los cambios en la presion arterial, a comparación del 10% del Modelo 1. Además, El modelo 2 cuenta con variables que son estadísticamente más significativas.

P3

Realice validación cruzada (CV) a los modelos de la pregunta anterior por el método K-folds con 5 folds. ¿Se mantienen las conclusiones anteriores?. (8 putos) Pista1: Recuerde setear la semilla set.seed(12345). Pista2: Si existen variables con NA recuerde que puede excluirlas esas observaciones del análisis, pero no las elimine.

set.seed(12345)

setupKCV <- trainControl(method = 'cv',number = 5, p=0.7)

train(f01, data=Heart, method='lm', na.action=na.exclude,trControl=setupKCV)
## Linear Regression 
## 
## 303 samples
##   4 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (5 fold) 
## Summary of sample sizes: 242, 242, 242, 244, 242 
## Resampling results:
## 
##   RMSE      Rsquared    MAE     
##   16.76187  0.09425527  12.90449
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
train(f03, data=Heart, method='lm', na.action=na.exclude,trControl=setupKCV)
## Linear Regression 
## 
## 303 samples
##   6 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (5 fold) 
## Summary of sample sizes: 243, 241, 242, 243, 243 
## Resampling results:
## 
##   RMSE      Rsquared   MAE     
##   16.35302  0.1289375  12.83672
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE

Dado que el RMSE y el MAE del Modelo 2(f03) es menor al del Modelo 1, y que el R cuadrático del Modelo 2 es mayor al del Modelo 1, se podría decir que la conclusión de la pregunta 2 se mantiene. O sea, el Modelo 2 es mas preciso.

P4

Proponga dos variables sobre las cuales segmentar la muestra, en orden de hacer análisis de clusters con el método de kmeans. Muestre sus resultados gráficamente. (5 puntos) Pista1: Si existen outliers recuerde eliminarlos, para esto cree un nuevo objeto donde se encuentren estas dos variables.

ggplot(data = Heart,aes(x=trtbps,y=thalachh))+
  geom_point()

simp <- Heart[,.(trtbps,thalachh)]

cluster <- kmeans(x = simp,centers = 3,nstart = 50)
fviz_cluster(cluster,data=simp,geom = "point")

Las variables propuest

P5

Realice dos modelos de árboles de clasificación de la variable output. Pruebe cuál modelo clasifica mejor con validación cruzada. Entrene el modelo con un 80% de la muestra y testee con el 20% restante. Explicite qué modelo es mejor y porqué. (12 puntos) Importante: Recuerde setear la semilla set.seed(12345). Observación: No obtendrá puntaje si compara un modelo de clasificación de una variable.

Supuesto empleado: hemos convertido la variable dummy output a una variable tipo factor. Nos percatamos que la precisión de la variable output es menor cuando esta es de tipo numerica. Por ende, al convertirla en tipo factor, aumenta el nivel de precisión

arbol_1 <- rpart(output~., data=Heart, method = "class")
rpart.plot(arbol_1, main = "Árbol de Clasificación: Área cardiovascular")

set.seed(12345)

div <- createDataPartition(Heart$output, times = 1, p = 0.8, list = F) 

train <- Heart[div,] 
test <- Heart[-div,]
arbol_2 <- rpart(output~., data = train, method = "class")

rpart.plot(arbol_2)

prediccion_1 <- predict(arbol_2, newdata = test, type = "class")
matriz <- table(test$output, prediccion_1)
matriz
##    prediccion_1
##      0  1
##   0 19  8
##   1  2 31
precision <- sum(diag(matriz))/sum(matriz)
precision
## [1] 0.8333333
prediccion_2 <- predict(arbol_1, data = Heart, type = "class")
matriz2 <- table(Heart$output, prediccion_2)
matriz2
##    prediccion_2
##       0   1
##   0 109  29
##   1  12 153
precision2 <- sum(diag(matriz2))/sum(matriz2)
precision2
## [1] 0.8646865

Tomando en cuenta que la precisión de la predicción del arbol de decision 2 es del 83%, y la precision de la predicción del arbol de decisión 1 es del 86,5%, se podría decir que el Modelo más preciso es el modelo de arbol de decisión 1, o sea del modelo completo.

P6

Dada la charla del profesor Esteban Lopéz, explique brevemente, ¿Por qué es importante Spatial Analytics?

Spatial Analytics va mucho mas alla del análisis de mapas. Sino, integra combinacion de metodos y herramientas para la explicacion de resultados en base a el análisis espacial y sus características.Además, es uno de los grandes potenciadores de la manipulacion de datos, pues fue permitiendo identificar patrones, puntos de interés, y otra variables pertinentes.

La distribucion de datos espaciales nos permite entender el cómo se comportan distintos elementos de estudio, y que significancia y relevancia tienen en ese espacio dado. Permite, así mismo, identificar y comprender y la interrelación entre variables.

P7

Mencioné tres ejemplos del machine learning, intesligencia artificial, que señaló el profesor Alexis Montecinos.

El profesor hizo énfasis en los siguientes usos del machine learning;