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")

AnƔlisis para conocer los datos

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.

Las primeras 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

Primeros tanteos

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"
)
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()

Correlaciones

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))

Diferencias

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()

Cocientes

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()

Coordenadas paralelas

# 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)])

Comparativa variables

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.