rm(list=ls())
library(data.table)
library(rpart.plot)
library(rpart)
library(caret)
library(factoextra)
library(dbscan)
library(ggplot2)
library(tidyverse)
library(rattle)
library(leaflet)
library(gganimate)
library(ggcorrplot)
library(plotly)
library(janitor)
library(RColorBrewer)
library(tidyverse)
library(caret)
library(jtools)
library(scales)
library(lubridate)
library(corrgram)
library(corrplot)
library(knitr)
library(moderndive)
path <- 'C:/Users/Rorro Bielenberg/Desktop/UAI/Data Science/Control 3/'
cancer<- fread(paste0(path,'Cancer_de_mama.csv'))
prima<- fread(paste0(path,'Prima_de_seguros.csv'))
###P1 Realice dos modelos de regresión lineal multiple para predecir la variable charges (prima de seguros) ¿Cuál predice mejor dentro de muestra?. (8 puntos) Observación: No obtendrá puntaje si compara un modelo de regresión de una variable.
regresion1 <- lm(formula = charges ~ sex + age,
data = prima)
sum1 <- summary(regresion1)
sum1
##
## Call:
## lm(formula = charges ~ sex + age, data = prima)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8821 -6947 -5511 5443 48203
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2343.62 994.35 2.357 0.0186 *
## sexmale 1538.83 631.08 2.438 0.0149 *
## age 258.87 22.47 11.523 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11540 on 1335 degrees of freedom
## Multiple R-squared: 0.09344, Adjusted R-squared: 0.09209
## F-statistic: 68.8 on 2 and 1335 DF, p-value: < 2.2e-16
prima[smoker == "yes", smoker := 1]
prima[smoker == "no", smoker := 0]
regresion2 <- lm(formula = charges ~ children + smoker,
data = prima)
sum2 <- summary(regresion2)
sum2
##
## Call:
## lm(formula = charges ~ children + smoker, data = prima)
##
## Residuals:
## Min 1Q Median 3Q Max
## -19773 -5013 -1199 3902 32413
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7755.7 292.9 26.48 < 2e-16 ***
## children 622.4 168.7 3.69 0.000233 ***
## smoker1 23601.7 503.7 46.85 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7435 on 1335 degrees of freedom
## Multiple R-squared: 0.6236, Adjusted R-squared: 0.623
## F-statistic: 1106 on 2 and 1335 DF, p-value: < 2.2e-16
Respuesta: la regresion 2 predice de mejor manera la variable charges. Esto se puede determinar al observar la columna Pr(>t).
###P2 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)
predkfolds1<-train(charges~children+smoker,data=prima,method="lm",trControl= setupKCV)
print(predkfolds1)
## Linear Regression
##
## 1338 samples
## 2 predictor
##
## No pre-processing
## Resampling: Cross-Validated (5 fold)
## Summary of sample sizes: 1070, 1072, 1070, 1070, 1070
## Resampling results:
##
## RMSE Rsquared MAE
## 7443.289 0.6230588 5681.239
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
set.seed(12345)
setupKCV <- trainControl(method = "cv" , number = 5)
predkfolds2<-train(charges~age+sex,data=prima,method="lm",trControl= setupKCV)
print(predkfolds2)
## Linear Regression
##
## 1338 samples
## 2 predictor
##
## No pre-processing
## Resampling: Cross-Validated (5 fold)
## Summary of sample sizes: 1070, 1072, 1070, 1070, 1070
## Resampling results:
##
## RMSE Rsquared MAE
## 11530.98 0.09602173 9025.163
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
Respuesta: Sigue siendo mejor la regresion 2 (aqui es preadkfolds1), ya que tiene RMSE y MAE mucho más precisos. Se mantiene la misma conclusion.
###P3 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. (8 puntos) Realice un gráfico de codo
Pista1: Si existen outliers recuerde eliminarlos, para esto cree un nuevo objeto donde se encuentren estas dos variables.
samp <- prima[,.(children,charges)][complete.cases(prima[,.(children,charges)])]
samp <- samp[sample(.N,1000),.(children,charges)]
fviz_nbclust(x = samp, FUNcluster = kmeans, method = "wss", k.max = 15,
diss = get_dist(samp, method = "euclidean"), nstart = 50)
cluster <- kmeans(x = samp,centers = 4,nstart = 50)
fviz_cluster(cluster,data=samp,geom = "point")
PARTE 2
###P4 Realice dos modelos de árboles de clasificación de la variable diagnosis. 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.
arbol1 <- rpart(diagnosis ~ area_mean + texture_mean, data=cancer, method = "class")
rpart.plot(arbol1, main = "Árbol de Clasificación")
arbol2 <- rpart(diagnosis ~ radius_mean + perimeter_mean, data=cancer, method = "class")
rpart.plot(arbol2, main = "Árbol de Clasificación")
set.seed(12345)
Parte 3
##P5 ¿Para qué se utiliza validación cruzada (Cross Validation)?
Respuesta: La validacion cruzada se utiliza en modelos de prediccion para determinar la precision de estos. De esat manera, se puede testear nuestro modelo con datos que no están en la muestra.
##P6 ¿Cual es la diferencia entre regresión y clasificación?
Respuesta: Por una lado una regresión tiene como objetivo, predecir valores continuos (finitos), mientras que la clasificación se utiliza, cuando se desea obtener una clase o etiqueta, viendo que clase pertenece un conjunto de resultados.