Determinar medidas estadísticas de localización media, mediana, moda, máximos mínimos y rango de un conjunto de datos usando funciones de R.
El proceso de este caso permite identificar las medidas de localización de media, mediana, moda, máximos, mínimos, rango y el significado de las mismas para interpretar si una distribución de datos es simétrica o asimétrica.
Primero se presenta como determinar los estadísticos manualmente por medio de programación y luego se identifica como determinar estos mismos valores estadísticos de manera más sencilla por medio de funciones que existen en los paquete base de R para media y mediana y funciones de librerías instaladas para la moda.
Finalmente se presenta el desarrollo de un caso en donde se cargan datos con valores de calificaciones de alumnos de una carrera de una Institución educativa, se utiliza sólo la variable promedio para encontrar los estadísticos media, median y moda.
En el proceso, los datos se visualizan por medio de la librería ggplot previamente instalada, el gráfico que se muestra es el histograma con lineas verticales que representan la media, mediana y moda.
Finalmente se hace una interpretación del caso identificando la simetría o asimetría del mismo.
El caso a desarrollar se trata de analizar un conjunto de datos relacionados con el promedio de los alumnos de una Institución educativa.
Los datos son descargados de github en en enlace: alumnos y se solicita encontrar estadísticos relacionados con la variable promedio contenidas en el conjunto de datos.
Se requieren cargar las librerías library(readr), library(ggplot2) y library(modeest) previamente instaladas con install.packages(“readr”), install.packages(“ggplot”) e install.packages(“modeest”). Esta librerías permiten cargar datos de archivos textos separados por coma o archivos del tipo csv, crear gráficas y visualizar datos de una manera más elegante y amigable, y para poder utilizar unos comandos que permiten determinar la moda de un vector de datos, todas en ese orden.
library(readr)
library(ggplot2)
library(modeest)
Se cargan los datos con la función readr() indicando la ruta de la dirección url en donde están listos para descargarse. Las funciones head y tail() significan que ponga los primeros diez y últimos diez registros del total de los datos.
datos <- read.csv(file = "https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/datos/promedios%20alumnos/ALUMNOS%20EJ2021.csv", sep = ",",
header = TRUE)
head(datos, 10)
## NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio Carrera
## 1 1 1 12 207 19 79.84 SISTEMAS
## 2 2 2 13 226 9 82.55 SISTEMAS
## 3 3 3 10 235 10 95.16 SISTEMAS
## 4 4 4 13 231 14 79.32 SISTEMAS
## 5 5 5 10 235 10 92.67 SISTEMAS
## 6 6 6 10 235 10 91.25 SISTEMAS
## 7 7 7 13 231 4 82.46 SISTEMAS
## 8 8 8 11 197 23 83.72 SISTEMAS
## 9 9 9 11 235 10 85.37 SISTEMAS
## 10 10 10 10 231 4 85.12 SISTEMAS
Antes de encontrar los estadísticos de media, mediana y moda será necesario depurar el conjunto de datos. Se eliminarán de los datos aquellos alumnos que no tienen promedio, es decir dejar solo los registros en los que \(promedio>0\).
Por medio de la función subset() vista anteriormente, se eliminan o filtran esos registros y luego se determinan los estadísticos.
datos <- subset(datos, Promedio > 0) significa quitar los alumnos que no tienen promedio aún y que para efectos de los estadísticos que se quiere no son necesarios.
datos.alumnos <- subset(datos, Promedio > 0)
n <- nrow(datos.alumnos)
n
## [1] 5535
Ahora el conjunto de datos tiene una cantidad de 5535 observaciones.
La función summary(datos.alumnos[3:7]) significa que solo muestre las columnas de la 3 a la 7 del conjunto de datos de alumnos.
datos.alumnos$Carrera <- factor(datos.alumnos$Carrera)
summary(datos.alumnos[3:7])
## Semestre Cr.Aprobados Cr.Cursando Promedio
## Min. : 2.000 Min. : 4 Min. : 3.0 Min. : 70.00
## 1st Qu.: 3.000 1st Qu.: 53 1st Qu.:23.0 1st Qu.: 83.25
## Median : 6.000 Median :109 Median :28.0 Median : 86.36
## Mean : 5.826 Mean :115 Mean :26.1 Mean : 86.60
## 3rd Qu.: 8.000 3rd Qu.:172 3rd Qu.:30.0 3rd Qu.: 89.83
## Max. :17.000 Max. :264 Max. :42.0 Max. :100.00
##
## Carrera
## INDUSTRIAL : 653
## ARQUITECTURA : 633
## CIVIL : 594
## GESTION : 518
## QUIMICA : 515
## ADMINISTRACION: 458
## (Other) :2164
media <- round(mean(datos.alumnos$Promedio),2)
mediana <- round(median(datos.alumnos$Promedio),2)
moda <- round(mfv(datos.alumnos$Promedio), 2)
media
## [1] 86.6
mediana
## [1] 86.36
moda
## [1] 86
titulo <- "Histograma de los Datos Alumnos"
subtitulo <- paste("Media=",media, " Mediana = ",mediana, " Moda=",moda)
ggplot(data = datos.alumnos, mapping = aes(x=Promedio)) +
geom_histogram(bins=30) +
ggtitle(titulo, subtitle = subtitulo) +
xlab('Valores') + ylab('Frecuencia') +
geom_vline(aes(xintercept = media,
color = "media"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = mediana,
color = "mediana"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = moda,
color = "moda"),
linetype = "dashed",
size = 1)
ggplot(datos.alumnos) +
geom_density(aes(x = Promedio), fill = 'steelblue') +
xlab("Promedios") +
ylab("Frecuencia") +
ggtitle("Distribución de la variable Promedio de Datos Alumnos (Densidad)", subtitle = subtitulo) +
theme_minimal() +
geom_vline(aes(xintercept = media,
color = "media"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = mediana,
color = "mediana"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = moda,
color = "moda"),
linetype = "dashed",
size = 1)
Con una variable llamada carrera se selecciona o filtran los datos de los alumnos que pertenecen a dicha carrera del conjunto e datos.alumnos; se utiliza nuevamente la función subset() que permite crear filtros por medio de una expresión que normalmente compara una variable con un valor.
Luego se determinan las medidas de localización media , mediana y moda de ese subconjunto de datos llamado carrera.
Se vuelven a utilizar nuevamente las variables media, mediana y moda sobre escribiendo los valores anteriores.
El proceso se repite para cada carrera incluyendo la visualización del histograma.
SISTEMAS <- subset(datos.alumnos, Carrera == 'SISTEMAS')
media <- round(mean(SISTEMAS$Promedio),2)
mediana <- round(median(SISTEMAS$Promedio),2)
moda <- round(mfv(SISTEMAS$Promedio), 2)
media
## [1] 87.16
mediana
## [1] 86.88
moda
## [1] 89.67
titulo <- "Histograma de los Alumnos SISTEMAS"
subtitulo <- paste("Media=",media, " Mediana = ",mediana, " Moda=",moda)
ggplot(data = SISTEMAS, mapping = aes(x=Promedio)) +
geom_histogram(bins=30) +
ggtitle(titulo, subtitle = subtitulo) +
xlab('Valores') + ylab('Frecuencia') +
geom_vline(aes(xintercept = media,
color = "media"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = mediana,
color = "mediana"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = moda,
color = "moda"),
linetype = "dashed",
size = 1)
TIC <- subset(datos.alumnos, Carrera == 'TIC')
media <- round(mean(TIC$Promedio),2)
mediana <- round(median(TIC$Promedio),2)
moda <- round(mfv(TIC$Promedio), 2)
media
## [1] 85.44
mediana
## [1] 85.03
moda
## [1] 78.47 86.00 89.17
Los datos de los alumnos de TIC tienen son una distribución multimodal, específicamente, tres modas. Se toma en cuenta sólo el valor de la primer posición [1] en la gráfica.
titulo <- "Histograma de los Alumnos TIC"
subtitulo <- paste("Media=",media, " Mediana = ",mediana, " Moda=",moda)
ggplot(data = TIC, mapping = aes(x=Promedio)) +
geom_histogram(bins=30) +
ggtitle(titulo, subtitle = subtitulo) +
xlab('Valores') + ylab('Frecuencia') +
geom_vline(aes(xintercept = media,
color = "media"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = mediana,
color = "mediana"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = moda[1],
color = "moda"),
linetype = "dashed",
size = 1)
ARQUITECTURA <- subset(datos.alumnos, Carrera == 'ARQUITECTURA')
media <- round(mean(ARQUITECTURA$Promedio),2)
mediana <- round(median(ARQUITECTURA$Promedio),2)
moda <- round(mfv(ARQUITECTURA$Promedio), 2)
media
## [1] 86.98
mediana
## [1] 87.1
moda
## [1] 86.00 89.17
Los datos de los alumnos de ARQUITECTURA tienen son una distribución bimodal, es decir, dos modas. Se toma en cuenta sólo el valor de la primer posición [1] en la gráfica.
titulo <- "Histograma de los Alumnos ARQUITECTURA"
subtitulo <- paste("Media=",media, " Mediana = ",mediana, " Moda=",moda)
ggplot(data = ARQUITECTURA, mapping = aes(x=Promedio)) +
geom_histogram(bins=30) +
ggtitle(titulo, subtitle = subtitulo) +
xlab('Valores') + ylab('Frecuencia') +
geom_vline(aes(xintercept = media,
color = "media"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = mediana,
color = "mediana"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = moda[1],
color = "moda"),
linetype = "dashed",
size = 1)
Las lineas del atributo linetype se puede elegir de entre varias alternaticas: “blank,” “solid,” “dashed,” “dotted,” “dotdash,” “longdash,” “twodash”
tres.carreras <- subset(datos.alumnos, Carrera %in% c('SISTEMAS', 'TIC', 'ARQUITECTURA'))
ggplot(data=tres.carreras,aes(x = Promedio,fill=Carrera)) +
geom_histogram(bins=30) + # se dibuja el histograma
ggtitle("Histograma de tres carreras", subtitle = "Medias") +
xlab('Valores de medias en Promedio') + ylab('Frecuencia') +
geom_vline(aes(xintercept = mean(SISTEMAS$Promedio),
color="SISTEMAS"),
linetype = "solid",
size = 1) +
geom_vline(aes(xintercept = mean(TIC$Promedio),
color="TIC"),
linetype = "solid",
size = 1) +
geom_vline(aes(xintercept = mean(ARQUITECTURA$Promedio),
color="ARQUITECTURA"),
linetype = "solid",
size = 1)
La creación de facetas se utiliza cuando queremos dividir una visualización en particular por los valores de otra variable. Esto creará múltiples copias del mismo tipo de gráfico con ejes xey coincidentes, pero cuyo contenido será diferente (Ismay and Kim 2021).
El atributo facet_wrap(~ Carrera) permite que se visualice el mismo histograma pero con carreras diferentes.
El símbolo virulilla o tilde en R algunas significa que lo que está a la derecha está en función de … o sea ~ Carrera significa que las gráficas diferentes están en función de cada una de las Carreras.
ggplot(data = datos.alumnos, mapping = aes(x = Promedio, fill=Carrera)) +
geom_histogram(bins = 30, color = "white") +
facet_wrap(~ Carrera, nrow = 5)
¿Qué significa los estadísticos descriptivos media, mediana y moda de un conjunto de datos?
R: En ese orden, representan el valor resultante de la suma de todos los datos y posterior división entre el número de datos, el valor que se encuentra enmedio de los datos cuando estos se ordenan en orden de menor a mayor, y el dato particular que más veces se repite en todo el conjunto, respectivamente.
¿Para el conjunto de datos alumnos en su variable Promedio, son los valores iguales de la media, mediana y moda ?
R: Para todo el conjunto de datos, no son exactamente iguales, pero sí están muy próximos uno de otro, siendo la media 86.6, la mediana 86.36 y la moda 86.
¿Qué tipo de distribución es el conjunto de datos alumnos?
R: Es una distribución de datos cuantitativos numéricos.
¿Qué significa los estadísticos rango, máximo y mínimo de la variable Promedio y como se interpretan?
R: El rango es el intervalo que abarcan todos los datos desde el más pequeño hasta el más grande, el máximo es el dato cuantitativo más grande y el mínimo es el dato más pequeño de todo el conjunto. En este caso, se interpretan como el mayor y el menor promedio de todo el conjunto de datos de calificaciones de alumnos, y el rango es qué tan alejados están el uno del otro.
¿Seleccione tres carreras y determine media, mediana y moda? Haga sus comparaciones.
R: En la carrera de Sistemas, la media fue 87.16, la mediana 86.88 y la moda 89.67. En la carrera de Arquitectura, la media fue de 86.98, la mediana 87.1 y las modas fueron varias, en este caso 86 y 89.17. En la carrera de TIC, la media fue 85.44, la mediana 85.04 y las modas de nuevo fueron múltiples, en este caso 78.47, 86.00 y 89.17. Al compararlos, podemos apreciar que Sistemas tiene la media, la mediana y moda mayores respecto a las otras dos carreras, y TIC posee las menores en cada una de estas medidas.
¿Cuál carrera tiene mas alumnos?
R: Industrial, con 653 alumnos calificados.
¿Cuál carrera de las tres seleccionadas tiene la media conforme a la variable Promedio más alto?
R: Tanto Sistemas como Arquitectura tienen una media mayor a 86.6, que es la media de todo el conjunto de datos. Sistemas tiene una media de 87.16 y Arquitectura tiene una media de 86.98.
Fin del CASO
En esta práctica se revisaron múltiples conceptos nuevos referentes a la estadística: Las Medidas de Localización. Media, mediana y moda de un conjunto de datos serían los principales de estos conceptos, también revisando qué es el rango de un conjunto de datos. Posteriormente, se cargó un conjunto de datos referentes a los promedios de calificación de los alumnos de múltiples carreras para después utilizar las clases ggplot y modeest para poder representar y determinar de forma más sencilla todos estos valores.
Anderson, David R., Dennis J. Sweeney, and Thomas A. Williams. 2008. Estadística Para Administración y Economía. 10th ed. Australia • Brasil • Corea • España • Estados Unidos • Japón • México • Reino Unido • Singapur: Cengage Learning,.
Ismay, Chester, and Albert Kim. 2021. Statistical Inference via Data Science a ModernDive into r and the Tidyverse. Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. https://moderndive.netlify.app/index.html.
Lind, Douglas, William Marchal, and Samuel Wathen. 2015. Estadística Aplicada a Los Negocios y La Economía. Decimo Sexta. México, D.F.: McGraw-Hill.
Walpole, Ronald E., Raymond H. Myers, and Sharon L. Myers. 2012. Probabilidad y Estadística Para Ingeniería y Ciencias. Novena Edición. México: Pearson.