P1

Cargue los paquetes y las bases necesarias para poder trabajar con la base de datos de personas, hogares y viajes de la Encuesta Origen y Destino en clase data.table.

library(data.table)
library(factoextra)
library(ggplot2)
library(caret)
library(jtools)
library(rpart)
library(rpart.plot)
hogar<-fread("Base_Hogares.csv")
personas<-fread("Base_Personas.csv")
viajes<-fread("Base_Viajes.csv")

P2

  1. Para poder tener un mejor análisis, es necesario analizar las características del hogar y de las personas que lo componen. Para esto, crea un objeto “EOD” que sea un merge entre la base de hogares y personas, dado el identificador de hogares.
EOD<-merge(x=hogar,y=personas, by="Hogar")
  1. Reemplaza el objeto “EOD” con un merge entre la base EOD y viajes, dados los identificadores de hogares y de personas. De esta forma, tendrá información más detallada de las familias, las personas y los flujos de viajes.
EOD<-merge(x=EOD,y=viajes, by=c("Hogar","Persona"))

P3

El análisis se realizará a nivel de personas. Para esto crea un objeto denominado “personaseod” que contenga las variables edad, sexo, educ, IngresoFinal, Factor, comunahg, Macrozonahg, la distancia promedio que recorre cada persona y los minutos de viaje promedio. Además, borre todas las observaciones que tienen ´NA´ en alguna de las variables.

personaseod<-EOD[,.(edad,sexo, educ,IngresoFinal, Factor, comunahg, Macrozonahg,EOD[,mean(distancia), by=.(Persona,Hogar)], EOD[,mean(minutosviaje),by=.(Persona,Hogar)])]
personaseod<-na.omit(personaseod)
colnames(personaseod)[10]<-"promDist"
colnames(personaseod)[13]<-"promTiem"
personaseod$Persona.1<-NULL
personaseod$Hogar.1<-NULL

` ### P4 a) Realice un análisis de cluster utilizando kmeans y 3 centers con las variables de edad e IngresoFinal. Cree una variable en la base de datos que guarde a que cluster corresponde cada observación

variables<-personaseod[,.(edad, IngresoFinal)]
K1<-kmeans(variables,centers = 3)
personaseod$clusters<-K1$cluster
  1. Muestre el gráfico de los cluster. Pista:Recuerde cargar el paquete factoextra.
fviz_cluster(K1,data=variables,geom = "point")

c) Realice un gráfico de barra que contenga el número de personas que hay en cada ciudad, separados por cluster dentro de la comuna. Pista:Recuerde cargar el paquete ggplot2.

ggplot(data=personaseod, aes(x=comunahg, y=Persona)) + geom_bar(stat="identity")+facet_wrap(facets ="clusters")

### P5 Realice dos modelos de regresión lineal para predecir el ingreso de cada persona ¿Cuál predice mejor dentro de muestra? Pista:Recuerde cargar el paquete caret.

personaseod[,educ:=as.factor(educ)]
personaseod[,sexo:=as.factor(sexo)]
personaseod[,IngresoFinal:=as.integer(IngresoFinal)]
personaseod[,promDist:=as.integer(promDist)]
personaseod[,promTiem:=as.integer(promTiem)]
reg1<-lm(data=personaseod, formula=IngresoFinal~sexo+educ+promTiem)
reg2<-lm(data=personaseod,formula=IngresoFinal~promDist+sexo+clusters)

summ(reg1)
## MODEL INFO:
## Observations: 57876
## Dependent Variable: IngresoFinal
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(8,57867) = 1578.48, p = 0.00
## R² = 0.18
## Adj. R² = 0.18 
## 
## Standard errors: OLS
## ---------------------------------------------------------------------
##                                       Est.       S.E.   t val.      p
## ----------------------------- ------------ ---------- -------- ------
## (Intercept)                      213202.30   25818.41     8.26   0.00
## sexoMujer                       -162616.88    3202.55   -50.78   0.00
## educNo tiene                    -117469.01   27211.93    -4.32   0.00
## educPrebásicos                 -129532.56   27566.37    -4.70   0.00
## educPrimarios                    -43111.37   25977.89    -1.66   0.10
## educProfesional                  363161.08   25865.83    14.04   0.00
## educSecundarios                   89948.03   25819.89     3.48   0.00
## educTécnico Profesional         234612.84   26056.26     9.00   0.00
## promTiem                           -100.09      85.15    -1.18   0.24
## ---------------------------------------------------------------------
summ(reg2)
## MODEL INFO:
## Observations: 57876
## Dependent Variable: IngresoFinal
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(3,57872) = 30218.34, p = 0.00
## R² = 0.61
## Adj. R² = 0.61 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                           Est.      S.E.    t val.      p
## ----------------- ------------ --------- --------- ------
## (Intercept)         2093753.39   6267.31    334.08   0.00
## promDist                 -0.02      0.18     -0.09   0.93
## sexoMujer            -22637.75   2260.59    -10.01   0.00
## clusters            -668160.97   2294.02   -291.26   0.00
## ---------------------------------------------------------
train.control <- trainControl(method = "cv", number = 3)
pred<-train(IngresoFinal~sexo+educ+promTiem,data=personaseod,method="lm",trControl= train.control)
pred2<-train(IngresoFinal~promDist+sexo+clusters, data=personaseod, method="lm",trcontrol=train.control)
print(pred)
## Linear Regression 
## 
## 57876 samples
##     3 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (3 fold) 
## Summary of sample sizes: 38584, 38584, 38584 
## Resampling results:
## 
##   RMSE      Rsquared   MAE     
##   384235.5  0.1792706  215027.2
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
print(pred2)
## Linear Regression 
## 
## 57876 samples
##     3 predictor
## 
## No pre-processing
## Resampling: Bootstrapped (25 reps) 
## Summary of sample sizes: 57876, 57876, 57876, 57876, 57876, 57876, ... 
## Resampling results:
## 
##   RMSE      Rsquared   MAE     
##   263745.4  0.6113124  160815.9
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
El modelo 1 muestra un valor mayor en su RMSE (suma cuadratica del error), ademas de un menor valor del R^2, esto quiere decir que el modelo 2 es mejor predictor que el modelo 2, pues muestra una mayor aproximación a los datos reales 

P6

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? Pista: Recuerde setear la semilla.

set.seed(12345)
setupKCV <- trainControl(method = "cv" , number = 5)

predkfolds1<-train(IngresoFinal~sexo+educ+promTiem,data=personaseod,method="lm",trControl= setupKCV)

predkfolds2<-train(IngresoFinal~promDist+sexo+clusters,data=personaseod,method="lm",trControl= setupKCV)

print(predkfolds1)
## Linear Regression 
## 
## 57876 samples
##     3 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (5 fold) 
## Summary of sample sizes: 46300, 46301, 46301, 46302, 46300 
## Resampling results:
## 
##   RMSE      Rsquared   MAE     
##   384210.2  0.1792052  215026.2
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
print(predkfolds2)
## Linear Regression 
## 
## 57876 samples
##     3 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (5 fold) 
## Summary of sample sizes: 46301, 46300, 46301, 46301, 46301 
## Resampling results:
## 
##   RMSE      Rsquared   MAE   
##   264774.1  0.6105037  160994
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
El caso de validar los datos por el metodo Kfolds da un valor muy similar a la validación realizada por el packete de datos Caret, mantiene la misma tendencia donde es mejor predictor el modelo 2

P7

Realice dos modelos de árboles de clasificación. Pruebe cuál clasifica mejor con validación cruzada. Entrene el modelo con un 80% de la muestra y testee con el 20% restante. Pista 1:Recuerde cargar el paquete rpart y rpart.plot Pista 2: Recuerde setear la semilla.