Identificar, describir e interpretar medidas de variabilidad en un conjunto de datos.
El caso se relaciona con identificar medidas de variabilidad como la varianza, la desviación estándar y el coeficiente de variación.
Primero se utilizan datos del libro del autor (Anderson, Sweeney, and Williams 2008a) como ejemplo para calcular la varianza, y a partir de ahí, se determina la desviación y finalmente el coeficiente de variación.
Segundo con datos de alumnos se calculan las mismas medias de dispersión, luego, se selecciona tres carreras y se determina cuál de los tres conjuntos de datos tiene mayor o menor dispersión conforme al valor % del coeficiente de variación.
Se cargan las librerías necesarias para los ejercicio de todo el caso.
library(readr)
library(ggplot2)
El desarrollo del caso inicia con un ejercicio obtenido del libro de (Anderson, Sweeney, and Williams 2008a). El segundo ejercicio serán los datos de alumnos con la variable Promedio ya conocidos en casos anteriores.
Son datos de sueldos en dólares de trabajadores de una empresa.
datos <- c(3450,3550, 3650, 3480, 3355, 3310, 3490, 3730, 3540, 3925, 3520, 3480 )
datos <- data.frame(xi=datos)
Primero se creó un vector llamado datos, luego ese mismo vector se transformó en data.frame con el mismo nombre de datos.
En las siguientes lineas de código R, se utiliza una función llamada cbind() para agregar columnas al data.frame existente llamado datos. La función nrow() sirve para identificar cuántas observaciones tiene la muestra de los datos, es decir, el valor de \(n\) =12.
Al final debe haber un conjunto de datos con cinco columnas, “xi, media, diferencia, alcuadrado.”
Se determina la sumatoria de las diferencias al cuadrado conforme a la fórmula y con ello el valor de la varianza. Se genera también la variable media para utilizarse a lo largo del caso.
n <- nrow(datos)
summary(datos)
## xi
## Min. :3310
## 1st Qu.:3472
## Median :3505
## Mean :3540
## 3rd Qu.:3575
## Max. :3925
datos <- cbind(datos, media = mean(datos$xi))
datos <- cbind(datos, diferencia=datos$xi - datos$media)
datos <- cbind(datos, alcuadrado = datos$diferencia^2)
media <- mean(datos$xi)
datos
## xi media diferencia alcuadrado
## 1 3450 3540 -90 8100
## 2 3550 3540 10 100
## 3 3650 3540 110 12100
## 4 3480 3540 -60 3600
## 5 3355 3540 -185 34225
## 6 3310 3540 -230 52900
## 7 3490 3540 -50 2500
## 8 3730 3540 190 36100
## 9 3540 3540 0 0
## 10 3925 3540 385 148225
## 11 3520 3540 -20 400
## 12 3480 3540 -60 3600
sumatoria <- sum(datos$alcuadrado)
sumatoria
## [1] 301850
varianza <- sumatoria / (n-1)
varianza
## [1] 27440.91
desviacion <- sqrt(varianza)
desviacion
## [1] 165.653
CV <- desviacion / media * 100
CV
## [1] 4.679463
El Coeficiente de Variación indica que la desviación estándar muestral es sólo 4.6794627 % del valor de la media muestral. Entre más bajo sea el valor porcentual del CV menor dispersión se encuentran en los datos. En general, el coeficiente de variación es un estadístico útil para comparar la variabilidad de variables que tienen desviaciones estándar distintas y medias distintas. (Anderson, Sweeney, and Williams 2008b).
Funciones en R para medidas de dispersión
Existen funciones en R que sirven para determinar varianza, desviación de manera directa, con ellas se podrá determinar de igual forma el coeficiente de variación. Las funciones son var() y sd() respectivamente para varianza y desviación estándar.
var(datos$xi)
## [1] 27440.91
#[1] 27440.91
sd(datos$xi)
## [1] 165.653
#[1] 165.653
CV <- sd(datos$xi) / mean(datos$xi) * 100
CV
## [1] 4.679463
Se muestra la dispersión del sueldo de cada trabajador y la linea horizontal indicando la media.
titulo <- "Sueldos"
subtitulo <- paste("Media =", round(media,2)," Varianza=",round(varianza,2)," Desv. Std.=",round(desviacion,2), " CV =", round(CV, 2),"%")
ggplot(data = datos, mapping = aes(x = 1:n, y = xi)) +
geom_point(colour = "green") +
geom_hline(yintercept = media, colour = "red") +
ggtitle(titulo, subtitle = subtitulo) +
xlab('Observaciones') + ylab('Sueldos')
Se presenta un ejercicio de medidas de dispersión con datos de alumnos
Se descargan datos de la dirección url “Datos de alumno con promedio superior a cero” de github,; los datos ya vienen con la variable Promedio de todas las observaciones superior a cero. En los casos 5 y 4 se tuvo la necesidad de limpiar observaciones, en este caso 6 ya no es necesario hacer dicha tarea de limpieza de registros.
Nuevamente se utiliza la función readr() para descargar un archivo texto (CSV) separado por comas; en esta misma función se utiliza el argumento stringsAsFactors = TRUE que significa que desde la carga de los datos y desde un inicio se considere como categóricas o tipo factor a las variable que vienen como tipo string o character del conjunto de datos que se carga.
Se utiliza la función str() para conocer el tipo de estructura de los datos, además, despliega los tipos de datos de cada variable, las que son numéricas, factor, entre otros, y la cantidad de registros del conjunto de datos cargado a R.
Nuevamente la función summary() muestra sólo las columnas 2,4,8 y 9 únicamente, summary(datos[c(2,4,8,9)]).
datos <- read.csv("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/datos/promedios%20alumnos/datos.alumnosEJ2021.csv", stringsAsFactors = TRUE)
#datos$Carrera <- factor(datos$Carrera)
summary(datos[c(2,4,8,9)])
## X Alumno Promedio Carrera
## Min. : 1 Min. : 1.0 Min. : 70.00 INDUSTRIAL : 653
## 1st Qu.:1384 1st Qu.:106.0 1st Qu.: 83.25 ARQUITECTURA : 633
## Median :2768 Median :239.0 Median : 86.36 CIVIL : 594
## Mean :2768 Mean :262.2 Mean : 86.60 GESTION : 518
## 3rd Qu.:4152 3rd Qu.:388.0 3rd Qu.: 89.83 QUIMICA : 515
## Max. :5535 Max. :755.0 Max. :100.00 ADMINISTRACION: 458
## (Other) :2164
str(datos)
## 'data.frame': 5535 obs. of 9 variables:
## $ X.1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ NoControl : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Alumno : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Semestre : int 12 13 10 13 10 10 13 11 11 10 ...
## $ Cr.Aprobados: int 207 226 235 231 235 235 231 197 235 231 ...
## $ Cr.Cursando : int 19 9 10 14 10 10 4 23 10 4 ...
## $ Promedio : num 79.8 82.5 95.2 79.3 92.7 ...
## $ Carrera : Factor w/ 14 levels "ADMINISTRACION",..: 13 13 13 13 13 13 13 13 13 13 ...
Los primeros cincuenta registros:
head(datos[,c(2,8,9)], 50)
## X Promedio Carrera
## 1 1 79.84 SISTEMAS
## 2 2 82.55 SISTEMAS
## 3 3 95.16 SISTEMAS
## 4 4 79.32 SISTEMAS
## 5 5 92.67 SISTEMAS
## 6 6 91.25 SISTEMAS
## 7 7 82.46 SISTEMAS
## 8 8 83.72 SISTEMAS
## 9 9 85.37 SISTEMAS
## 10 10 85.12 SISTEMAS
## 11 11 78.22 SISTEMAS
## 12 12 91.25 SISTEMAS
## 13 13 84.59 SISTEMAS
## 14 14 89.16 SISTEMAS
## 15 15 82.51 SISTEMAS
## 16 16 81.58 SISTEMAS
## 17 17 82.63 SISTEMAS
## 18 18 87.18 SISTEMAS
## 19 19 89.55 SISTEMAS
## 20 20 86.27 SISTEMAS
## 21 21 84.02 SISTEMAS
## 22 22 82.23 SISTEMAS
## 23 23 83.37 SISTEMAS
## 24 24 92.67 SISTEMAS
## 25 25 82.75 SISTEMAS
## 26 26 95.94 SISTEMAS
## 27 27 91.27 SISTEMAS
## 28 28 89.33 SISTEMAS
## 29 29 86.02 SISTEMAS
## 30 30 83.45 SISTEMAS
## 31 31 80.81 SISTEMAS
## 32 32 78.33 SISTEMAS
## 33 33 89.35 SISTEMAS
## 34 34 83.76 SISTEMAS
## 35 35 80.42 SISTEMAS
## 36 36 94.43 SISTEMAS
## 37 37 83.29 SISTEMAS
## 38 38 87.72 SISTEMAS
## 39 39 85.25 SISTEMAS
## 40 40 93.16 SISTEMAS
## 41 41 81.88 SISTEMAS
## 42 42 80.86 SISTEMAS
## 43 43 82.24 SISTEMAS
## 44 44 87.78 SISTEMAS
## 45 45 81.60 SISTEMAS
## 46 46 84.83 SISTEMAS
## 47 47 83.71 SISTEMAS
## 48 48 90.44 SISTEMAS
## 49 49 90.79 SISTEMAS
## 50 50 89.08 SISTEMAS
Los últimos cincuenta registros:
tail(datos[,c(2,8,9)], 50)
## X Promedio Carrera
## 5486 5486 87.70 ARQUITECTURA
## 5487 5487 81.96 ARQUITECTURA
## 5488 5488 85.45 ARQUITECTURA
## 5489 5489 93.75 ARQUITECTURA
## 5490 5490 82.33 ARQUITECTURA
## 5491 5491 82.80 ARQUITECTURA
## 5492 5492 76.71 ARQUITECTURA
## 5493 5493 87.05 ARQUITECTURA
## 5494 5494 87.50 ARQUITECTURA
## 5495 5495 83.70 ARQUITECTURA
## 5496 5496 93.50 ARQUITECTURA
## 5497 5497 91.67 ARQUITECTURA
## 5498 5498 89.67 ARQUITECTURA
## 5499 5499 89.83 ARQUITECTURA
## 5500 5500 87.03 ARQUITECTURA
## 5501 5501 87.25 ARQUITECTURA
## 5502 5502 77.91 ARQUITECTURA
## 5503 5503 88.38 ARQUITECTURA
## 5504 5504 89.00 ARQUITECTURA
## 5505 5505 86.17 ARQUITECTURA
## 5506 5506 86.40 ARQUITECTURA
## 5507 5507 91.50 ARQUITECTURA
## 5508 5508 84.33 ARQUITECTURA
## 5509 5509 91.75 ARQUITECTURA
## 5510 5510 86.72 ARQUITECTURA
## 5511 5511 89.13 ARQUITECTURA
## 5512 5512 87.00 ARQUITECTURA
## 5513 5513 86.21 ARQUITECTURA
## 5514 5514 87.80 ARQUITECTURA
## 5515 5515 88.83 ARQUITECTURA
## 5516 5516 75.00 ARQUITECTURA
## 5517 5517 84.00 ARQUITECTURA
## 5518 5518 84.50 ARQUITECTURA
## 5519 5519 85.55 ARQUITECTURA
## 5520 5520 87.77 ARQUITECTURA
## 5521 5521 86.11 ARQUITECTURA
## 5522 5522 91.50 ARQUITECTURA
## 5523 5523 84.36 ARQUITECTURA
## 5524 5524 86.81 ARQUITECTURA
## 5525 5525 87.80 ARQUITECTURA
## 5526 5526 84.67 ARQUITECTURA
## 5527 5527 81.27 ARQUITECTURA
## 5528 5528 92.00 ARQUITECTURA
## 5529 5529 87.59 ARQUITECTURA
## 5530 5530 81.16 ARQUITECTURA
## 5531 5531 84.43 ARQUITECTURA
## 5532 5532 92.47 ARQUITECTURA
## 5533 5533 89.74 ARQUITECTURA
## 5534 5534 87.75 ARQUITECTURA
## 5535 5535 86.50 ARQUITECTURA
media <- mean(datos$Promedio)
media
## [1] 86.59522
Se determina la varianza de la variable Promedio del conjunto de datos.
La variable Promedio es una variable cuantitativa que se que significa el promedio de alumnos inscritos en una Institución Educativa. Siendo variable cuantitativa se puede aplicar medidas de dispersión.
varianza <- var(datos$Promedio)
varianza
## [1] 20.72146
Se determina la desviación estándar de la variable Promedio del conjunto de datos.
desviacion <- sd(datos$Promedio)
desviacion
## [1] 4.552083
CV <- desviacion / media * 100
CV
## [1] 5.256737
Se visualiza el diagrama de dispersión de todos los alumnos de todas las carreras en su variable Promedio.
titulo <- "Todos los alumnos"
subtitulo <- paste("Media=", round(media,2), " Varianza=",round(varianza,2)," Desv. Std.=",round(desviacion,2), " CV =", round(CV, 2),"%")
ggplot(data = datos, mapping = aes(x = X, y = Promedio)) +
geom_point(colour = "blue") +
geom_hline(yintercept = media, colour = "red") +
ggtitle(titulo, subtitle = subtitulo) +
xlab('Observaciones') + ylab('Promedios')
Se eligen tres carreras diferentes, SISTEMAS, MECATRONICA y ADMINISTRACIÓN
datos.sistemas <- subset(datos, Carrera == 'SISTEMAS')
head(datos.sistemas)
## 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
media.sistemas <- mean(datos.sistemas$Promedio)
varianza.sistemas <- var(datos.sistemas$Promedio)
desviacion.sistemas <- sd(datos.sistemas$Promedio)
CV.sistemas <- desviacion.sistemas / media.sistemas * 100
media.sistemas
## [1] 87.15769
varianza.sistemas
## [1] 20.32183
desviacion.sistemas
## [1] 4.507974
CV.sistemas
## [1] 5.172205
En a instrucción ggplot(data = datos.sistemas, mapping = aes(x = Alumno, y = Promedio)) se toma en el eje de las X el consecutivo de la variable Alumnos, que es desde 1 hasta el último alumno de cada carrera; y en el eje de las Y’s el Promedio.
titulo <- "Alumnos Sistemas"
subtitulo <- paste("Media=", round(media.sistemas,2), " Varianza=",round(varianza.sistemas,2)," Desv. Std.=",round(desviacion.sistemas,2), " CV =", round(CV.sistemas, 2),"%")
ggplot(data = datos.sistemas, mapping = aes(x = Alumno, y = Promedio)) +
geom_point(colour = "orange") +
geom_hline(yintercept = media, colour = "red") +
ggtitle(titulo, subtitle = subtitulo) +
xlab('Observaciones') + ylab('Promedios')
datos.mecatronica <- subset(datos, Carrera == 'MECATRONICA')
head(datos.mecatronica)
## X.1 X NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio
## 2049 2049 2049 1 1 13 195 25 78.63
## 2050 2050 2050 2 2 12 229 6 80.46
## 2051 2051 2051 3 3 12 220 15 83.91
## 2052 2052 2052 4 4 10 235 10 92.45
## 2053 2053 2053 5 5 10 201 9 84.10
## 2054 2054 2054 6 6 11 189 36 83.03
## Carrera
## 2049 MECATRONICA
## 2050 MECATRONICA
## 2051 MECATRONICA
## 2052 MECATRONICA
## 2053 MECATRONICA
## 2054 MECATRONICA
media.mecatronica <- mean(datos.mecatronica$Promedio)
varianza.mecatronica <- var(datos.mecatronica$Promedio)
desviacion.mecatronica <- sd(datos.mecatronica$Promedio)
CV.mecatronica <- desviacion.mecatronica / media.mecatronica * 100
media.mecatronica
## [1] 85.23032
varianza.mecatronica
## [1] 13.01185
desviacion.mecatronica
## [1] 3.607194
CV.mecatronica
## [1] 4.232289
titulo <- "Alumnos Mecatrónica"
subtitulo <- paste("Media=", round(media.mecatronica,2), " Varianza=",round(varianza.mecatronica,2)," Desv. Std.=",round(desviacion.mecatronica,2), " CV =", round(CV.mecatronica, 2),"%")
ggplot(data = datos.mecatronica, mapping = aes(x = Alumno, y = Promedio)) +
geom_point(colour = "brown") +
geom_hline(yintercept = media, colour = "red") +
ggtitle(titulo, subtitle = subtitulo) +
xlab('Observaciones') + ylab('Promedios')
datos.admon <- subset(datos, Carrera == 'ADMINISTRACION')
head(datos.admon)
## X.1 X NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio
## 558 558 558 1 1 10 262 10 87.67
## 559 559 559 2 2 10 231 20 90.29
## 560 560 560 3 3 10 204 22 85.60
## 561 561 561 4 4 10 262 10 89.56
## 562 562 562 5 5 11 252 10 87.25
## 563 563 563 6 6 10 232 24 87.10
## Carrera
## 558 ADMINISTRACION
## 559 ADMINISTRACION
## 560 ADMINISTRACION
## 561 ADMINISTRACION
## 562 ADMINISTRACION
## 563 ADMINISTRACION
media.admon <- mean(datos.admon$Promedio)
varianza.admon <- var(datos.admon$Promedio)
desviacion.admon <- sd(datos.admon$Promedio)
CV.admon <- desviacion.admon / media.admon * 100
media.admon
## [1] 90.17629
varianza.admon
## [1] 14.1488
desviacion.admon
## [1] 3.76149
CV.admon
## [1] 4.171262
titulo <- "Alumnos Administración"
subtitulo <- paste("Media=", round(media.admon,2), " Varianza=",round(varianza.admon,2)," Desv. Std.=",round(desviacion.admon,2), " CV =", round(CV.admon, 2),"%")
ggplot(data = datos.admon, mapping = aes(x = Alumno, y = Promedio)) +
geom_point(colour = "green") +
geom_hline(yintercept = media, colour = "red") +
ggtitle(titulo, subtitle = subtitulo) +
xlab('Observaciones') + ylab('Promedios')
ggplot(data = datos, mapping = aes(x = Alumno, y = Promedio, color = Carrera)) +
geom_point() +
facet_wrap(~ Carrera, nrow = 5)
¿A que se refieren las medidas de dispersión?
R: En general, señalizan y determinan qué tan alejados se encuentran los datos entre sí, e indican qué tanto varía la separación de los datos a otras medidas.
¿Qué significa la varianza en un conjunto de datos? y ¿cómo se determina en lenguaje R?
R: Es la diferencia que hay entre cada dato del conjunto y la media de todo el conjunto. Matemáticamente se determina dividiendo la sumatoria del cuadrado de la diferencia que hay en cada dato y la media, dividido entre el número total de datos, pero en R se determina fácilmente con la función var().
¿Qué significa la desviación estándar en un conjunto de datos? y ¿cómo se determina en lenguaje R?
R: Es la raíz cuadrada de la varianza, y en R se determina con la función sd().
¿A qué se refiere el coeficiente de variación en un conjunto de datos? y ¿cómo se determina en R?
R: Es la representación porcentual de la desviación estándar, e indica qué tan grande es la desviación estándar respecto a la media de los datos. En R no tiene una función específica, así que se determina matemáticamente con la división de la desviación estándar entre la media del conjunto de datos, luego se multiplica por 100%.
De los datos alumnos de aquellos que tienen promedio superior a cero, ¿cuál es el valor de la media, de la varianza, de la desviación estándar y del coeficiente de variación de todos ellos conforme a la variable o columna Promedio?
R: De la Media es 86.5952, de la Varianza es 20.7214, de la Desviación Estándar es 4.552 y del Coeficiente de Variación es 5.2567%
Seleccione tres carreras al azar e indique cuáles seleccionaron, determine los coeficiente de variación para cada carrera o para cada conjunto de datos de cada carrera conforme a la variable Promedio. ¿Cuál de los tres conjuntos tiene mayor y menor coeficiente de variación y qué significa?
R: Se seleccionaron las carreras de Sistemas, Mecatrónica y Administración. Se determinaron los siguientes datos.
De la carrera de Sistemas, la Media fue de 87.1576, la Varianza fue de 20.3218, la Desviación Estándar fue de 4.5079, y el Coeficiente de Variación fue de 5.1722%.
De la carrera de Mecatrónica, la Media fue de 85.2303, la Varianza fue de 13.0118, la Desviación Estándar fue de 3.6071, y el Coeficiente de Variación fue de 4.2322%.
De la carrera de Administración, la Media fue de 90.1762, la Varianza fue de 14.1488, la Desviación Estándar fue de 3.7614, y el Coeficiente de Variación fue de 4.1712%.
En base a esto se puede observar que Sistemas tiene el mayor Coeficiente de Variación. y Administración tiene el menor. Esto nos indica que cada promedio de sistemas se encuentra más alejado de la media, en comparación a los promedios de administración.
¿Qué les deja el caso?
Este caso nos demuestra y aplica el uso de las medidas de dispersión estándar, las cuales sirven para dar una idea de qué tan alejados se encuentran todos los datos de un conjunto de datos a comparación de su media o promedio. Esto a su ves nos sirve para calcular la escala y diferencia de los datos de todo un conjunto de datos obtenidos de una muestra, y nos permite tomar decisiones y actuar en base a ello.
Anderson, David R., Dennis J. Sweeney, and Thomas A. Williams. 2008a. 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,.
———. 2008b. 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,.
Devore, Jay L. 2016b. Fundamentos de Probabilidad y Estadística. Primera Edición. CENGAGE.
———. 2016a. Fundamentos de Probabilidad y Estadística. Primera Edición. CENGAGE.