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")
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
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.
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).
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).
# 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).
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
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
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).
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.
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).
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).
Eliminar escuelas con valores () y (0) en los distritos que no aportan información al gráfico.
#mostrar si existes escuelas con valores () y (0) en los distritos
#SchoolsMiamiDade$BoardDistrict==c("()","(0)")
SchoolsMiami_clean <- subset(SchoolsMiamiDade, SchoolsMiamiDade$BoardDistrict!=c("()","(0)"))
ggplot(SchoolsMiami_clean, 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") +
guides(color = guide_legend("Distritos"))
## Warning: Removed 89 rows containing missing values (geom_point).
El gráfico nos muestra una correlación positiva (se muestra una tendencia hacia arriba de ambas variables) de los datos, donde las escuelas que son buenas en Lectura, tambien son buenas en Matemática.
Las mejores escuelas en ambas materias son del distrito 5, 6 y 8.
Hay una escuela con 100 puntos en lectura y matemática que pertenece al distrito 6.
ggplot(SchoolsMiami_clean, 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 por Distrito",
subtitle="Datos de USA - 2012") +
facet_wrap(~BoardDistrict)+
ylab("Puntos Matemática") + xlab("Puntos Lectura")+
guides(color = guide_legend("Distritos"))
## Warning: Removed 89 rows containing missing values (geom_point).
El gráfico muestra que aunque hay una correlación en los datos, los puntos son dispersos, por lo que hay una diferencia del puntaje en los diferentes años en lectura en lo saños 2012 y 2013.
ggplot(SchoolsMiami_clean, aes(Reading2012,Reading2013))+
geom_point(aes(color=BoardDistrict, size=8, alpha=0.1)) +
labs(title="Escuelas con puntajes de lectura por Distrito",
subtitle="Datos de USA - 2012") +
ylab("Puntos Lectura 2013") + xlab("Puntos Lectura 2012")+
guides(color = guide_legend("Distritos"))
## Warning: Removed 15 rows containing missing values (geom_point).
Utilizamos la variable ReadingDifference en el tamaño de los puntos para identificar cuanto han mejorado o empeorado las escuelas en los diferentes años.
ggplot(SchoolsMiami_clean, aes(Reading2012,Reading2013))+
geom_point(aes(color=BoardDistrict, size=ReadingDifference, alpha=0.1)) +
labs(title="Escuelas con puntajes de lectura por Distrito y diferencia de puntos por año",
subtitle="Datos de USA - 2012") +
ylab("Puntos Lectura 2013") + xlab("Puntos Lectura 2012") +
guides(color = guide_legend("Distritos"), size=FALSE, alpha= FALSE)
## Warning: Removed 15 rows containing missing values (geom_point).
Debemos crear un subgrupo de las diferencia de lectura mayores a 1. Este grupo me indica que 229 escuelas mejoraron en el 2013 con respecto al año 2012, que corresponde al 49.7% de las escuelas evaluadas.
escuelasMejora <- subset(SchoolsMiamiDade, SchoolsMiamiDade$ReadingDifference>=1)
nrow(escuelasMejora)
## [1] 229
#porcentaje de escuelas mejoradas
nrow(escuelasMejora) / nrow(SchoolsMiamiDade) *100
## [1] 49.78261
#calcular el promedio de lectura
mean(SchoolsMiamiDade$Reading2012)
## [1] NA
mean(SchoolsMiamiDade$Reading2013)
## [1] 52.07826
Al calcular el promedio del 2012 el valor es NA ya que no se puden utilizar funciones aritmeticas donde hay valores nulos.
Para omitir valores nulos debemos utilizar la función na.omit(variable). El mejor promedio de lectura fue en el año 2013 con 52.1 puntos.
#calcular el promedio de lectura en los dos años
mean(na.omit(SchoolsMiamiDade$Reading2012))
## [1] 50.9842
mean(na.omit(SchoolsMiamiDade$Reading2013))
## [1] 52.07826
Genere un gráfico de dispersión de la variable de Matematica 2013 y la variable categorica BoardDistrict.
Mostrar titulos , etiquetas X / y, tamaño de puntos.
¿Qué puede interpretar?
Crear Gráfico de las variables matematica 2013 y lectura 2013.
Mostrar titulos , etiquetas X / y, tamaño de puntos y color.
¿Qué información nos brinda el gráfico?
¿Cuántas escuelas mejoraron en matemática con respecto al año anterior? , Calcule el porcentaje de escuelas mejoradas.