1 Objetivo

Identificar, describir e interpretar medidas de variabilidad en un conjunto de datos.

2 Descripción

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.

3 Marco de referencia

Pendiente

4 Desarrollo

4.1 Cargar librerías

Cargas las librerías necesarias para los ejercicio de todo el caso.

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

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.

4.2 Los datos de sueldos

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)

4.2.1 Varianza matemáticamente

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, al cuadrado.”

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

4.2.2 Desviación matemáticamente

desviacion <- sqrt(varianza)
desviacion
## [1] 165.653

4.2.3 Coeficiente de variación matemáticamente

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

4.2.4 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

4.2.5 Dispersión de sueldos

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

4.3 Datos de alumnos

Se presenta un ejercicio de medidas de dispersión con datos de alumnos

4.3.1 Cargar los datos

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

4.3.2 Primeros y últimos cincuenta registros

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

4.3.3 La media

media <- mean(datos$Promedio)
media
## [1] 86.59522

4.3.4 La varianza

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

4.3.5 La desviación

Se determina la desviación estándar de la variable Promedio del conjunto de datos.

desviacion <- sd(datos$Promedio)
desviacion
## [1] 4.552083

4.3.6 El coeficiente de variación

CV <- desviacion / media * 100
CV
## [1] 5.256737

4.3.7 Dispersión de Promedio

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

4.4 Tres carreras diferentes

Se eligen tres carreras diferentes, ARQUITECTURA, CIVIL, INDUSTRIAL

4.4.1 Datos Arquitectura

datos.arquitectura <- subset(datos, Carrera == 'ARQUITECTURA') 

head(datos.arquitectura)
##       X.1    X NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio
## 4903 4903 4903         1      1       10          227          10    91.96
## 4904 4904 4904         2      2        8          178          33    83.16
## 4905 4905 4905         3      3       10          176          34    81.68
## 4906 4906 4906         4      4       12          194          39    83.60
## 4907 4907 4907         5      5       10          172          18    81.51
## 4908 4908 4908         6      6       10          182          33    83.08
##           Carrera
## 4903 ARQUITECTURA
## 4904 ARQUITECTURA
## 4905 ARQUITECTURA
## 4906 ARQUITECTURA
## 4907 ARQUITECTURA
## 4908 ARQUITECTURA
media.arquitectura <- mean(datos.arquitectura$Promedio)
varianza.arquitectura <- var(datos.arquitectura$Promedio)
desviacion.arquitectura <- sd(datos.arquitectura$Promedio)
CV.arquitectura <- desviacion.arquitectura / media.arquitectura * 100

4.4.2 Dispersión

En a instrucción ggplot(data = datos.civil, 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 Arquitectura"
subtitulo <- paste("Media=", round(media.arquitectura,2), " Varianza=",round(varianza.arquitectura,2)," Desv. Std.=",round(desviacion.arquitectura,2), " CV =", round(CV.arquitectura, 2),"%") 
ggplot(data = datos.arquitectura, mapping = aes(x = Alumno,  y = Promedio)) + 
  geom_point(colour = "orange") +
  geom_hline(yintercept = media, colour = "red") +
  ggtitle(titulo, subtitle = subtitulo) +
  xlab('Observaciones') + ylab('Promedios')

4.4.3 Datos Civil

datos.civil <- subset(datos, Carrera == 'CIVIL') 

head(datos.civil)
##       X.1    X NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio
## 3909 3909 3909         1      1       11          166          20    76.74
## 3910 3910 3910         2      2       10          178          20    79.76
## 3911 3911 3911         3      3       11          165          17    79.43
## 3912 3912 3912         4      4       11          211          24    77.57
## 3913 3913 3913         5      5       10          216          29    80.31
## 3914 3914 3914         6      6       10          220          15    78.54
##      Carrera
## 3909   CIVIL
## 3910   CIVIL
## 3911   CIVIL
## 3912   CIVIL
## 3913   CIVIL
## 3914   CIVIL
media.civil <- mean(datos.civil$Promedio)
varianza.civil <- var(datos.civil$Promedio)
desviacion.civil <- sd(datos.civil$Promedio)
CV.civil <- desviacion.civil / media.civil * 100

4.4.4 Dispersión

titulo <- "Alumnos Civil"
subtitulo <- paste("Media=", round(media.civil,2), " Varianza=",round(varianza.civil,2)," Desv. Std.=",round(desviacion.civil,2), " CV =", round(CV.civil, 2),"%") 
ggplot(data = datos.civil, mapping = aes(x = Alumno,  y = Promedio)) + 
  geom_point(colour = "brown") +
  geom_hline(yintercept = media, colour = "red") +
  ggtitle(titulo, subtitle = subtitulo) +
  xlab('Observaciones') + ylab('Promedios')

4.4.5 Datos Industrial

datos.industrial <- subset(datos, Carrera == 'INDUSTRIAL') 

head(datos.industrial)
##       X.1    X NoControl Alumno Semestre Cr.Aprobados Cr.Cursando Promedio
## 2708 2708 2708         1      1       10          221          14    85.04
## 2709 2709 2709         2      2       15          224           6    76.45
## 2710 2710 2710         3      3       14          250          10    87.41
## 2711 2711 2711         4      4       10          235          10    79.83
## 2712 2712 2712         5      5       12          218          27    80.78
## 2713 2713 2713         6      6       11          158          15    79.92
##         Carrera
## 2708 INDUSTRIAL
## 2709 INDUSTRIAL
## 2710 INDUSTRIAL
## 2711 INDUSTRIAL
## 2712 INDUSTRIAL
## 2713 INDUSTRIAL
media.industrial <- mean(datos.industrial$Promedio)
varianza.industrial <- var(datos.industrial$Promedio)
desviacion.industrial <- sd(datos.industrial$Promedio)
CV.industrial <- desviacion.industrial / media.industrial * 100

4.4.6 Dispersión

titulo <- "Alumnos Industrial"
subtitulo <- paste("Media=", round(media.industrial,2), " Varianza=",round(varianza.industrial,2)," Desv. Std.=",round(desviacion.industrial,2), " CV =", round(CV.industrial, 2),"%") 
ggplot(data = datos.industrial, mapping = aes(x = Alumno,  y = Promedio)) + 
  geom_point(colour = "green") +
  geom_hline(yintercept = media, colour = "red") +
  ggtitle(titulo, subtitle = subtitulo) +
  xlab('Observaciones') + ylab('Promedios')

4.4.7 Dispersión de todas las carreras

ggplot(data = datos, mapping = aes(x = Alumno, y = Promedio, color = Carrera)) +
         geom_point() +
         facet_wrap(~ Carrera, nrow = 5) 

5 Interpretación del caso