Determinar medidas de localización basadas en estadísticos cuartiles y percentiles utilizando de un conjunto de datos así como determinar su significado e interpretación.
El caso pretende dar a conocer como determinar cuartiles y percentiles de un conjunto de datos.
Los datos será simulados igual que en caso 4, 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 visualziación y se identifica su significa e interpretación.
PENDIENTE
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)
Se crean datos con la función sample de tal vez 100 valores de edades de personas entre 18 y 65. La variale 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
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 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
\(Lp=(n+1)⋅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().
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
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
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
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
ggplot(data = datos, mapping = aes(x=datos)) + geom_boxplot(outlier.colour="red")
ggplot(data = datos, mapping = aes(y=datos)) + geom_boxplot(outlier.colour="red")
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/datos.alumnosEJ2021.csv")
head(datos.alumnos)
## X.1 X NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio Carrera
## 1 1 1 1 1 12 207 19 79.84 SISTEMAS
## 2 2 2 2 2 13 226 9 82.55 SISTEMAS
## 3 3 3 3 3 10 235 10 95.16 SISTEMAS
## 4 4 4 4 4 13 231 14 79.32 SISTEMAS
## 5 5 5 5 5 10 235 10 92.67 SISTEMAS
## 6 6 6 6 6 10 235 10 91.25 SISTEMAS
tail(datos.alumnos)
## X.1 X NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio
## 5530 5530 5530 750 750 9 170 20 81.16
## 5531 5531 5531 751 751 7 103 19 84.43
## 5532 5532 5532 752 752 4 76 34 92.47
## 5533 5533 5533 753 753 4 84 26 89.74
## 5534 5534 5534 754 754 3 52 28 87.75
## 5535 5535 5535 755 755 2 18 22 86.50
## Carrera
## 5530 ARQUITECTURA
## 5531 ARQUITECTURA
## 5532 ARQUITECTURA
## 5533 ARQUITECTURA
## 5534 ARQUITECTURA
## 5535 ARQUITECTURA
n <- nrow(datos.alumnos)
n
## [1] 5535
Se factoriza la variable Carrera para que en summary se obtenga la frecuencia de la columna Carrera. i
datos.alumnos$Carrera <- factor(datos.alumnos$Carrera)
summary(datos.alumnos)
## X.1 X NoControl Alumno Semestre
## Min. : 1 Min. : 1 Min. : 1.0 Min. : 1.0 Min. : 2.000
## 1st Qu.:1384 1st Qu.:1384 1st Qu.:106.0 1st Qu.:106.0 1st Qu.: 3.000
## Median :2768 Median :2768 Median :239.0 Median :239.0 Median : 6.000
## Mean :2768 Mean :2768 Mean :262.2 Mean :262.2 Mean : 5.826
## 3rd Qu.:4152 3rd Qu.:4152 3rd Qu.:388.0 3rd Qu.:388.0 3rd Qu.: 8.000
## Max. :5535 Max. :5535 Max. :755.0 Max. :755.0 Max. :17.000
##
## Cr.Aprobados Cr.Cursando Promedio Carrera
## Min. : 4 Min. : 3.0 Min. : 70.00 INDUSTRIAL : 653
## 1st Qu.: 53 1st Qu.:23.0 1st Qu.: 83.25 ARQUITECTURA : 633
## Median :109 Median :28.0 Median : 86.36 CIVIL : 594
## Mean :115 Mean :26.1 Mean : 86.60 GESTION : 518
## 3rd Qu.:172 3rd Qu.:30.0 3rd Qu.: 89.83 QUIMICA : 515
## Max. :264 Max. :42.0 Max. :100.00 ADMINISTRACION: 458
## (Other) :2164
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%
## 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
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
atipicos.mayores <- Q3 + 1.5 * (Q3-Q1)
atipicos.mayores
## 75%
## 99.715
atipicos.menores <- Q1 - 1.5 * (Q3-Q1)
atipicos.menores
## 25%
## 73.355
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 0 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.
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)
## X.1 X NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio Carrera
## 1 1 1 1 1 12 207 19 79.84 SISTEMAS
## 2 2 2 2 2 13 226 9 82.55 SISTEMAS
## 3 3 3 3 3 10 235 10 95.16 SISTEMAS
## 4 4 4 4 4 13 231 14 79.32 SISTEMAS
## 5 5 5 5 5 10 235 10 92.67 SISTEMAS
## 6 6 6 6 6 10 235 10 91.25 SISTEMAS
tail(datos.alumnos)
## X.1 X NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio
## 5530 5530 5530 750 750 9 170 20 81.16
## 5531 5531 5531 751 751 7 103 19 84.43
## 5532 5532 5532 752 752 4 76 34 92.47
## 5533 5533 5533 753 753 4 84 26 89.74
## 5534 5534 5534 754 754 3 52 28 87.75
## 5535 5535 5535 755 755 2 18 22 86.50
## Carrera
## 5530 ARQUITECTURA
## 5531 ARQUITECTURA
## 5532 ARQUITECTURA
## 5533 ARQUITECTURA
## 5534 ARQUITECTURA
## 5535 ARQUITECTURA
n<-nrow(datos.alumnos)
n
## [1] 5535
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
summary(datos.alumnos)
## X.1 X NoControl Alumno Semestre
## Min. : 1 Min. : 1 Min. : 1.0 Min. : 1.0 Min. : 2.000
## 1st Qu.:1384 1st Qu.:1384 1st Qu.:106.0 1st Qu.:106.0 1st Qu.: 3.000
## Median :2768 Median :2768 Median :239.0 Median :239.0 Median : 6.000
## Mean :2768 Mean :2768 Mean :262.2 Mean :262.2 Mean : 5.826
## 3rd Qu.:4152 3rd Qu.:4152 3rd Qu.:388.0 3rd Qu.:388.0 3rd Qu.: 8.000
## Max. :5535 Max. :5535 Max. :755.0 Max. :755.0 Max. :17.000
##
## Cr.Aprobados Cr.Cursando Promedio Carrera
## Min. : 4 Min. : 3.0 Min. : 70.00 INDUSTRIAL : 653
## 1st Qu.: 53 1st Qu.:23.0 1st Qu.: 83.25 ARQUITECTURA : 633
## Median :109 Median :28.0 Median : 86.36 CIVIL : 594
## Mean :115 Mean :26.1 Mean : 86.60 GESTION : 518
## 3rd Qu.:172 3rd Qu.:30.0 3rd Qu.: 89.83 QUIMICA : 515
## Max. :264 Max. :42.0 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.
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))
Son una herramienta que usamos en la estadística y que nos sirve para administrar grupos de datos previamente ordenados. Los cuartiles son los tres valores de la variable que dividen a un conjunto de datos ordenados en cuatro partes iguales.
El rango intercuartíl es la diferencia entre el penúltimo y el primer cuartil de una distribución utilizado en el diagrama de caja. Sirve para construir el diagrama de caja y bigote.
En el conjunto de datos de alumnos si un alumno tiene promedio de 80 ¿está por encima o por debajo del segundo cuartil?
Esta por encima de Q2
¿Cómo se interpreta el diagrama de caja?
Permite identificar valores atípicos y comparar distribuciones. Además de conocer de una forma cómoda y rápida como el 50% de los valores centrales se distribuyen.
Se puede detectar rápidamente primer cuartil, segundo cuartil, tercer cuartil y el rango intercuartil.
¿Qué describe la función summary() y como se interpreta?
Muestra un resumen general de las variables del data.frame. La función Summary se interpreta mediante las variables del data frame (mínimo, máximo, media, mediana, primer y tercer cuartil), por lo que muestra la frecuencia de cada categoría.
¿Qué les deja el caso?
En el transcurso de esta actividad pude emplear los conocimientos visualizados en clases, obteniendo un excelente desempeño en dichos aprendizajes. Éste caso me sirvió de mucha práctica para ir desempeñando mis destrezas en el software. Con la realización de este caso pude aprender a calcular los cuartiles y percentiles en RStudio, tambien aprendi a identificar los valores atipicos menores y mayores y su rango intercuartil. De igual manera aprendi a interpretar un diagrama de caja
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.