.rmd que va a entregar.AF_nombre1apellido_nombre2apellido.rmd.aeantequeda@uc.cl y rsozac@mat.uc.cl con el asunto MINEDUC_nombre1_nombre2. (Ambos archivos: .rmd y.html)Resumen_matricula.csv y Oferta.csv proporcionadas por MINEDUC. Disponibles en la página del curso en educacioncontinua.uc.cl y en la carpeta de google drive compartida.21:00 hrs.Observación: Comprobar que en el archivo .html final a entregar, aparezca todo el código escrito y la salida cuando sea necesario (En el caso de cargar los datos, solo el código y no es necesario mostrar los datos.)
Librerias y bases de datos requeridas:
library(rmarkdown)
library(tidyverse)
library(readr)
library(ggplot2)
library(ggrepel)
library(ggThemeAssist)
library(dplyr)
library(microbenchmark)
library(flextable)
library(leaflet)
Oferta_establecimientos <- read_delim("D:/Desktop/Curso R_Mineduc/EXAMEN/Oferta_establecimientos.csv",";", escape_double = FALSE,
trim_ws = TRUE)
Res_matricula_EE_Oficial_2019 <- read_delim("D:/Desktop/Curso R_Mineduc/EXAMEN/Res_matricula_EE_Oficial_2019.csv",";",
escape_double = FALSE, trim_ws = TRUE)Realice un join con ambas bases considerando solo una variable para la unión, de tal manera de no obtener valores NA para ninguna variable. guarde lo obtenido en un objeto llamado Base_completa.
Cree una tabla resumen que muestre la cantidad de establecimientos por comuna en la región de Magallanes, junto con el promedio de alumnos matriculados en cada comuna. Presente, en un formato adecuado, las primeras observaciones de esta tabla.
Realice un gráfico de barra completo (agregando titulo, subtitulo, ejes, estilo, colores, etc..) para la tabla obtenida en (2). Destaque con distinto color la comuna con más y menos establecimientos.
Genere una nueva columna que divida los establecimientos en Zona Norte, Centro y Sur. A partir de esto, genere un gráfico adecuado que permita comparar el número de estudiantes extranjeros en cada región.
Cree una tabla de resumen por región que contenga, además, las siguientes variables:
Est_funcionando: Establecimientos funcionandocon_matricula : Establecimientos con matriculafunc_con_matricula: Condicionado en ambas, es decir “ESTADO_ESTAB = 1” y “MAT_TOTAL > 0”num_total_matricula: Número total de alumnos matrículados en un establecimiento.Convierta a factor la columna NOM_REG_RBD_A y ordénela según el siguiente orden:
Ejemplo de salida de la tabla:
Realice un reshape usando gather(), tal que la columna tipo y totales se vean de la siguiente forma:
Ejemplo de salida de la tabla:
Filtre la tabla anterior para graficar solo los con_matricula de cada región. Debe utilizar colores seleccionados por usted para cada región.
Genere un párrafo con código inline que comente las regiones con mayor y menor número de establecimientos con matrícula. Agregue además dos imágenes representativas de dichas regiones.
resumen_matricula<-rename(Res_matricula_EE_Oficial_2019, rbd="RBD")
Base_completa<-inner_join(Oferta_establecimientos, resumen_matricula, by="rbd")Comunas | PromedioAlumnos | Establecimientos |
RÍO VERDE | 10.00 | 1 |
TIMAUKEL | 10.50 | 2 |
TORRES DEL PAINE | 16.00 | 2 |
LAGUNA BLANCA | 30.00 | 1 |
SAN GREGORIO | 43.00 | 1 |
PRIMAVERA | 68.00 | 1 |
CABO DE HORNOS | 227.50 | 2 |
NATALES | 348.08 | 12 |
PORVENIR | 442.00 | 3 |
PUNTA ARENAS | 553.83 | 36 |
Base_c_zonas<-Base_completa %>% mutate(Zona=case_when(COD_REG_RBD%in%c(1,2,3,4,15) ~ "Norte",COD_REG_RBD%in%c(5,13,6) ~ "Centro", TRUE ~ "Sur" )) %>% arrange(Zona)%>% group_by(Zona)%>% summarise(AlumnosExtranjeros=sum(MAT_EXT), AlumnosChilenos=sum(MAT_CHI))
Base_c_zonas$Zona<-factor(Base_c_zonas$Zona, levels=c("Norte", "Centro", "Sur"))
ZonaxNac<-gather(Base_c_zonas, key = "Nacionalidad", value = "Matricula", -Zona)Gráfico: Matrícula de estudiantes extranjeros
Se creó una Tabla de resumen por región, la cual considera 3 variables nuevas para analizar:
Se considerá una región “pequeña” cuando la cantidad de establecmientos Funcionando con Matrícula es menor a 100 y el Número de Matrícula es menor a 30.000 estudiantes.
Region | Est_funcionando | con_matricula | func_con_matricula | num_total_matricula |
ANTOF | 143 | 143 | 143 | 108741 |
ARAUC | 975 | 975 | 975 | 184599 |
ATCMA | 124 | 124 | 124 | 58184 |
AYP | 91 | 91 | 91 | 45940 |
AYSEN | 73 | 73 | 73 | 22348 |
BBIO | 759 | 758 | 758 | 271625 |
COQ | 542 | 540 | 540 | 138454 |
LAGOS | 810 | 810 | 810 | 156255 |
LGBO | 491 | 491 | 491 | 165952 |
MAG | 61 | 61 | 61 | 26100 |
MAULE | 655 | 655 | 655 | 193231 |
NUBLE | 354 | 354 | 354 | 88537 |
RIOS | 387 | 387 | 387 | 69663 |
RM | 1709 | 1709 | 1709 | 1085271 |
TPCA | 125 | 125 | 125 | 67391 |
VALPO | 765 | 765 | 765 | 295199 |
## # A tibble: 16 x 5
## Region Est_funcionando con_matricula func_con_matricula num_total_matricula
## <fct> <int> <int> <int> <dbl>
## 1 AYP 91 91 91 45940
## 2 TPCA 125 125 125 67391
## 3 ANTOF 143 143 143 108741
## 4 ATCMA 124 124 124 58184
## 5 COQ 542 540 540 138454
## 6 VALPO 765 765 765 295199
## 7 RM 1709 1709 1709 1085271
## 8 LGBO 491 491 491 165952
## 9 MAULE 655 655 655 193231
## 10 NUBLE 354 354 354 88537
## 11 BBIO 759 758 758 271625
## 12 ARAUC 975 975 975 184599
## 13 RIOS 387 387 387 69663
## 14 LAGOS 810 810 810 156255
## 15 AYSEN 73 73 73 22348
## 16 MAG 61 61 61 26100
Region | Est_funcionando | con_matricula | func_con_matricula | num_total_matricula |
AYP | 91 | 91 | 91 | 45940 |
TPCA | 125 | 125 | 125 | 67391 |
ANTOF | 143 | 143 | 143 | 108741 |
ATCMA | 124 | 124 | 124 | 58184 |
COQ | 542 | 540 | 540 | 138454 |
VALPO | 765 | 765 | 765 | 295199 |
RM | 1709 | 1709 | 1709 | 1085271 |
LGBO | 491 | 491 | 491 | 165952 |
MAULE | 655 | 655 | 655 | 193231 |
NUBLE | 354 | 354 | 354 | 88537 |
BBIO | 759 | 758 | 758 | 271625 |
ARAUC | 975 | 975 | 975 | 184599 |
RIOS | 387 | 387 | 387 | 69663 |
LAGOS | 810 | 810 | 810 | 156255 |
AYSEN | 73 | 73 | 73 | 22348 |
MAG | 61 | 61 | 61 | 26100 |
Se ha creado una tabla que recopila los tipos o estados de establecimientos.
Region | Tipo | Total |
AYP | funcionando | 91 |
TPCA | funcionando | 125 |
ANTOF | funcionando | 143 |
ATCMA | funcionando | 124 |
COQ | funcionando | 542 |
VALPO | funcionando | 765 |
RM | funcionando | 1709 |
LGBO | funcionando | 491 |
MAULE | funcionando | 655 |
NUBLE | funcionando | 354 |
BBIO | funcionando | 759 |
ARAUC | funcionando | 975 |
RIOS | funcionando | 387 |
LAGOS | funcionando | 810 |
AYSEN | funcionando | 73 |
MAG | funcionando | 61 |
AYP | con_matricula | 91 |
TPCA | con_matricula | 125 |
ANTOF | con_matricula | 143 |
ATCMA | con_matricula | 124 |
COQ | con_matricula | 540 |
VALPO | con_matricula | 765 |
RM | con_matricula | 1709 |
LGBO | con_matricula | 491 |
MAULE | con_matricula | 655 |
NUBLE | con_matricula | 354 |
BBIO | con_matricula | 758 |
ARAUC | con_matricula | 975 |
RIOS | con_matricula | 387 |
LAGOS | con_matricula | 810 |
AYSEN | con_matricula | 73 |
MAG | con_matricula | 61 |
AYP | func_con_matricula | 91 |
TPCA | func_con_matricula | 125 |
ANTOF | func_con_matricula | 143 |
ATCMA | func_con_matricula | 124 |
COQ | func_con_matricula | 540 |
VALPO | func_con_matricula | 765 |
RM | func_con_matricula | 1709 |
LGBO | func_con_matricula | 491 |
MAULE | func_con_matricula | 655 |
NUBLE | func_con_matricula | 354 |
BBIO | func_con_matricula | 758 |
ARAUC | func_con_matricula | 975 |
RIOS | func_con_matricula | 387 |
LAGOS | func_con_matricula | 810 |
AYSEN | func_con_matricula | 73 |
MAG | func_con_matricula | 61 |
Gráfico: Establecimientos con matrícula por región.
- Analisis final:
De acuerdo con la información de oferta educativa y matrícula registrada para el año 2019, se puede afirmar que de las 16 regiones del país, la región que presenta la mayor cantidad de establecimiento con matricula es la región RM. Por otra parte la región que presentan la mas baja cantidad de Establecimientos Educativos con matrícula es la región MAG. Finalmente señalar que la región mediana en relación a la cantidad de EE.EE con matrícula es la región RIOS.
Imagen de la región con mas EE.EE: RM, Plaza de la Dignidad, Santiago.
Imagen de la región con menos EE.EE: MAG, Estrecho de Magallanes, un lugar entre la Patagonia y la Tierra del Fuego.
Se seleccionan 10 variables continuas de Base_completa. Calcule el promedio y desviación estándar de estas variables utilizando dos métodos diferentes.
Genere las funciones Promedio y d_estándar, las cuales reciben como argumento un vector y retornan un valor numérico. Utilícelas para realizar el mismo cálculo de antes.
Hint: Recuerde que \[ \bar{x} = \frac{1}{n}\sum_{i=1}^n x_i, \quad \sigma = \sqrt{\frac{1}{n-1}\sum_{i=1}^n (x_i - \bar{x})^2}\]
Instale el paquete microbenchmark y cárguelo a su sesión. Intercambie los strings “Métodos” del siguiente código por las líneas correspondientes a cada mecanismo utilizado antes. Por ejemplo, en “Método 1” debiese ser reemplazado por todo el código que se utiliza para calcular el promedio y desviación estándar en el primer método. Comente lo que observa.
Nota: La ayuda de R puede llegar a ser útil para entender el funcionamiento microbenchmark.
Desafío Opcional: Genere un mapa de la región metropolitana, donde reporte el nombre y el número de matriculados en el popup y el número de vacantes totales en la etiqueta.
Con el objetivo de unir la base de ‘oferta con matrícula’, de una forma distinta a la realizada en la “Parte 1” (es decir no utilizaremos ‘Distinct’), creamos la Base_Completa, ademas se corregirá la latitud y longitud que provine de la base de oferta educativa. Se procederá de la siguiente forma:
Oferta_EE<- read_delim("D:/Desktop/Curso R_Mineduc/EXAMEN/Oferta_establecimientos.csv",
";", escape_double = FALSE, col_types = cols(lat = col_character(),
lon = col_character()), trim_ws = TRUE)
Oferta_EE$lat <- as.numeric(gsub(",",".", Oferta_EE$lat))
Oferta_EE$lon<- as.numeric(gsub(",",".", Oferta_EE$lon))
Matricula<- read_delim("D:/Desktop/Curso R_Mineduc/EXAMEN/Res_matricula_EE_Oficial_2019.csv",
";", escape_double = FALSE, trim_ws = TRUE)## Parsed with column specification:
## cols(
## .default = col_double(),
## NOM_RBD = col_character(),
## NOM_REG_RBD_A = col_character(),
## NOM_COM_RBD = col_character(),
## NOM_DEPROV_RBD = col_character()
## )
## See spec(...) for full column specifications.
Matricula <- Matricula %>% rename(rbd = RBD)
Oferta_EE<- Oferta_EE %>%
group_by(rbd) %>%
summarise(cupos_totales=sum(cupos_totales),vacantes=sum(vacantes),
vacantes_pie=sum(vacantes_pie),
vacantes_prioritarios=sum(vacantes_prioritarios),
vacantes_alta_exigencia_t=sum(vacantes_alta_exigencia_t),
vacantes_alta_exigencia_r=sum(vacantes_alta_exigencia_r),
vacantes_regular=sum(vacantes_regular),
lat=mean(lat),lon=mean(lon))
Base_Completa <- Oferta_EE %>% inner_join(Matricula,by="rbd")Ahora se procederá a seleecionar las ’Variables Continuas", con el objetivo de calcular estadisticos tales como: Promedio y Desviasión Estándar, con dos metodos distintos, pero que generan el mismo calculo.
Una vez que contamos con la base ‘Variables_Continua’, estamos preparados para calcular los estadigrafos:
## cupos_totales vacantes vacantes_pie MAT_HOM_TOT MAT_MUJ_TOT
## 337.56460813 118.45486111 3.66344246 187.95721726 181.27480159
## MAT_TOTAL MAT_CHI MAT_EXT MAT_NAC MAT_NO_ETNIA
## 369.23239087 352.07862103 17.14657738 0.00719246 342.15773810
## MAT_ETNIA
## 27.07465278
promedio_2<- Variables_Continuas%>% summarise(Cupos_Totales=mean(cupos_totales),Vacantes=mean(vacantes),Vacantes_PIE=mean(vacantes_pie),
MAT_HOM_TOT=mean(MAT_HOM_TOT), MAT_MUJ_TOT=mean(MAT_MUJ_TOT),
Matricula_Total=mean(MAT_TOTAL),MAT_CHI=mean(MAT_CHI),
MAT_EXT=mean(MAT_EXT),MAT_NO_ETNIA=mean(MAT_NO_ETNIA),
MAT_ETNIA=mean(MAT_ETNIA))
promedio_2## # A tibble: 1 x 10
## Cupos_Totales Vacantes Vacantes_PIE MAT_HOM_TOT MAT_MUJ_TOT Matricula_Total
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 338. 118. 3.66 188. 181. 369.
## # ... with 4 more variables: MAT_CHI <dbl>, MAT_EXT <dbl>, MAT_NO_ETNIA <dbl>,
## # MAT_ETNIA <dbl>
## cupos_totales vacantes vacantes_pie MAT_HOM_TOT MAT_MUJ_TOT
## 356.716755 112.892286 6.706222 225.606585 222.942552
## MAT_TOTAL MAT_CHI MAT_EXT MAT_NAC MAT_NO_ETNIA
## 418.419143 404.984764 47.631730 0.115511 403.140268
## MAT_ETNIA
## 50.758475
sd_2<-Variables_Continuas%>% summarise(Cupos_Totales=sd(cupos_totales),Vacantes=sd(vacantes),
Vacantes_PIE=sd(vacantes_pie),MAT_HOM_TOT=sd(MAT_HOM_TOT),
MAT_MUJ_TOT=sd(MAT_MUJ_TOT), Matricula_Total=sd(MAT_TOTAL),
MAT_CHI=sd(MAT_CHI),MAT_EXT=sd(MAT_EXT),MAT_NO_ETNIA=sd(MAT_NO_ETNIA),
MAT_ETNIA=sd(MAT_ETNIA))
sd_2## # A tibble: 1 x 10
## Cupos_Totales Vacantes Vacantes_PIE MAT_HOM_TOT MAT_MUJ_TOT Matricula_Total
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 357. 113. 6.71 226. 223. 418.
## # ... with 4 more variables: MAT_CHI <dbl>, MAT_EXT <dbl>, MAT_NO_ETNIA <dbl>,
## # MAT_ETNIA <dbl>
PromedioV <- function(vector){
n <- length(vector)
suma <- sum(vector)
Promedio=suma/n
return(Promedio)
}
DV<- function(vector){
n <- length(vector)
suma <- 0
for (x in 1:n) {
suma <- suma + (vector[x]-mean(vector))^2
}
DV=sqrt(suma/(n-1))
return(DV)
}
promedio_3 <- Variables_Continuas %>%summarise(Cupos_Totales=PromedioV(cupos_totales),Vacantes=PromedioV(vacantes),
Vacantes_PIE=PromedioV(vacantes_pie), MAT_HOM_TOT=PromedioV(MAT_HOM_TOT),
MAT_MUJ_TOT=PromedioV(MAT_MUJ_TOT), Matricula_Total=PromedioV(MAT_TOTAL),
MAT_CHI=PromedioV(MAT_CHI),MAT_EXT=PromedioV(MAT_EXT),
MAT_NO_ETNIA=PromedioV(MAT_NO_ETNIA), MAT_ETNIA=PromedioV(MAT_ETNIA))
promedio_3## # A tibble: 1 x 10
## Cupos_Totales Vacantes Vacantes_PIE MAT_HOM_TOT MAT_MUJ_TOT Matricula_Total
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 338. 118. 3.66 188. 181. 369.
## # ... with 4 more variables: MAT_CHI <dbl>, MAT_EXT <dbl>, MAT_NO_ETNIA <dbl>,
## # MAT_ETNIA <dbl>
sd_3<- Variables_Continuas %>% summarise(Cupos_Totales=DV(cupos_totales),Vacantes=DV(vacantes),
Vacantes_PIE=DV(vacantes_pie),MAT_HOM_TOT=DV(MAT_HOM_TOT),
MAT_MUJ_TOT=DV(MAT_MUJ_TOT), Matricula_Total=DV(MAT_TOTAL),
MAT_CHI=DV(MAT_CHI),MAT_EXT=DV(MAT_EXT),MAT_NO_ETNIA=DV(MAT_NO_ETNIA),
MAT_ETNIA=DV(MAT_ETNIA))
sd_3## # A tibble: 1 x 10
## Cupos_Totales Vacantes Vacantes_PIE MAT_HOM_TOT MAT_MUJ_TOT Matricula_Total
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 357. 113. 6.71 226. 223. 418.
## # ... with 4 more variables: MAT_CHI <dbl>, MAT_EXT <dbl>, MAT_NO_ETNIA <dbl>,
## # MAT_ETNIA <dbl>
## Unit: microseconds
## expr
## promedio_1 <- apply(Variables_Continuas, 2, mean)
## promedio_2 <- Variables_Continuas %>% summarise(Cupos_Totales = mean(cupos_totales), Vacantes = mean(vacantes), Vacantes_PIE = mean(vacantes_pie), MAT_HOM_TOT = mean(MAT_HOM_TOT), MAT_MUJ_TOT = mean(MAT_MUJ_TOT), Matricula_Total = mean(MAT_TOTAL), MAT_CHI = mean(MAT_CHI), MAT_EXT = mean(MAT_EXT), MAT_NO_ETNIA = mean(MAT_NO_ETNIA), MAT_ETNIA = mean(MAT_ETNIA))
## promedio_3 <- Variables_Continuas %>% summarise(Cupos_Totales = PromedioV(cupos_totales), Vacantes = PromedioV(vacantes), Vacantes_PIE = PromedioV(vacantes_pie), MAT_HOM_TOT = PromedioV(MAT_HOM_TOT), MAT_MUJ_TOT = PromedioV(MAT_MUJ_TOT), Matricula_Total = PromedioV(MAT_TOTAL), MAT_CHI = PromedioV(MAT_CHI), MAT_EXT = PromedioV(MAT_EXT), MAT_NO_ETNIA = PromedioV(MAT_NO_ETNIA), MAT_ETNIA = PromedioV(MAT_ETNIA))
## min lq mean median uq max neval
## 1993.7 2610.05 3415.866 2946.70 3248.65 25286.8 100
## 454.5 550.90 785.200 649.05 809.10 3962.7 100
## 416.0 547.95 704.922 652.50 818.10 1574.8 100
## Unit: microseconds
## expr
## sd_1 <- apply(Variables_Continuas, 2, sd)
## sd_2 <- Variables_Continuas %>% summarise(Cupos_Totales = sd(cupos_totales), Vacantes = sd(vacantes), Vacantes_PIE = sd(vacantes_pie), MAT_HOM_TOT = sd(MAT_HOM_TOT), MAT_MUJ_TOT = sd(MAT_MUJ_TOT), Matricula_Total = sd(MAT_TOTAL), MAT_CHI = sd(MAT_CHI), MAT_EXT = sd(MAT_EXT), MAT_NO_ETNIA = sd(MAT_NO_ETNIA), MAT_ETNIA = sd(MAT_ETNIA))
## sd_3 <- Variables_Continuas %>% summarise(Cupos_Totales = DV(cupos_totales), Vacantes = DV(vacantes), Vacantes_PIE = DV(vacantes_pie), MAT_HOM_TOT = DV(MAT_HOM_TOT), MAT_MUJ_TOT = DV(MAT_MUJ_TOT), Matricula_Total = DV(MAT_TOTAL), MAT_CHI = DV(MAT_CHI), MAT_EXT = DV(MAT_EXT), MAT_NO_ETNIA = DV(MAT_NO_ETNIA), MAT_ETNIA = DV(MAT_ETNIA))
## min lq mean median uq max neval
## 2219.4 2340.70 3030.657 2615.0 2891.85 32994.8 100
## 575.9 759.35 1021.253 838.5 1011.80 9387.8 100
## 1787522.9 1845515.80 1926603.582 1903231.9 1965434.60 2302772.0 100
leaflet(data = Base_Completa[Base_Completa$COD_REG_RBD==13,]) %>%
addTiles() %>%
addMarkers(lng = ~lon, lat = ~lat,label = ~ paste("Vacantes:", vacantes), popup = ~ paste(NOM_RBD,"Se encuentran matriculados",MAT_TOTAL,"estudiantes."), labelOptions = labelOptions(direction = "bottom", style = list("color" = "darkcyan",
"font-family" = "sans-serif",
"font-style" = "normal",
"box-shadow" = "5px 10px",
"font-size" = "12px")))