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

En un conjunto de datos las medidas de posición están diseñadas para ayudar al analista alguna medida cuantitativa de dónde está el centro de los datos en una muestra. (Walpole, Myers, and Myers 2012).

La media significa el promedio o la suma de todos los elementos divididos entre el total de la muestra.

3.1 La media

La media significa el promedio o la suma de todos los elementos divididos entre el total de la muestra, o lo que es lo mismo es un promedio de todos los elementos.

La media proporciona una medida de localización central de los datos. Si los datos son datos de una muestra, la media se denota x¯x¯; si los datos son datos de una población, la media se denota con la letra griega μμ. (Anderson, Sweeney, and Williams 2008).

3.1.1 Fórmula de la media

En las fórmulas estadísticas se usa identificar el valor de la primera observación de la variable x con x1, el valor de la segunda observación de la variable x con x2 y así con lo siguiente.

En general, el valor de la i-ésima observación de la variable x se denota xi hasta la posición final del conjunto de datos xn.

La media se representa como x¯. Aquí la fórmula para le media.

\[\bar{x} = \sum_{i=1}^{n}\frac{x_i}{n} = \frac{x_1 + x_2+x_3+…x_n}{n}\]

3.1.2 Media aritmética

Se muestra el código para determinar la media, sumando cada elemento y dividiendo entre el número de elementos que contiene la muestra.

Se construyen los valores de la muestra a partir de un vector llamado datos.

datos <- c(40,60,50,45,65,70,95,90,45,60,43,56, 65, 80, 45, 70, 45, 75, 45, 54, 35, 46, 47, 50, 50, 60, 50, 50, 65, 50, 50, 22, 54, 68, 70, 46, 54, 55, 50, 55, 40, 68, 76, 56, 55, 45, 50, 43, 46, 47, 70, 24, 34, 54,43, 34, 45, 45, 45, 45)

datos
##  [1] 40 60 50 45 65 70 95 90 45 60 43 56 65 80 45 70 45 75 45 54 35 46 47 50 50
## [26] 60 50 50 65 50 50 22 54 68 70 46 54 55 50 55 40 68 76 56 55 45 50 43 46 47
## [51] 70 24 34 54 43 34 45 45 45 45

Se identifican valores de los datos en posiciones específica x1,x2,x3,xnx1,x2,x3,xn, siendo n=n= 60

El símbolo de ‘;’ en R en una misma linea significa que se peden tomar como diferentes instrucciones para ahorrar lineas o renglones en el bloque de código.

datos[1]; datos[2]; datos[3]; datos[length(datos)]
## [1] 40
## [1] 60
## [1] 50
## [1] 45

Se determina el valor de nn o la cantidad de elementos en los datos con la función length().

La funcón paste() vista en otros casos, simplemente imprime en oantalla valores, posiblemente concatenados separados con la coma ‘,’

n <- length(datos)
paste("Cantidad de elmentos de la muestra =", n)
## [1] "Cantidad de elmentos de la muestra = 60"

Ahora realizar el cálculo de la media aritméticamente.

La función sum() suma aritméticamente todos los elementos de la muestra y round() redondea el resultado a ciertas posiciones decimales, por ejemplo round(valor, 2) redondeado a dos posiciones, siendo valor el resultado obtenido.

sum(datos) / n
## [1] 53.16667
paste("Una forma tradicional de sacar la media", round(sum(datos) / n, 2))
## [1] "Una forma tradicional de sacar la media 53.17"

Esto sería lo mismo que sumar datos[1] + datos[2] + datos[3] + datos[4] + datos[5] + … datos[31] y luego dividir entre n

3.1.3 Media en R

En R la función mean() determina la media de un conjunto de datos, por ejemplo edades de doce personas adultos y adultos mayores, las pregunta son: ¿cuántos datos hay en la muestra?, ¿cuál es la media de los datos? y ¿que representa la media?.

media <- round(mean(datos),2)
paste("Usando mean(), para determinar la media de los datos =", media)
## [1] "Usando mean(), para determinar la media de los datos = 53.17"

La media con valor de 53.17 es un estadístico que representa el promedio de los 31 datos de la muestra.

3.2 La mediana

Otra medida de localización importante es la mediana. El propósito de la mediana es reflejar la tendencia central de la muestra, de manera que no esté influida por los valores extremos. Dado que las observaciones en una muestra son x1,x2,…,xnx1,x2,…,xn, acomodados en orden de magnitud creciente, es decir, ordenados ascendentemente, la mediana de los datos estará dada por alguna de las maneras dependiendo si el número de elementos es par o es impar:

3.2.1 La fórmula de la mediana

La mediana será representada por x~

\[\tilde{x} =\begin{Bmatrix}x_{(n+1)/2}\text{ Si n es impar,} \\ \frac{1}{2}\cdot(x_{n/2}+x_{n/2+1})\text{ Si n es par,} \end{Bmatrix}\]

La fórmula significa que si el número de elementos es impar, se toma el que está exactamente a la mitad de los datos ordenados y si por el contrario el número de datos es par se toman el promedio de los dos números contiguos o seguidos, es decir que están a la mitad de todos los datos ya ordenados.

3.2.2 Mediana matemáticamente

Primero hacer un código para determinar si nn es número par o impar o non.

El siguiente código en R, determina si el valor de n es par o impar.

if (n %% 2 == 0) {
  n.par <- "par"
  print ("n es par")
} else {
  n.par <- "impar"
  print ("n es impar")
}
## [1] "n es par"

Para el caso de los datos hay que constatar y verificar si es es par o impar la variable n, con valor de 60 entonces es impar, se elige la opción adecuada de la fórmula.

Toda vez de haber verificado si el valor de n es par o impar se hacer el cálculo según la opción de la fórmula.

Segundo, se ordenan y se muestran los datos y luego se verifica el elemento que está exactamente a la mitad de entre todos los datos. La ordenación para este ejemplo se hace con la función order que genera las posiciones en que se ordena el vector datos, los datos se reescriben ordenados con la asignación ‘<-.’

datos.ordenados <- datos[order(datos)]
datos.ordenados
##  [1] 22 24 34 34 35 40 40 43 43 43 45 45 45 45 45 45 45 45 45 45 46 46 46 47 47
## [26] 50 50 50 50 50 50 50 50 50 54 54 54 54 55 55 55 56 56 60 60 60 65 65 65 68
## [51] 68 70 70 70 70 75 76 80 90 95

Tercero, finalmente se aplica la fórmula según sea el caso par o impar.

datos.ordenados <- datos[order(datos)]

if (n.par == 'impar')  {
  mediana <- (datos.ordenados[(n+1)/2])  
} else {
  mediana <- 1/2 * (datos.ordenados[n/2] + datos.ordenados[n/2+1])  
}

mediana
## [1] 50

Para este ejemplo de 60 datos es sencillo para el cerebro encontrar la mediana y la media, sin embargo, R puede tratar y analizar grandes volúmenes de datos.

3.2.3 Mediana con R

La manera más sencilla en R para determinar la mediana es mediante la función median(), la cual simplemente regresa el valor central de los datos ordenados, independientemente si el valor de nn es par o impar, de hecho debe intuirse que el código de la fórmula está encapsulado en la función median().

mediana <- median(datos)
print(mediana)
## [1] 50

La mediana refleja el valor central de los datos. Como lo dice Lind (2015) es el punto medio de los valores una vez que se han sido ordenados de menor a mayor o de mayor a menor. (Lind, Marchal, and Wathen 2015).

Algunas veces, posiblemente cuanado se detectan valores atípicos o outliers de la muestra, es necesario pensar en utilizar un concepto llamado media recortada la cual se calcula nuevamente pero habeidno quitando cierto porcentaje de los valores mayores y menores del conjunto.

La función subset() filtra bajo una expresión o condición un conjunto de datos que pueden ser vectores o data frames. En este caso el resultado es un vector en R llamado datos.reducido.

datos.reducido <- subset(datos, datos >=40 & datos <=90)
datos
##  [1] 40 60 50 45 65 70 95 90 45 60 43 56 65 80 45 70 45 75 45 54 35 46 47 50 50
## [26] 60 50 50 65 50 50 22 54 68 70 46 54 55 50 55 40 68 76 56 55 45 50 43 46 47
## [51] 70 24 34 54 43 34 45 45 45 45
mean(datos.reducido)
## [1] 54.55556
median(datos.reducido)
## [1] 50

Ahora los valores de media y mediana son mas cercanos.

3.3 Moda

La moda es el valor que se presenta con mayor frecuencia. (Anderson, Sweeney, and Williams 2008). Walpole, 2012) menciona que la moda es el punto sobre el eje horizontal donde la curva de una distribución de datos tiene su punto máximo. (Walpole, Myers, and Myers 2012).

En R existen varias alternativas para determina la moda de un conjunto de datos.

3.3.1 Moda con table()

Se puede utilizar la función table() para encontrar las frecuencias y posteriormente ordenar tabla tal vez descendentemente y el valor del conjunto de datos de frecuencias de la primera posición será la moda. Algunas veces hay dos o tres valores que se repite en el mismo número de ocasiones o que tienen la misma frecuencia, entonces hay que verificar si el conjunto de datos es bimodal o multimodal.

frecuencias <- table(datos)
frecuencias.ordenada <- frecuencias[order(frecuencias, decreasing = TRUE)]
frecuencias.ordenada
## datos
## 45 50 54 70 43 46 55 60 65 34 40 47 56 68 22 24 35 75 76 80 90 95 
## 10  9  4  4  3  3  3  3  3  2  2  2  2  2  1  1  1  1  1  1  1  1
moda <- frecuencias.ordenada[1]
moda
## 45 
## 10

3.3.2 Moda con mfv(x)

Otra alternativa es utilizar la librería o el paquete modeest; antes que nada deberá instalar el paquete install.packages(“modeest”) , luego, se podrá cargar la librería con library(modest).

3.3.3 Cargando la librería modeest

library(modeest)
## Warning: package 'modeest' was built under R version 4.0.4

Para determinar la moda se utiliza la función mfd(x) en donde x es el vector a utilizarse para encontrar la moda.

moda <- mfv(datos)
moda
## [1] 45

3.4 Posiciones relativas de la media, mediana y la moda

En cualquier distribución, cuando la la moda, la mediana y la media son iguales se interpreta como una distribución simétrica; si los valores de media, moda y mediana son diferentes, por el contrario será asimétrica si si los valores de media y mediana son diferentes(Lind, Marchal, and Wathen 2015).

La siguiente imagen muestra como se pueden presentar las gráficas conforme y de acuerdo al histograma y a su curva de densidad.

Gráfica. Medidas de ubicación [@lind_estadistica_2015].

3.4.1 Paquete ggplot2

El paquete ggplot2 permite crear gráficas y visualizar datos de una manera más elegante y amigable, es uno de los paquete más utilizados en R para representar y visualizar datos.

Las siguiente instrucciones utilizan el paquete ggplot() previamente instalado con install.packages(“ggplot2”) es una librería.

Algunos tutoriales sobre ggplot se encuentran en los siguientes enlaces:

3.4.1.1 Cargar la librería ggplot
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.0.4

3.4.2 data.frame de los datos

Las siguiente lineas permiten crear un conjunto de datos data.frame a partir del vector de datos. Esto transformación de datos tiene la finalidad de tratar con data.frame en lugar de vector y es más práctico para efecto de visualziación de datos con ggplot().

df.datos <- data.frame(datos)
df.datos
##    datos
## 1     40
## 2     60
## 3     50
## 4     45
## 5     65
## 6     70
## 7     95
## 8     90
## 9     45
## 10    60
## 11    43
## 12    56
## 13    65
## 14    80
## 15    45
## 16    70
## 17    45
## 18    75
## 19    45
## 20    54
## 21    35
## 22    46
## 23    47
## 24    50
## 25    50
## 26    60
## 27    50
## 28    50
## 29    65
## 30    50
## 31    50
## 32    22
## 33    54
## 34    68
## 35    70
## 36    46
## 37    54
## 38    55
## 39    50
## 40    55
## 41    40
## 42    68
## 43    76
## 44    56
## 45    55
## 46    45
## 47    50
## 48    43
## 49    46
## 50    47
## 51    70
## 52    24
## 53    34
## 54    54
## 55    43
## 56    34
## 57    45
## 58    45
## 59    45
## 60    45

3.4.3 Histograma de los datos

ggplot(data = df.datos, mapping = aes(x=datos)) +
  geom_histogram(bins = 30) +
  ggtitle('Histograma de datos') +
  xlab('Valores') + ylab('Frecuencia') 

3.4.4 Referencia media, mediana y moda

titulo <- "Histograma de los datos"
subtitulo <- paste("Media=",media, " Mediana = ",mediana, " Moda=",moda)

ggplot(data = df.datos, mapping = aes(x=datos)) +
  geom_histogram(bins=30) +
  ggtitle(titulo, subtitle = subtitulo) +
  xlab('Valores') + ylab('Frecuencia') +
  geom_vline(aes(xintercept = media,
                  color = "media"),
              linetype = "dashed",
              size = 2)  +
   geom_vline(aes(xintercept = mediana,
                  color = "mediana"),
              linetype = "dashed",
              size = 2) +
   geom_vline(aes(xintercept = moda,
                  color = "moda"),
              linetype = "dashed",
              size = 2) 

if (media > mediana) {
  mensaje <- "De acuerdo y conforme a la gráfica la distribución es asimétrica con sesgo positivo dado que la media es mayor que la mediana."
} else if (media < mediana) {
    mensaje <- "De acuerdo y conforme a la gráfica la distribución es asimétrica con sesgo negativo dado que la media es menor que la mediana."
} else if (media == mediana & mediana == moda) {
  "De acuerdo y conforme a la gráfica la distribución es simétrica dado que la media es igual a la median y a la moda."
}

Interpretación: De acuerdo y conforme a la gráfica la distribución es asimétrica con sesgo positivo dado que la media es mayor que la mediana

3.5 Mínimos y máximos

Los valores máximos y mínimos de un conjunto de dato son los valores de la lista de valores más pequeños y mas grande en la lista de los datos. Se puede observar los valores máximos y mínimos con los datos ordenados y verificar el primer y último elemento de la lista. Se utiliza el vector de datos ordenados.

datos.ordenados
##  [1] 22 24 34 34 35 40 40 43 43 43 45 45 45 45 45 45 45 45 45 45 46 46 46 47 47
## [26] 50 50 50 50 50 50 50 50 50 54 54 54 54 55 55 55 56 56 60 60 60 65 65 65 68
## [51] 68 70 70 70 70 75 76 80 90 95

Se puede determinar con las funciones max() y min() para encontrar los valores máximos y mínimos respectivamente.

max(datos)
## [1] 95
min(datos)
## [1] 22

3.6 Rango

El rango de un conjunto de datos es el intérvalo que existe entre los valores, es decir desde el valor mínimo hasta el valor máximo.

datos.ordenados[n] - datos.ordenados[1]
## [1] 73
max(datos) - min(datos)
## [1] 73

Con la función range() en R, se obtiene los valores máximos y mínimos y con estos se obtiene el rango con la función diff()

3.7 Función summary ()

Existe una función en R llamada summary() muy utilizada que describe y presenta la mayoría de los estadísticos citados para caso; identifica los valores mínimo, máximo, media y mediana de un conjunto de datos.

summary(datos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   22.00   45.00   50.00   53.17   60.00   95.00

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)

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,12)
##      NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio      Carrera
## 6031       744    744        3           40          22    87.80 ARQUITECTURA
## 6032       745    745        5           82          34    84.67 ARQUITECTURA
## 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
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, mediana 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>0promedio>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 de los 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 Civil

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.

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
## [1] 84.29
moda
## [1] 87
titulo <- "Histograma de los Alumnos CIVIL"
subtitulo <- paste("Media=",media, " Mediana = ",mediana, " Moda=",moda)

ggplot(data = CIVIL, 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 MECANICA
MECANICA <- subset(datos.alumnos, Carrera == 'MECANICA')

media <- round(mean(MECANICA$Promedio),2)
mediana <- round(median(MECANICA$Promedio),2)
moda <- round(mfv(MECANICA$Promedio), 2)

media
## [1] 83.53
mediana
## [1] 82.83
moda
## [1] 82
titulo <- "Histograma de los Alumnos MECANICA"
subtitulo <- paste("Media=",media, " Mediana = ",mediana, " Moda=",moda)

ggplot(data = MECANICA, 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 CIVIL, TIC Y MECANICA

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('CIVIL', 'TIC', 'MECANICA'))

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(CIVIL$Promedio),
                  color="CIVIL"),
              linetype = "solid",
              size = 1) +
  geom_vline(aes(xintercept = mean(TIC$Promedio),
                  color="TIC"),
              linetype = "solid",
              size = 1) +
  geom_vline(aes(xintercept = mean(MECANICA$Promedio), 
                 color="MECANICA"),
              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?

    En este caso cuando hablamos de media, nos referimos a un promedio, que es la suma de todos los datos dividido entre la cantidad de datos sumados.

    La mediana, es el valor que se encuentra a la mitad de todos los datos ya ordenados, en caso de que sean 2 valores, se saca un promedio solo con esos 2.

    La moda, es el valor que se presenta con mayor frecuencia en el conjunto de datos.

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

    Casi son iguales, solo varía en los decimales

  • ¿Qué tipo de distribución es el conjunto de datos alumnos

    Densidad

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

    Rango se refiere un límite de un valor a otro.

    Máximo, hace referencia al valor más alto que determina el límite del rango. Y mínimo, al valor más pequeño que marca el otro extremo del rango.

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

    CIVIL. media:84.47 mediana:84.29 moda:87

    TICS. media:85.44 mediana:85.03 moda:78.47

    MECANICA. media:83.53 mediana:82.83 moda:82

    COMPARACIONES: Puedo notar que todos tienen valores de 80, y que el que tiene menores valores es MECANICA

  • ¿Cuál carrera tiene mas alumnos?

    LA CIVIL según los resultados del histograma de las 3 carreras

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

    La carrera de CIVIL, se puede notar en el histograma que tiene la media mas alta, está represnatada en color naranja

  • Fin del CASO

REFERENCIAS

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.