Trabajo Aplicado Análisis Multivariado, Validación Cruzada y Árboles de decisión con rmarkdown

Fecha de entrega: Domingo 20 de junio 23:59 hrs

Este trabajo tiene como finalidad realizar análisis multivariado, validación cruzada y árboles de decisión de una base de datos , utilizando rmarkdown. Se evaluará la correcta ejecución del código y el uso eficiente de las herramientas de codificación entregadas.

Formato de rmarkdown

El formato de respuesta es el siguiente:

  1. Antes de la respuesta debes agregar un encabezado de tercer nivel (###) con P y el número de pregunta.
  2. Abajo del encabezado, debe estar escrita la pregunta.
  3. Agregar la linea de código.
  4. Agregar el output de ser necesario.
  5. Si requieres agregar alguna respuesta analítica, agregar al final de la pregunta (después del output).
  6. El título del informe debe tener un encabezado de primer nivel (#) y debe ser: Actividad 7.
  7. En los autores, agregar todos/as los/as integrantes del grupo
  8. El nombre del archivo .rmd debe tener la siguiente forma: Actividad 7 - Apellido.

El formato tiene un puntaje asignado dentro de la nota.

Importante: Deben ser suprimidos los mensajes y warnings del informe.

Reglas de Envío

  1. Este trabajo debe ser publicado en su rpubs personal.
  2. Se habilitará en webcursos un apartado para que envien el link (no el archivo .rmd) de la actividad publicada en su rpubs.
  3. El plazo para enviar el link de su actividad (no su perfil de rpubs) es hasta las 13:00 hrs. del día lunes 29 de Junio.

Chile: Plebiscito de 1988

  1. Instale y cargue todos los paquetes que necesita para trabajar con data.table, modelos de predicción de regresión y CART y Cross-Validation.
library(data.table)
library(jtools)
library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
library(rpart)
library(rpart.plot)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(dbscan)
library(ggplot2)
library(leaflet)
library(car)
## Loading required package: carData
  1. Cargar base de datos Chile que viene en el paquete car. Recuerde que la base debe transofrmarse a data.table y que con ?Chile puede ver más detalles de esta base.
plebiscito<-Chile
plebiscito<-as.data.table(plebiscito)
  1. Cree una muestra de la base que solo contenga los votos Yes y No. A partir de ahora todo el trabajo se realizará con esa base!
pleb1<-plebiscito[vote=="Y"]
pleb2<-plebiscito[vote=="N"]
pleb<-rbind(pleb1,pleb2)
  1. Plantee dos modelos de predcción distintos que logren predecir en ingreso de las personas. (recuerde eliminar las observaciones que tengan NA en las variables de interés)
pleb<-pleb[!is.na(income)]
pleb<-pleb[!is.na(age)]
pleb<-pleb[!is.na(education)]

reg1<-lm(data=pleb,formula=income~vote)
summ(reg1)
## MODEL INFO:
## Observations: 1704
## Dependent Variable: income
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(1,1702) = 0.07, p = 0.79
## R² = 0.00
## Adj. R² = -0.00 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                         Est.      S.E.   t val.      p
## ----------------- ---------- --------- -------- ------
## (Intercept)         37096.31   1455.43    25.49   0.00
## voteY                -561.06   2076.65    -0.27   0.79
## ------------------------------------------------------
reg2<-lm(data=pleb,formula=income~vote+age+education+sex)
summ(reg2)
## MODEL INFO:
## Observations: 1704
## Dependent Variable: income
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(5,1698) = 104.66, p = 0.00
## R² = 0.24
## Adj. R² = 0.23 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                         Est.      S.E.   t val.      p
## ----------------- ---------- --------- -------- ------
## (Intercept)         -1662.79   3416.58    -0.49   0.63
## voteY                6347.35   1878.83     3.38   0.00
## age                   349.10     64.90     5.38   0.00
## educationPS         59450.80   2609.62    22.78   0.00
## educationS          24514.15   2149.82    11.40   0.00
## sexM                  373.83   1844.54     0.20   0.84
## ------------------------------------------------------
  1. Evalue cuál modelo predice mejor el ingreso. Sea claro/a con su criterio de evaluación. Recuerde que no es lo mismo predecir dentro de muestra que fuera de muestra.

Ahora queremos predecir el voto de una persona en el plebiscito, es decir, si el computador es premium yes o no utilizando árboles de decisión.

  1. Para esto plantee un modelo utilizando la información de la base de datos. Muestre su modelo.

Pista: Utilice todas las variables categóricas de la base.

brand <- rpart(vote~region+sex+education, data = pleb,method="class")
rpart.plot(brand)

  1. Explique los resultados de su modelo.

Ahora utilizaremos el método de validación cruzada para estimar la precisión de su modelo.

  1. Cree el set de entrenamiento y de prueba. Utilice set.seed(1234). Muestre los resultados del set de entrenamiento.
set.seed(1234)

ind<-createDataPartition(pleb[,vote],times = 1,p = 0.8,list = F)
## Warning in createDataPartition(pleb[, vote], times = 1, p = 0.8, list = F): Some
## classes have no records ( A, U ) and these will be ignored
train<-data.frame(pleb)[ind,]
test<-data.frame(pleb)[-ind,]

pleb2 <- rpart(vote~., data = train,method="class")

rpart.plot(pleb2)

  1. Calcule la predicción del modelo
pred<- predict(pleb2,newdata=test,type="class")
test$pred<-pred
  1. Calcule la matriz de confusión y la precisión del modelo. Muestre y explique ambos.
matriz<-table(test$vote,pred)
matriz
##    pred
##       A   N   U   Y
##   A   0   0   0   0
##   N   0 158   0  15
##   U   0   0   0   0
##   Y   0  15   0 152
precis<-sum(diag(matriz))/sum(matriz)
precis
## [1] 0.9117647

Bonus: Proponga un modelo que tenga una mejor predicción que el modelo anterior.