rm(list=ls())
library(data.table)
library(rpart.plot)
library(rpart)
library(caret)
library(factoextra)
library(dbscan)
library(ggplot2)
library(tidyverse)
library(rattle)
path <- 'C:/Users/Rorro Bielenberg/Desktop/UAI/Data Science/Tarea 6/'
casen<- fread(paste0(path,'CASEN 2020 Valpo.csv'))
##Pregunta 1 Filtre la base Filtre la base “casen”, quedandose con solo aquellas observaciones cuya edad sea igual o mayor a 15 y donde la variable “activ” no sea NA. Que dicha base se siga llamando “casen”. Cree una nueva variable que se llame “cae_general”, la cual será valor “Ocupado” si “activ” = 1, “Desocupado” si “activ” = 2 e “Inactivo” si “activ” = 3.(2 pts.)
Luego, cree una nueva base llamada “casen_inf” que contenga solo aquellas observaciones que cumplan que “ocup_inf” sea 1 o 2. Cree una nueva variable “informalidad”, la cual aquiera valor “Informal” si “ocup_inf” = 1 e “Formal” si “ocup_inf” = 2. (2 pts.)
casen <- casen[edad >= 15]
sum(is.na(casen$activ))
## [1] 0
casen[activ == 1, cae_general := "Ocupado"]
casen[activ == 2, cae_general := "Desocupado"]
casen[activ == 3, cae_general := "Inactivo"]
casen_inf <- casen[ocup_inf == 1|ocup_inf == 2]
casen_inf[ocup_inf == 1, informalidad := "Informal"]
casen_inf[ocup_inf == 2, informalidad := "Formal"]
##Pregunta 2 - Clasificación Clasifique a los trabajadores formales e informales de acuerdo con su edad “edad” y años de escolaridad “esc2”. (2 pts)
Posteriormente, muestre el gráfico del arbol de decisión. Interprete los resultados. (4 pts.)
arbol1 <- rpart(informalidad ~ edad + esc2, data=casen_inf, method = "class")
rpart.plot(arbol1, main = "Árbol de Clasificación")
Interpretacion: Podemos interpretar, de todos los datos, el 68% es informal. Luego, genera una division por escolaridad, por personas con años escolaridad menor a 11 años, en donde si es menor a 11 se tendría trabajo formal, mientras que si es mayor, se tendria una ocupacion informal. Siguiendo, por la rama izquierda comienza la separacion por edad, donde si el sujeto es mayor o igual a 66 años, tiene una ocupacion formal, por otro lado, en el caso contrario, se tendra una ocupacion informal, dentro de la cual existe una exepcion, ya que si el sujeto es menor a 41 años, tiene una ocupacion fromal y el que no es menor a 41, tiene una informal, alcanzando en total el 100% de la muestra, si se suman los ultimos niveles del arbol.
##Pregunta 3 - Clasificación Volviendo a la base “casen”, cree una nueva base llamada “casen_sal” que contenga aquellas observaciones donde sist_salud va del 1 al 4. Luego, en esta nueva base, cree una columna llamada “sistema de salud” que adquiere el valor de “FONASA” si “sist_salud” = 1, “ISAPRE” si “sist_salud” = 2, “CAPREDENA” si “sist_salud” es = 3 y “PARTICULAR” si “sist_salud” es igual a 4. (2 pts.)
Clasifique a a las personas segun su sistema de salud. Para eso, considere las variables de años de escolaridad “esc2” e ingreso del trabajo “ytrabajocor”. (2 pts)
Posteriormente, muestre el gráfico del arbol de decisión. Interprete los resultados. (4 pts.)
casen_sal <- casen[sist_salud == 1|sist_salud == 2|sist_salud == 3|sist_salud == 4]
casen_sal[sist_salud == 1, sistema_de_salud := "FONASA"]
casen_sal[sist_salud == 2, sistema_de_salud := "ISAPRE"]
casen_sal[sist_salud == 3, sistema_de_salud := "CAPREDENA"]
casen_sal[sist_salud == 4, sistema_de_salud := "PARTICULAR"]
arbol2 <- rpart(sistema_de_salud ~ esc2 + ytrabajocor, data=casen_sal, method = "class")
rpart.plot(arbol2, main = "Árbol de Clasificación 2")
##Pregunta 4 - Grafico de codo Creamos base de muestra (muy pesada para graficar entera) y gaficamos distribución espacial: “esc2” son los años de escolaridad, mientras que “dau” es el decil de ingreso autonomo del hogar (entre más alto, mas rica la persona). En base al código entregado, cree un gráfico de codo para determinar el número de clusters óptimos. Justifique el valor escogido. (3 pts.)
samp <- casen_inf[,.(esc2,dau)][complete.cases(casen_inf[,.(esc2,dau)])]
samp <- samp[sample(.N,1000),.(esc2,dau)]
fviz_nbclust(x = samp, FUNcluster = kmeans, method = "wss", k.max = 15,
diss = get_dist(samp, method = "euclidean"), nstart = 50)
Respuesta: Numero de cluster optimos es el 5, ya que desde aquel se comienza a estabilizar la curva.
##Pregunta 5 - Clusters Muestre gráficamente la distribución de los clusers en la base de datos “samp”. Utilice el número de clusters óptimos declarados en ejercicio 04. (6 pts.)
k1<-kmeans(x=samp,centers=5,nstart=25)
fviz_cluster(k1,data=samp,geom = "point")