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.

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.

Marco teórico.

Existen además de la media, mediana y moda otras medidas de posición, estas consisten en determinar la ubicación de los valores que dividen un conjunto de observaciones en partes iguales. Estas medidas son los cuartiles, deciles y percentiles. (Lind, Marchal, and Wathen 2015).

Los cuartiles dividen a un conjunto de observaciones en cuatro partes iguales de en un conjunto de valores ordenados de menor a mayor. (Lind, Marchal, and Wathen 2015).

Hablando de medida de localización mediana, esta significa que señala el centro de los datos ordenados, es decir al \(50\%\) o \(0.50\).

De igual manera, los cuartiles dividen a un conjunto de observaciones en cuatro partes iguales. El primer cuartil, que se representa mediante Q1, es el valor bajo el cual se presenta \(25\%\) o \(0.25\) de las observaciones, y el tercer cuartil, simbolizado por Q3, es el valor bajo el cual se presenta \(75\%\) o \(0.75\) de las observaciones. El cuartil dos 2 es igual al valor que se representa el \(50\%\) es decir igua a la mediana. (Lind, Marchal, and Wathen 2015).

Hablar de percentiles (porcentaje) significa encontrar el valor de los datos ordenados en una localización porcentual entre \(1\) y \(100\), es decir al \(20\), al \(45\%\), al \(60\%\) o al \(85\%\), es decir cualquier valor entre \(1\%\) y \(100\%\) en términos porcentuales o lo que es lo mismo cualquier valor entre \(0\) y \(1\) en términos relativos.

Los deciles significa dividir el conjunto de datos ordenados en 10 partes, de tal forma que el primer decil está al \(10\%\), el segundo al \(20\%\) y así sucesivamente hasta llegar al \(100\%\).

Algunos razonmientos e igualdades sería por ejemplo, el cuartil \(1\) o \(Q1\) que es el \(25\%\), es igual al percentil \(25\); el decil \(6\) al \(60\%\) es igual al percentil \(60\), y así algunas similitudes de localización.

La interpretación de cuartiles, percentiles y deciles radica en determinar cuántos datos están por encima o por debajo de esa medida de localización.

Por ejemplo como lo menciona Lind (2015), si un promedio general de estudiantes en la universidad se encuentra en el octavo decil, se podría concluir que \(80\%\) de los estudiantes tuvieron un promedio general inferior a ese valor y un \(20\%\) superior al valor encontrado. Si un promedio estuvo en el 92 percentil, entonces \(92\%\) de los estudiantes tuvo ese promedio general menor al valor encontrado, y solo \(8\%\) de ellos tuvo uno mayor.(Lind, Marchal, and Wathen 2015).

Lo mismo sucede con los cuartiles, significa interpretar y determinar el porcentaje y la cantidad de elementos que está por encima o por debajo del \(25\%\), del \(50\%\) o del \(75\%\) de los datos.

Para determinar el valor de un cuartil o un percentil se puede utilizar la siguiente fórmula.

Fórmula para cuartiles, deciles y percentiles.

$$ L_p = (n+1)

$$

Siendo:

  • \(L_p\) El valor del percentil o del cuartil a buscar

  • \(n\) Es el total de los datos \(p\) Es el valor porcentual \(25, 30, 50, 75,...\)

  • \(100\) dividido entre cien es el valor relativo.

Visualización de cuartiles.

El diagrama de caja permite es una representación gráfica basada en cuartiles que ayuda a presentar un conjunto de datos. Para construir un diagrama de caja solo se necesitan estos estadísticos: valor mínimo, Q1 (primer cuartil), mediana o Q2 (segundo cuartil), Q3 (tercer cuartil) y valor máximo.

Diagrama de caja o diagrama de bigotes.

El diagrama de caja también revele el concepto de rango intercuartil que significa la cantidad o la densidad de elementos que hay entre el \(Q1\) y \(Q3\); este rango inercuartil significa que el \(50\%\) de los datos está en ese rango.

Luego existe otro significado del diagrama, se pueden ver cuales son valores atípicos, extraños, muy altos o muy bajos, o outliers en inglés. Un dato atípico se trata de un valor que no concuerda con el resto de los datos. (Lind, Marchal, and Wathen 2015).

Se define como un valor más de 1.5 veces la amplitud del rango intercuartil más pequeño que Q1, o mayor que Q3. (Lind, Marchal, and Wathen 2015).

\[ \text{dato atípico > Q3}=(Q3 + 1.5\cdot(Q3-Q1)) \]y\[ \text{dato atípico < Q1}=(Q1 - 1.5\cdot(Q3-Q1)) \]

estos datos se encuentran a 1.5 veces el valor del rango entercuartil

\[ \text{rango intercuartil RI =}Q3 - Q1 \]

Función quantile() en R.

En Lenguaje R se utiliza la función quantile para determinar tanto cuartiles como percentiles y hasta deciles.

La función tiene un atributo type que permite determinar los cuartiles de acuerdo a autores y cada uno de ellos con sus fórmulas matemáticas para su cálculo, finalmente los valores que da una u otra fórmula son muy similares entre si y lo trascendente es el significado y la interpretación que hay que darle a estas medidas de localización.

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.

Cargar librerías.

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)

Datos simulados.

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

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

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

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

Para el resto del caso se le hará caso a los valores generados por la función quantile().

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

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

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

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

Diagrama de caja de los datos.

Diagrama de caja en función del eje de las x.
ggplot(data = datos, mapping = aes(x=datos)) + geom_boxplot(outlier.colour="red")

Diagrama de caja en función del eje de las y.
ggplot(data = datos, mapping = aes(y=datos)) + geom_boxplot(outlier.colour="red")

Datos de alumnos.

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

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

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.

Atípicos mayores. Rango intercuartil.

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

Atípicos menores. Rango intercuartil.

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

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.

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

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

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.

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

Interpretación.

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

    Son los valores que dividen en cuatro partes iguales un conjunto de tados, el cuartil 1 o Q1 representa el 25%, el cuartil 2 o Q2 representa el 50% siendo la mitada exacta de los datos, el cuartil 3 o Q3 es el 75 % de los datos.

  • ¿Qué significa el rango intercuartil y para qué sirve?

    El rango intercuartil es la diferencia entre el tercer y el primer cuartil y sirve para descartar valores atípicos ya sean mayores o menores.

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

    Si el promedio es de 80, este se encuantra por debajo del segundo cuartil el cual tiene un valor de 85.83

  • ¿Cómo se interpreta el diagrama de caja?

    Tomando como referencia el diagrama de caja de los promedios en limpio de los alumnos, dicho diagrama nos muestra los cuartiles de los datos de forma horizontal, siendo la línea divisora del ractangulo el cuartil 2 o la mediana.

  • ¿Qué describe la función summary() y como se interpreta?

    La función summary() nos muestra los valores minimos y maximos de un conjunto de datos, tambien nos muestra los cuartiles y por ende la mediana de los datos, así mismo nos muestra la frecuencia de los datos.

  • ¿Qué les deja el caso?

    En este caso he aprendido particularmente a calcular los cuartiles, percentiles y deciles,a utilizar la función summary, tambien aprendi un poco sobre como y cuando descartar algunos datos atípicos. Por ultimo aprendi un poco sobre los diagramas de caja.

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.