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

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

3 Marco teórico

Pendiente…

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

4.1 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(readr)
library(ggplot2)
library(modeest)
## No methods found in package 'timeDate' for request: '[<-' when loading 'timeSeries'

4.2 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

4.3 Media, median y moda de los alumnos

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

4.3.2 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

4.3.3 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

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

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

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

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

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

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

4.4 Interpretación

  • ¿Qué significa los estadísticos descriptivos media, mediana y moda de un conjunto de datos? R: La media se refiere a la suma del total de datos entre el número de datos sumados, también se le conoce como promedio. La mediana es el número o dato que se encuentra posicionalmente justo a la mitad de entre todos los datos cuando estos son ordenados de menor a mayor. Finalmente tenemos que la moda se refiere al dato que de entre todo el conjunto, es el que más se repite o más frecuencia tiene.
  • ¿Para el conjunto de datos alumnos en su variable Promedio, son los valores iguales de la media, mediana y moda ? R: La media tiene un valor de 86.6, la mediana se encuentra en 86.36 y la moda es igual a 86. Son valores muy parecidos, pero no llegan a ser iguales, además el valor de los datos nos entrega más información como puede ser el tipo de sesgo que es la distribución, el tipo de distribución, etc.

  • ¿Qué tipo de distribución es el conjunto de datos alumnos? R: Aunque los datos de media, mediana y moda tienen valores muy cercanos entre ellos, no llegan a ser iguales por lo que al ser graficados estos tendrán una desviación por lo que estamos hablando de una distribución asimétrica con sesgo positivo, dado que la media es mayor que la mediana.

  • Qué significa los estadísticos rango, máximo y mínimo de la variable Promedio y como se interpretan? R: En estadística el rango se refiere a un intervalo que existe entre los valores de una serie de datos, dicho intervalo abarca desde el valor mínimo hasta el valor máximo de los datos. El valor mínimo es aquel cuyo valor es el más bajo de entre todo el conjunto de datos y el valor máximo es todo lo contrario, se trata del valor más alto entre un conjunto de datos. En la variable Promedio, el rango sería un intervalo de en el que el promedio mínimo y máximo, que en este caso va de 70 a 100, teniendo a 70 como el mínimo de la variable Promedio y 100 como el máximo, tal como podemos ver a continuación:

    summary(datos.alumnos[6])
    ##     Promedio     
    ##  Min.   : 70.00  
    ##  1st Qu.: 83.25  
    ##  Median : 86.36  
    ##  Mean   : 86.60  
    ##  3rd Qu.: 89.83  
    ##  Max.   :100.00
  • ¿Seleccione tres carreras y determine media, mediana y moda? y haga sus comparaciones.

    1- Alumnos de SISTEMAS

    Media:

    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:

    mediana
    ## [1] 86.88

    Moda:

    moda
    ## [1] 89.67

    2- Alumnos de INDUSTRIAL

    Media:

    INDUSTRIAL <- subset(datos.alumnos, Carrera == 'INDUSTRIAL')
    
    media <- round(mean(INDUSTRIAL$Promedio),2)
    mediana <- round(median(INDUSTRIAL$Promedio),2)
    moda <- round(mfv(INDUSTRIAL$Promedio), 2)
    
    media
    ## [1] 85.92

    Mediana:

    mediana
    ## [1] 85.68

    Moda:

    moda
    ## [1] 89.67

    3- Alumnos de CIVIL

    Media:

    CIVIL <- subset(datos.alumnos, Carrera == 'CIVIL')
    
    media <- round(mean(CIVIL$Promedio),2)
    mediana <- round(median(CIVIL$Promedio),2)
    moda <- round(mfv(CIVIL$Promedio), 2)
    
    media
    ## [1] 84.47

    Mediana:

    mediana
    ## [1] 84.29

    Moda:

    moda
    ## [1] 87
    tres.carreras <- subset(datos.alumnos, Carrera %in% c('SISTEMAS', 'INDUSTRIAL', 'CIVIL'))
    
    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(INDUSTRIAL$Promedio),
                      color="INDUSTRIAL"),
                  linetype = "solid",
                  size = 1) +
      geom_vline(aes(xintercept = mean(CIVIL$Promedio), 
                     color="CIVIL"),
                  linetype = "solid", 
                  size = 1) 

  • ¿Cuál carrera tiene mas alumnos? R: Industrial es la carrera con la mayor cantidad de alumnos, teniendo un total de 653, siendo además la carrera con mayor cantidad de alumnos en general.

  • ¿Cuál carrera de las tres seleccionadas tiene la media conforme a la variable Promedio más alto? R: En este caso, de las tres carreras seleccionadas, la que resulta con un promedio o media más alto es SISTEMAS con un valor de 87.17.

  • Fin del CASO

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.

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