1 Objetivo

Determinar medidas de localización basadas en estadísticos cuartiles y percentiles utilizando de un conjunto de datos así como determinar su significado, visualización e interpretación.

2 Descripción

El caso pretende dar a conocer como determinar cuartiles y percentiles de un conjunto de datos.

Los datos será simulados, primero un conjunto de valores numéricos y la segunda parte se hace uso de los datos descargados del promedio de alumnos.

Este caso inicia con la declaración con cargar las librerías, posteriormente, se simulan los datos y se descargan los datos de alumnos, finalmente se aplican los cuartiles y percentiles así como su visualización , se identifica también su significado e interpretación.

3 Marco teórico

Pendiente

4 Desarrollo

El desarrollo del caso utiliza primero datos simulados.

Luego, se utilizan y se descargan los datos de alumnos que existen en la dirección “alumnos.”

Con ambos datos se encuentran cuartiles y percentiles; finalmente se visualizan con diagramas de cajas utilizando la librería ggplot.

Al final del caso se busca la interpretación del mismo.

Se cargan las librerías readr y ggplot2 cuya utilidad es disponer de funciones para importar datos de archivos separados por coma o csv y visualizar diversos tipos de gráficos respectivamente.

library(readr)
library(ggplot2)

4.1 Datos simulados

4.1.1 Crear datos con sample

Se crean datos con la función sample de tal vez 100 valores de edades de personas entre 18 y 65. La variable datos es un vector que almacena dichos valores

set.seed(2021)
datos <- sample(18:65, 100, replace = TRUE)
datos
##   [1] 24 55 63 56 29 23 55 55 63 22 64 56 58 40 29 35 20 63 57 43 53 54 39 48 65
##  [26] 51 36 21 39 22 26 55 35 60 23 39 23 32 51 39 33 32 41 34 55 54 37 21 47 25
##  [51] 36 20 19 34 57 58 48 26 46 44 28 53 55 63 32 35 26 36 33 61 51 54 59 61 39
##  [76] 55 44 61 30 50 63 38 42 48 62 28 26 40 60 39 53 47 63 65 24 46 18 36 62 53
n <- length(datos)
n
## [1] 100

4.1.2 Agregando datos atípicos a los datos

datos <- c(datos, c(-13,9,96,150))
datos
##   [1]  24  55  63  56  29  23  55  55  63  22  64  56  58  40  29  35  20  63
##  [19]  57  43  53  54  39  48  65  51  36  21  39  22  26  55  35  60  23  39
##  [37]  23  32  51  39  33  32  41  34  55  54  37  21  47  25  36  20  19  34
##  [55]  57  58  48  26  46  44  28  53  55  63  32  35  26  36  33  61  51  54
##  [73]  59  61  39  55  44  61  30  50  63  38  42  48  62  28  26  40  60  39
##  [91]  53  47  63  65  24  46  18  36  62  53 -13   9  96 150

4.1.3 Ordenando los dados con order

Ordenando y mostrando los datos para luego determinar medidas de localización cuartiles y percentiles

datos.ordenados <- datos[order(datos)]
datos.ordenados
##   [1] -13   9  18  19  20  20  21  21  22  22  23  23  23  24  24  25  26  26
##  [19]  26  26  28  28  29  29  30  32  32  32  33  33  34  34  35  35  35  36
##  [37]  36  36  36  37  38  39  39  39  39  39  39  40  40  41  42  43  44  44
##  [55]  46  46  47  47  48  48  48  50  51  51  51  53  53  53  53  54  54  54
##  [73]  55  55  55  55  55  55  55  56  56  57  57  58  58  59  60  60  61  61
##  [91]  61  62  62  63  63  63  63  63  63  64  65  65  96 150

4.1.4 Cuartiles conforme a fórmula

\[ L_p = (n+1) \cdot \frac{p}{100} \]

Estos valores deberán ser aproximados a utilizar la función quantile() en R

q1 <- datos.ordenados[(n+1) * 25/100]; q1
## [1] 30
q2 <- datos.ordenados[(n+1) * 50/100]; q2
## [1] 41
q3 <- datos.ordenados[(n+1) * 75/100]; q3
## [1] 55

4.1.5 Cuartiles por medio de la función quantile()

Q1 <- quantile(datos, c(0.25), type = 6); Q1
## 25% 
##  32
Q2 <- quantile(datos, c(0.50), type = 6); Q2
##  50% 
## 43.5
Q3 <- quantile(datos, c(0.75), type = 6); Q3
## 75% 
##  55

La mediana siempre será igual al cuartil del 50% o al segundo cuartil

mediana <- median(datos)
mediana
## [1] 43.5
Q2
##  50% 
## 43.5

4.1.6 Percentiles

Los percentiles es dividir los datos en un procentaje a decisión del analista, ñpuede ser al 10%, al 20%, al 30%… al 90%

P10 <- quantile(datos, c(0.10)); P10
## 10% 
##  23
percentiles <- quantile(datos, c(0.2, 0.40, 0.50, 0.60, 0.80), type = 6)
percentiles
##  20%  40%  50%  60%  80% 
## 28.0 39.0 43.5 51.0 58.0

4.1.7 Máximos y mínimos

Se determinan los valores mínimos y máximos y se muestran.

La función summary() describe los mismos datos

minimo <- min(datos)
maximo <- max(datos)
 
minimo; Q1; Q2; Q3; maximo
## [1] -13
## 25% 
##  32
##  50% 
## 43.5
## 75% 
##  55
## [1] 150
summary(datos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -13.00   32.00   43.50   43.93   55.00  150.00

4.1.8 Convertir a data.frame

El vector de los datos se transforma a estructura data.frame para poderlo tratar con la libería ggplot2.

datos <- data.frame(datos)
datos
##     datos
## 1      24
## 2      55
## 3      63
## 4      56
## 5      29
## 6      23
## 7      55
## 8      55
## 9      63
## 10     22
## 11     64
## 12     56
## 13     58
## 14     40
## 15     29
## 16     35
## 17     20
## 18     63
## 19     57
## 20     43
## 21     53
## 22     54
## 23     39
## 24     48
## 25     65
## 26     51
## 27     36
## 28     21
## 29     39
## 30     22
## 31     26
## 32     55
## 33     35
## 34     60
## 35     23
## 36     39
## 37     23
## 38     32
## 39     51
## 40     39
## 41     33
## 42     32
## 43     41
## 44     34
## 45     55
## 46     54
## 47     37
## 48     21
## 49     47
## 50     25
## 51     36
## 52     20
## 53     19
## 54     34
## 55     57
## 56     58
## 57     48
## 58     26
## 59     46
## 60     44
## 61     28
## 62     53
## 63     55
## 64     63
## 65     32
## 66     35
## 67     26
## 68     36
## 69     33
## 70     61
## 71     51
## 72     54
## 73     59
## 74     61
## 75     39
## 76     55
## 77     44
## 78     61
## 79     30
## 80     50
## 81     63
## 82     38
## 83     42
## 84     48
## 85     62
## 86     28
## 87     26
## 88     40
## 89     60
## 90     39
## 91     53
## 92     47
## 93     63
## 94     65
## 95     24
## 96     46
## 97     18
## 98     36
## 99     62
## 100    53
## 101   -13
## 102     9
## 103    96
## 104   150

4.1.9 Diagrama de caja de los datos

4.1.9.1 Diagrama de caja en función del eje de las x.

ggplot(data = datos, mapping = aes(x=datos)) + geom_boxplot(outlier.colour="red")

4.1.9.2 Diagrama de caja en función del eje de las y.

ggplot(data = datos, mapping = aes(y=datos)) + geom_boxplot(outlier.colour="red")

4.2 Datos de alumnos

4.2.1 Importar datos

Se importan los datos de alumnos.

Cabe hacer notar que en este conjunto de datos existen datos en la variable Promedio que son igual a cero, esto se interpreta como datos atípicos o que tal vez no debieran ser considerados en análisis estadísticos.

datos.alumnos <- read.csv("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/datos/promedios%20alumnos/ALUMNOS%20EJ2021.csv")

head(datos.alumnos)
##   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
tail(datos.alumnos)
##      NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio      Carrera
## 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
n <- nrow(datos.alumnos)
n
## [1] 6042

4.2.2 Summary de datos.alumnos

Se factoriza la variable Carrera para que en summary se obtenga la frecuencia de la columna Carrera.

datos.alumnos$Carrera <- factor(datos.alumnos$Carrera)

summary(datos.alumnos)
##    NoControl         Alumno         Semestre       Cr.Aprobados  
##  Min.   :  1.0   Min.   :  1.0   Min.   : 1.000   Min.   :  0.0  
##  1st Qu.:112.0   1st Qu.:112.0   1st Qu.: 3.000   1st Qu.: 53.0  
##  Median :245.0   Median :245.0   Median : 5.000   Median :109.0  
##  Mean   :268.1   Mean   :268.1   Mean   : 5.428   Mean   :114.8  
##  3rd Qu.:394.0   3rd Qu.:394.0   3rd Qu.: 8.000   3rd Qu.:172.0  
##  Max.   :755.0   Max.   :755.0   Max.   :17.000   Max.   :264.0  
##                                                   NA's   :499    
##   Cr.Cursando       Promedio                Carrera    
##  Min.   : 3.00   Min.   :  0.00   ARQUITECTURA  : 755  
##  1st Qu.:23.00   1st Qu.: 82.20   INDUSTRIAL    : 721  
##  Median :27.00   Median : 85.83   CIVIL         : 674  
##  Mean   :26.09   Mean   : 79.33   QUIMICA       : 564  
##  3rd Qu.:30.00   3rd Qu.: 89.50   GESTION       : 557  
##  Max.   :42.00   Max.   :100.00   ADMINISTRACION: 492  
##                                   (Other)       :2279

4.2.3 Cuartiles

Se determinan los cuartiles de la variable Promedio de los datos de alumnos con la función quantile().

cuartiles <- quantile(x = datos.alumnos$Promedio, probs = c(0.25, 0.50, 0.75), type = 6)
cuartiles
##   25%   50%   75% 
## 82.20 85.83 89.50
Q1 <- cuartiles[1]; Q1
##  25% 
## 82.2
Q2 <- cuartiles[2]; Q2
##   50% 
## 85.83
Q3 <- cuartiles[3]; Q3
##  75% 
## 89.5

El 50% de los datos está entre 82.2 y 89.5. El RI rango intercuartil es Q3−Q1 o sea 7.3.

Los valores atípicos mayores a Q3 serán los que estén por encima de 100.45 y los valores atípicos menores a Q1 serán los que estén por debajo de 71.25

4.2.4 Atípicos mayores. Rango intercuartil

atipicos.mayores <- Q3 + 1.5 * (Q3-Q1)
atipicos.mayores
##    75% 
## 100.45

4.2.5 Atípicos menores. Rango intercuartil

atipicos.menores <- Q1 - 1.5 * (Q3-Q1)
atipicos.menores
##   25% 
## 71.25

4.2.6 Diagramas de cajas con datos atípicos

ggplot(data = datos.alumnos, mapping = aes(y=Promedio)) + geom_boxplot(outlier.colour="red")

En este diagrama de caja se detecta que hay valores atípicos principalemente los que tienen 00 en la variable promedio.

Aquí es en donde se hace prudente tomar decisiones de que ¿hacer con esos valores?, por lo pronto la decisión es simple, son alumnos que no tienen promedio en su historia académica, es decir que no han cursado semestre alguno y no han cerrado al menos un periodo escolar.

4.2.7 Limpiando valores atípicos

Por medio de la función subset() vista anteriormente, se eliminan o filtran esos registros.

datos <- subset(datos, Promedio > 0) significa quitar los alumnos que no tienen promedio aún.

datos.alumnos <- subset(datos.alumnos, Promedio > 0)
head(datos.alumnos)
##   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
tail(datos.alumnos)
##      NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio      Carrera
## 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
n<-nrow(datos.alumnos)
n
## [1] 5535

4.2.8 Nuevos cuartiles con datos limpios

cuartiles <- quantile(x = datos.alumnos$Promedio, probs = c(0.25, 0.50, 0.75), type = 6)
cuartiles
##   25%   50%   75% 
## 83.24 86.36 89.83
Q1 <- cuartiles[1]; Q1
##   25% 
## 83.24
Q2 <- cuartiles[2]; Q2
##   50% 
## 86.36
Q3 <- cuartiles[3]; Q3
##   75% 
## 89.83

4.2.9 Diagramas de cajas con datos limpios

summary(datos.alumnos)
##    NoControl         Alumno         Semestre       Cr.Aprobados  Cr.Cursando  
##  Min.   :  1.0   Min.   :  1.0   Min.   : 2.000   Min.   :  4   Min.   : 3.0  
##  1st Qu.:106.0   1st Qu.:106.0   1st Qu.: 3.000   1st Qu.: 53   1st Qu.:23.0  
##  Median :239.0   Median :239.0   Median : 6.000   Median :109   Median :28.0  
##  Mean   :262.2   Mean   :262.2   Mean   : 5.826   Mean   :115   Mean   :26.1  
##  3rd Qu.:388.0   3rd Qu.:388.0   3rd Qu.: 8.000   3rd Qu.:172   3rd Qu.:30.0  
##  Max.   :755.0   Max.   :755.0   Max.   :17.000   Max.   :264   Max.   :42.0  
##                                                                               
##     Promedio                Carrera    
##  Min.   : 70.00   INDUSTRIAL    : 653  
##  1st Qu.: 83.25   ARQUITECTURA  : 633  
##  Median : 86.36   CIVIL         : 594  
##  Mean   : 86.60   GESTION       : 518  
##  3rd Qu.: 89.83   QUIMICA       : 515  
##  Max.   :100.00   ADMINISTRACION: 458  
##                   (Other)       :2164
ggplot(data = datos.alumnos, mapping = aes(y=Promedio)) + geom_boxplot(outlier.colour="red") +
  labs(title = "Promedio de Alumnos",subtitle =  paste("Q1 = ",Q1, ", Q2 = ",Q2, ", Q3 = ",Q3))

Se siguen visualizando datos atípicos, sin embargo estos si son datos extraños pero reales, que significa que hay alumnos con promedio de 100 y alumnos con promedio de 70 aproximadamente.

4.3 Histograma con cuartiles

ggplot(data = datos.alumnos, aes(x=Promedio)) +
    geom_histogram(bins = 30) + 
    geom_vline(aes(xintercept = Q1,
                  color = "Q1"),
              linetype = "dashed",
              size = 1) +
    geom_vline(aes(xintercept = Q2,
                  color = "Q2"),
              linetype = "dashed",
              size = 1) +
    geom_vline(aes(xintercept = Q3,
                  color = "Q3"),
              linetype = "dashed",
              size = 1) +  
  labs(title = "Histograma de Promedio de Alumnos",subtitle =  paste("Cuartil 1 al 25% = ",Q1, ", Cuartil 2 al 50% = ",Q2, ", Cuartil 3 al 75% = ",Q3))

4.4 Interpretación

  • ¿Qué significan los cuartiles en un conjunto de datos?

    • son la división de un conjunto de datos, ordenados de mayor a manor. Se trata de divider estos en 4 partes, el primer cuartil o Q1 equivale al 25% de las observaciones, el segundo cuartil o Q2 equivale al 50% y a la mediana, el tercel cuartil o Q3 equivale al 75% de las observaciones.
  • ¿Qué significa el rango intercuartil y para qué sirve?

    • El rango intercuartílico es una medida de variabilidad adecuada cuando la medida de posición central empleada ha sido la mediana. Se define como la diferencia entre el tercer cuartil (Q3) y el primer cuartil (Q1), es decir: RQ = Q3 - Q1. A la mitad del rango intercuartil se le conoce como desviación cuartil (DQ), es afectada muy poco por cuentas extremas. Esto lo hace una buena medida de dispersión para distribuciones sesgadas: DQ = RQ/2= (Q3 - Q1)/2.

      Se usa para construir los diagramas de caja y bigote (box plots) que sirven para visualizar la variabilidad de una variable y comparar distribuciones de la misma variable; además de ubicar valores extremos.​

  • En el conjunto de datos de alumnos si un alumno tiene promedio de 80 ¿está por encima o por debajo del segundo cuartil?

    • Queda por debajo, porqué el rango del 2 es de 85.83.
  • ¿Cómo se interpreta e diagrama de caja?

    • Comenzamos desde el primer cuartil hasta el tercero, tomando como mitad a la mediana. Una vez formado el rectángulo o caja, trazamos lineas hasta el valor mínimo y máximo de nuestra muestra.
  • ¿Qué describe la función summary() y como se interpreta

    • nos resume nuestros datos en la información que alguien pueda necesitar para realizar algun tipo de estadistica, permitiendonos acceder a sus mínimo, máximo, primer, segundo, tercer cuartil y su media.
  • ¿Qué les deja el caso?

    • Mayormente este caso nos permite manipular y experimentra con la creacion y el analisis de como funcionan los cuartiles y persentiles de un conjunto de datos. Así como tambien la utilizacion de los diagrama de caja, desde como crearlos y como analizarlos tambien. iniciamos cargando algunas librerias necesarias, despues de que se simulan unos datos ya sean aleatorios o previamente pensados para su utilizacion le aplicaremos las formulas de los cuartiles y persentiles para empezar a trabajar en su interpretación de manera grafica, puesto que es más llamativo a la vista.

5 Referencias bibliográficas

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.