rmarkdownEste 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.
rmarkdownEl formato de respuesta es el siguiente:
El formato tiene un puntaje asignado dentro de la nota.
Importante: Deben ser suprimidos los mensajes y warnings del informe.
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
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)
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)
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
## ------------------------------------------------------
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.
Pista: Utilice todas las variables categóricas de la base.
brand <- rpart(vote~region+sex+education, data = pleb,method="class")
rpart.plot(brand)
Ahora utilizaremos el método de validación cruzada para estimar la precisión de su modelo.
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)
pred<- predict(pleb2,newdata=test,type="class")
test$pred<-pred
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.