library("MASS")
library("tidyverse")
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Loading tidyverse: dplyr
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag(): dplyr, stats
## select(): dplyr, MASS
segreg = read.csv("data/output/2014-15-variables-escolares-euskadi.csv")
Este documento es un ejemplo de los primeros tanteos para acercarse a entender los datos que hemos extraĆdo para el ejercicio 3. EducaciĆ³n pĆŗblica-privada: abriendo datos abiertos.
Partimos de un archivo con 28 variables y rnrow(segreg)
zonas escolares.
zona_id | zona | provincia | alum_bec_mat_escolar | alum_bec_comedor | alum_mat_escolar_total | alum_comedor_total | perc_material_m15 | perc_comedor_m16 | perc_bec_mat_escolar_pub | perc_bec_mat_escolar_priv | dif_perc_bec_mat_escolar_dif | perc_bec_comedor_pub | perc_bec_comedor_priv | dif_perc_bec_comedor | total_alumnado | perc_alum_ext_pub | perc_alum_ext_priv | perc_alum_ext_todos | indice_desigualdad | alum_ext_total | alum_ext_pub | alum_ext_kristau_eskola | alum_ext_partaide | alum_ext_otros_priv | perc_reparto_alum_ext_pub | perc_reparto_alum_ext_priv | municipios_barrios |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
111 | Amurrio | araba | 1031 | 557 | 2351 | 2219 | 44 | 25 | 48 | 35 | 13 | 33 | 14 | 19 | 1467 | 8.3 | 4.3 | 6.7 | 1.9 | 98 | 73 | 15 | 10 | NA | 74.5 | 25.5 | Aiara, Amurrio, Artziniega, Okondo, OrduƱa |
112 | Llodio | araba | 1246 | 594 | 3349 | 2777 | 37 | 21 | 38 | 35 | 3 | 26 | 15 | 11 | 1971 | 7.5 | 5.1 | 6.4 | 1.5 | 126 | 80 | 44 | 2 | NA | 63.5 | 36.5 | Llodio, Orozko |
121 | Vitoria-Oeste | araba | 4696 | 1966 | 10802 | 10050 | 43 | 20 | 44 | 43 | 1 | 25 | 7 | 18 | 7032 | 11.3 | 1.8 | 8.2 | 6.3 | 578 | 537 | 36 | NA | 5 | 92.9 | 7.1 | Gasteizk, Zigoitia, Zuia |
122 | Vitoria-Norte | araba | 3824 | 1732 | 8839 | 7408 | 43 | 23 | 44 | 41 | 3 | 31 | 6 | 25 | 5002 | 16.4 | 11.1 | 14.6 | 1.5 | 731 | 545 | 186 | NA | NA | 74.6 | 25.4 | Arrazua, Gasteiz |
123 | Vitoria-Sureste | araba | 6878 | 3027 | 22585 | 17588 | 31 | 17 | 46 | 19 | 27 | 35 | 5 | 30 | 12489 | 21.2 | 4.1 | 10.6 | 5.2 | 1330 | 1016 | 310 | 2 | 2 | 76.4 | 23.6 | Alegria-Dulantzi, Gasteiz, Legutiano, Urkabustaiz |
Explorar cantidad de zonas, zonas por provincia, alumnado en cada zona, cĆ³mo representar el histograma de una variable.
# previsualizando los datos
# alumnos por provincia, nĆŗmero de alumnos por zona y % extanjeros en privada
# ggplot(data = segreglimpio) +
# geom_point(mapping = aes(x = total_alumnado, y = perc_alum_ext_priv)) +
# facet_wrap(~ provincia, nrow = 1)
# cantidad de zonas escolares por provincia
ggplot(data = segreglimpio) +
geom_bar(mapping = aes(x = provincia)) +
labs(title = "cantidad de zonas por provincia")
#cantidad de alumnos por provincia
ggplot(segreglimpio) +
geom_bar(stat='identity', aes(x = provincia, y = total_alumnado, fill=provincia )) +
labs(x = "provincia", y = "alumnos") +
labs(title = "cantidad de alumnos por provincia")
#cantidad de alumnos por zona
ggplot(segreglimpio) +
geom_bar(stat='identity', aes(x = reorder(zona, total_alumnado), y = total_alumnado, fill=provincia )) +
labs(x = "zona", y = "alumnos") +
labs(title = "cantidad de alumnos por zona") +
coord_flip()
# medias de % de extranjeros
# ggplot(data = segreglimpio) +
# stat_summary(
# mapping = aes(x = provincia, y = perc_alum_ext_pub),
# fun.ymin = min,
# fun.ymax = max,
# fun.y = median
# )
# ggplot(data = segreglimpio, mapping = aes(x = provincia, y = perc_alum_ext_pub)) +
# geom_boxplot()
# histograma
ggplot(data = segreglimpio) +
geom_histogram(mapping = aes(x = perc_alum_ext_pub), binwidth = 1) +
labs(title = "Histograma para una variable: porcentaje de alumnado extranjero en red pĆŗblica")
# ggplot(segreglimpio) +
# geom_density(aes(perc_alum_ext_pub, color=provincia)) +
# geom_density(aes(perc_alum_ext_priv, color=provincia))
Ahora vamos a cambiar el formato en que vienen los datos para poder realizar otras operaciones. usaremos melt de la librerĆa reshape.
require(reshape)
## Loading required package: reshape
##
## Attaching package: 'reshape'
## The following object is masked from 'package:dplyr':
##
## rename
## The following objects are masked from 'package:tidyr':
##
## expand, smiths
# convierte los datos a dos columnas: nombre de variable y valor
segregprepara <-segreglimpio
#se renombran los nombres de las variables para simplificar
colnames(segregprepara) = c("material_pub","material_priv","comedor_pub","comedor_priv","extran_pub","extran_priv","zona","provincia","alumnado")
segregm <- melt(segregprepara[,-9])
## Using zona, provincia as id variables
knitr::kable(
segregm[c(1:2),],
caption = "Primeras lĆneas del data frame"
)
zona | provincia | variable | value |
---|---|---|---|
Amurrio | araba | material_pub | 48 |
Llodio | araba | material_pub | 38 |
Las visualizaciones muestras las variables: cada punto es un valor de una variable de una zona escolar.
ggplot(segregm) +
geom_point(mapping = aes(x = variable, y = value, colour=provincia), position = "jitter", alpha = 8/10, size = 2) +
labs(y = "porcentaje", x = "variables") +
coord_cartesian(ylim = c(0, 70)) + scale_y_continuous(breaks=seq(0,100,10))
ggplot(data = segregm, mapping = aes(x = variable, y = value)) +
geom_boxplot()
ggplot(data = segregm, mapping = aes(x = variable, y = value, colour=provincia)) +
geom_boxplot()
Vamos a mirar si existen correlaciones entre los valores de los diferentes indicadores para cada una de las zonas:
# Calculando Pairs
pairs(~perc_alum_ext_pub+perc_alum_ext_priv+perc_bec_comedor_pub+perc_bec_comedor_priv+perc_bec_mat_escolar_pub+perc_bec_mat_escolar_priv,data=segreglimpio,
xlim=c(0,70),ylim = c(0,70),
lower.panel = NULL
)
Ahora con una librerĆa que tambiĆ©n calcula la corelaciĆ³n (pearson).
library(GGally)
##
## Attaching package: 'GGally'
## The following object is masked from 'package:dplyr':
##
## nasa
ggpairs(segreglimpio,
columns = c(1:6),
title = "buscando correlaciones",
# upper = list(continuous = "density"),
aes(colour = provincia, alpha = 0.4))
Ahora un ejemplo de cĆ³mo calcular correlaciones ponderadas:
# Calculate weighted corelations
library(wCorr)
## wCorr v1.9.1
weightedCorr(y=perc_bec_comedor_pub , x=perc_bec_mat_escolar_pub, method="pearson", weights=total_alumnado)
## [1] 0.8002274
weightedCorr(y=perc_bec_comedor_priv , x=perc_bec_mat_escolar_priv, method="pearson", weights=total_alumnado)
## [1] 0.6157376
Ahora vamos a ver si existen correlaciones entre las diferencias para cada indicador de cada zona entre la red pĆŗblica y la privada:
# creates dataframe with diferences in variables
comedor = data.frame(perc_bec_comedor_pub - perc_bec_comedor_priv)
material = data.frame(perc_bec_mat_escolar_pub - perc_bec_mat_escolar_priv)
extran = data.frame(perc_alum_ext_pub - perc_alum_ext_priv)
comedorx = data.frame(perc_bec_comedor_pub / perc_bec_comedor_priv)
materialx = data.frame(perc_bec_mat_escolar_pub / perc_bec_mat_escolar_priv)
extranx = data.frame(perc_alum_ext_pub / perc_alum_ext_priv)
segregdif = data.frame(comedor,material,extran,comedorx,materialx,extranx,provincia,zona)
colnames(segregdif) = c("comedor","material","extran","comedorx","materialx","extranx","provincia","zona")
ggpairs(segregdif,
title = "buscando correlaciones en las diferencias red pĆŗblica - privada",
columns = c(1:3),
aes(colour = provincia, alpha = 0.4))
ggpairs(segregdif[provincia=="gipuzkoa",],
title = "buscando correlaciones en las diferencias red pĆŗblica - privada en Gipuzkoa",
columns = c(1:3),
aes(colour = provincia, alpha = 0.4))
ggpairs(segregdif,
title = "buscando correlaciones",
columns = c(4:6),
aes(colour = provincia, alpha = 0.4))
Visualizamos las diferencias entre la red pĆŗblica y privada de cada zona en cada una de las variables: % becarios de material escolar, % becarios beca comedor y % alumnado extranjero. Esto es, cada valor representado es la diferencia entre:
% becarios de material escolar en red pĆŗblica - % becarios de material escolar en red privada
segregmdif <- melt(segregdif[,c(1:3,7,8)])
## Using provincia, zona as id variables
ggplot(segregmdif) +
geom_point(mapping = aes(x = variable, y = value, colour=provincia), position = "jitter", alpha = 8/10, size = 2) +
labs(y = "valor", x = "diferencias") +
scale_y_continuous(breaks=seq(0,100,10))
ggplot(segregmdif, mapping = aes(x = variable, y = value)) +
geom_boxplot()
ggplot(segregmdif, mapping = aes(x = variable, y = value, fill=provincia)) +
geom_boxplot()
Visualizamos los cocientes entre la red pĆŗblica y privada de cada zona en cada una de las variables: % becarios de material escolar, % becarios beca comedor y % alumnado extranjero. Esto es, cada valor representado es la diferencia entre:
% becarios de material escolar en red pĆŗblica / % becarios de material escolar en red privada
segregmcoc <- melt(segregdif[,c(4:6,7,8)])
## Using provincia, zona as id variables
ggplot(segregmcoc) +
geom_point(mapping = aes(x = variable, y = value, colour=provincia), position = "jitter", alpha = 8/10, size = 2) +
labs(y = "valor", x = "cocientes") +
scale_y_continuous(breaks=seq(0,100,10))
ggplot(segregmcoc, mapping = aes(x = variable, y = value)) +
geom_boxplot()
ggplot(segregmcoc, mapping = aes(x = variable, y = value, fill=provincia)) +
geom_boxplot()
Como el valor de Rioja Alavesa para e cociente dealumnado extranjero es de 44 impide ver bien los datos, repetimos las visualizaciones eliminƔndolo:
segregmcoc <- melt(segregdif[,c(4:6,7,8)])
## Using provincia, zona as id variables
ggplot(segregmcoc[-115,]) +
geom_point(mapping = aes(x = variable, y = value, colour=provincia), position = "jitter", alpha = 8/10, size = 2) +
labs(y = "valor", x = "cocientes") +
scale_y_continuous(breaks=seq(0,100,10))
ggplot(segregmcoc[-115,], mapping = aes(x = variable, y = value)) +
geom_boxplot()
ggplot(segregmcoc[-115,], mapping = aes(x = variable, y = value, fill=provincia)) +
geom_boxplot()
# parcoord(segreglimpio[,c(1:6)], col = segreg[,3], var.label = TRUE, ylim = c(0,72))
#
#
# parcoord(segreg[,c(1,2)], col = segreg[,3], var.label = T)
# parcoord(segreg[,c(3,4)])
# parcoord(segreg[,c(5,6)])
Y ahora unos ejercicios para comparar variables y diferencias de variables entre sĆ con un mĆ©todo mĆ”s manual del que quemos explorado en la secciĆ³n de correlaciones.