Objetivo

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.

Descripción

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.

Desarrollo

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.

Cargar librería readr

Se requiere cargar la librería library(readr) previamente instalada con install.packages(“readr”). Esta librería permite cargar datos de archivos textos separados por coma o archivos del tipo csv.

library(modeest)
library(readr)
library(ggplot2)

Cargar los datos

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
tail(datos, 10)
##      NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio      Carrera
## 6033       746    746        4           50          24    81.27 ARQUITECTURA
## 6034       747    747        2           26          26    92.00 ARQUITECTURA
## 6035       748    748        1           NA          26     0.00 ARQUITECTURA
## 6036       749    749        9          223          12    87.59 ARQUITECTURA
## 6037       750    750        9          170          20    81.16 ARQUITECTURA
## 6038       751    751        7          103          19    84.43 ARQUITECTURA
## 6039       752    752        4           76          34    92.47 ARQUITECTURA
## 6040       753    753        4           84          26    89.74 ARQUITECTURA
## 6041       754    754        3           52          28    87.75 ARQUITECTURA
## 6042       755    755        2           18          22    86.50 ARQUITECTURA

Media, median y moda de los alumnos

Depurar los datos

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 que 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.

summary en los datos alumnos

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, mediana y moda

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

Histograma de Promedio de los datos alumnos

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) 

Gráfica de densidad

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)

Alumnos de SISTEMAS

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)

Alumnos de TIC

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)

Alumnos de ARQUITECTURA

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)

SISTEMAS, TIC ARQUITECTURA

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)

Interpretación

  1. ¿Qué significa los estadísticos descriptivos media, mediana y moda de un conjunto de datos?

  2. ¿Para el conjunto de datos alumnos en su variable Promedio, son los valores iguales de la media, mediana y moda?

  3. ¿Qué tipo de distribución es el conjunto de datos alumnos?

  4. ¿Qué significa los estadísticos rango, máximo y mínimo de la variable Promedio y como se interpretan?

Seleccione tres carreras y determine media, mediana y moda y haga sus comparaciones.

  1. ¿Cuál carrera tiene mas alumnos?

  2. ¿Cuál carrera de las tres seleccionadas tiene la media conforme a la variable Promedio más alto?

Fin del CASO

Respuestas

  1. La media de un conjunto de datos se encuentra al sumar todos los números en el conjunto de datos y luego al dividir entre el número de valores en el conjunto. La mediana es el valor medio cuando un conjunto de datos se ordena de menor a mayor. La moda es el número que se presenta con más frecuencia en un conjunto de datos.

  2. Solo la media es parecida, las otras dos son diferentes

  3. son formas de ver datos especificos depende que necesitemos saber

  4. La carrera de INDUSTRIAL

  5. La carrera de INDUSTRIAL

Para el caso de las tres carreras seleccionadas SISTEMAS, TIC Y ARQUITECTURA en cuanto al valor de la media o el promedio de la variable Promedio, en la carrera de sistemas existe el valor más alto entre los tres valores medios de cada carrera. Las tres gráficas son distribuciones asíncronas con respecto a la variable Promedio.

Referencias bibliográficas

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.