Jornada de Iniciación Científica - Centro Regional de Chiriquí


Tema 2: Gráficos en R - Dispersión o puntos


Los diagramas de dispersión (gráfico de puntos, diagrama de XY) usan una colección de puntos colocados usando coordenadas cartesianas para mostrar valores de dos variables. Al mostrar una variable en cada eje, se puede detectar si existe una relación o correlación entre las dos variables.
Se pueden interpretar varios tipos de correlación a través de los patrones mostrados en los diagramas de dispersión. Estos son: positivo (los valores aumentan juntos), negativo (un valor disminuye a medida que el otro aumenta), nulo (sin correlación).

#cargar librerias ggplot
#-----------------------------------------
library(ggplot2)

# leer datos de SchoolsMiamiDade
SchoolsMiamiDade<- read.csv("SchoolsMiamiDade.csv")

Significado de las variables del dataframe SchoolsMiamiDade

SchoolName : Nombre de la Escuela
BoardDistrict : Núemero de Dsitrito donde esta la escuela
SchoolGrade : Grado al que se le aplico la prueba
Reading2012 : puntaje de 1 a 100 en Lectura 2012
Reading2013: puntaje de 1 a 100 en Lectura 2013
ReadingDifference: diferencia entre 2013 y 2012 en lectura
Math2012: puntaje de 1 a 100 en Matemática 2012
Math2013: puntaje de 1 a 100 en Matemática 2013
MathDifference: diferencia entre 2013 y 2012 en matemática

Crear gráfico de dispersión en R

Se pueden construir gráfico de dispersión con ggplot2 utilizando la geometría geom_point() el cual requiere de 2 variables como entrada X /Y por lo menos una númerica.

Gráfico de dispersión de los puntajes de lectura en 2012 en cada Distrito

El gráfico muestra el puntaje de cada escuela por Distrito donde las escuelas de los distritos 3-9 tienen una mejor puntuación. En este ejemplo se utiliza la variable númerica Reading2012 y la variable BoardDistrict.

#grafico de dipsersión 
ggplot(SchoolsMiamiDade, aes(Reading2012,BoardDistrict))+
  geom_point() 
## Warning: Removed 17 rows containing missing values (geom_point).

Gráfico de dispersión de la lectura en 2012 de cada Distrito con línea de referencia

Podemos crear una línea de referencia para iniciar un análisis del gráfico.
Las líneas en el gráfico se realizan con la capa geom_vline().

A manera de ejercicio, seleccionaremos las escuelas que tienen un puntaje mayor o igual a 75, creamos una línea para separar la escuelas con ese puntaje.

# grafico con dos variables y linea vertical 
ggplot(SchoolsMiamiDade, aes(Reading2012,BoardDistrict))+
  geom_point() +
  geom_vline(xintercept = 75) 
## Warning: Removed 17 rows containing missing values (geom_point).


Añadir color a la línea, ancho de línea y tipo de linea al gráfico como estética.

# grafico con dos variables y linea vertical 
ggplot(SchoolsMiamiDade, aes(Reading2012,BoardDistrict))+
  geom_point() +
  geom_vline(xintercept = 75, colour ="red", linetype="dashed", size=1) 
## Warning: Removed 17 rows containing missing values (geom_point).

Añadir un texto o etiqueta en el gráfico como información.

# grafico con dos variables y linea vertical 
ggplot(SchoolsMiamiDade, aes(Reading2012,BoardDistrict))+
  geom_point() +
  geom_vline(xintercept = 75, colour ="red", linetype="dashed", size=1) +
  geom_text(aes(label="MEDIA = 75", x=82,y=2), colour="red")
## Warning: Removed 17 rows containing missing values (geom_point).

¿Cuántas escuelas están por encima de la media (75)?

Para responde esta pregunta utilizaremos la función subset(tabla, variable) para crear un subgrupo de datos con el filtro, escuelas con puntaje mayor o igual a 75.

#escuelas con calificación en lectura mayor e igual a 75
#creamos un subgrupo
escuelaslECTURA <- subset(SchoolsMiamiDade, SchoolsMiamiDade$Reading2012 >= 75)

#numero de escuelas
nrow(escuelaslECTURA)
## [1] 62
#porcentaje de escuelas con calificación en lectura mayor e igual a 75
# numero de escuelas con 75 o mas puntos / total de escuelas estudiadas
porcentaje_75 <- nrow(escuelaslECTURA) / nrow(SchoolsMiamiDade)
porcentaje_75 
## [1] 0.1347826
#porcentake de las escuelas por encima de 75 puntos
porcentaje75 <- porcentaje_75  *100
porcentaje75
## [1] 13.47826

¿Cuáles son los distritos con escuelas por encima de la media (75)?

Para conocer esta dato utilizamos las tablas de contingencia y el dataFrame creado escuelaslECTURA.

# escuelas con mayor de 75 puntos por distrito 
# las seleccionamos del subfrupo escuelaslECTURA
escuelas_75 <- table(escuelaslECTURA$BoardDistrict)
escuelas_75
## 
## (1) (2) (3) (4) (5) (6) (7) (8) (9) 
##   1   4   8   3   7  13  10   9   7

Utilizar condición en el color de lo spuntos relacionado con el puntaje de las escuelas

Para colorear las escuelas de puntaje mayor a 75 debemos utilizar la condición de color Reading2012 >= 75. Si deseamos eliminar la leyenda de color (que no aporta nada), podemos colocar al final la capa guides(color = FALSE) .

# grafico con dos variables y linea vertical 
ggplot(SchoolsMiamiDade, aes(Reading2012,BoardDistrict))+
  geom_point(aes(color=Reading2012 >= 75), size=3) +
  geom_vline(xintercept = 75, colour ="red", linetype="dashed", size=1) +
  geom_text(aes(label="MEDIA = 75", x=82,y=2), colour="red") +
  labs(title="Escuelas por Distrito en puntajes de Lectura",
       subtitle="Escuelas  mayor a 75 puntos en Lectura - 2012")+
  guides(color = FALSE) 
## Warning: Removed 17 rows containing missing values (geom_point).

Análisis de los datos

De las 460 escuelas, el 13.48% está por encima de la media nacional (75 puntos) donde todos los Distritos tienen escuelas por encima del puntaje, pero los distritos (6) y (7) son los que más escuelas tiene por encima de 75 puntos con 13 y 10 respectivamente.

Gráfico de Dispersión con dos variable numéricas

Utilizamos las variables relacionadas con los puntajes de matematica y lectura 2012

ggplot(SchoolsMiamiDade, aes(Reading2012,Math2012))+
  geom_point(aes(color=BoardDistrict), size=3) +
  labs(title="Escuelas  con puntajes  en Matemática y Lectura",
       subtitle="Datos de USA - 2012") 
## Warning: Removed 91 rows containing missing values (geom_point).

Modificar el tamaño de los puntos y la transparencia (valores de 0 a 1)

Se utiliza la propiedad alpha para la transparencia y ver puntos o burbujas solapadas. Se utiliza size para modificar el tamaño de los puntos.

ggplot(SchoolsMiamiDade, aes(Reading2012,Math2012))+
  geom_point(aes(color=BoardDistrict, size=8, alpha=0.1)) +
  labs(title="Escuelas  con puntajes de lectura en Matemática y Lectura",
       subtitle="Datos de USA - 2012") +
  ylab("Puntos Matemática") + xlab("Puntos Lectura")
## Warning: Removed 91 rows containing missing values (geom_point).