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.
pendiente
Cargas las librerías necesarias para los ejercisio 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 nn =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 genra tambien 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).
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
sd(datos$xi)
## [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, ARQUITECTURA, CIVIL, INDUSTRIAL
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
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')
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
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')
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
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')
ggplot(data = datos, mapping = aes(x = Alumno, y = Promedio, color = Carrera)) +
geom_point() +
facet_wrap(~ Carrera, nrow = 5)
5 Interpretación del caso
De acuerdo con algunos autores las medidas de dispersion son números que indican si una variable se mueve mucho, poco, más o menos que otra. La razón de ser de este tipo de medidas es conocer de manera resumida una característica de la variable estudiada.
La varianza se define como una medida de dispersión que representa la variabilidad de una serie de datos respecto a su media. Formalmente se calcula como la suma de los residuos al cuadrado divididos entre el total de observaciones.
Esta varianza se determina mediante una formula, como la siguiente: Sin embargo en el sofware r studio utilizamos una funcion llamada “var” que nos ayuda a hacer todo este proceso mar rapido y sencillo.
La desviacion estandar o tambien llamada desviacion tipica es otra medida que ofrece información de la dispersión respecto a la media. Su cálculo es exactamente el mismo que la varianza, pero realizando la raíz cuadrada de su resultado. Es decir, la desviación típica es la raíz cuadrada de la varianza.
Y su forma de representarse es la siguiente
Sin embargo en r studio se utiliza una funcion determinada “sd” por sus siglas standard desviation que nos calcula esta misma pero con mas facilidad
El coeficiente de variacion se utiliza cuando se desea hacer referencia a la relación entre el tamaño de la media y la variabilidad de la variable.
Por su formula matematica Sin embargo en r studio no vimos alguna funcion rapida que nos calcule de manera directga este dato, asi que simplemente sustituimos los datos que se encuentran en la media y la desviacion estandar para obtener este resultado
Para obtener la media de los datos simplemente hacemos uso de la funcion mean lo que nos dejo como resultado
## [1] 86.59522
Por otro lado tambien se utilizo la funcion “var” para obtener la varianza que nos dejo como resultado de la columna primedio :
[1] 20.72146
Tambien la desviacion estandar de esta columna Promedio se saco con la funcion “sd” que nos arrojo el siguiente resultado
## [1] 4.552083
Y por ultimo el coeficiente de variacion que se sustituyen los datos de la formula ya que no utilizamos una funcion directa, da como resultado el siguiente:
[1] 5.256737
En este caso se seleccionaron las carreras de CIVIL, ARQUITECTURA E INDUSTRIAL las cuales se repesentan por los siguientes resultados:
CIVIL :
media= 84.47
varianza= 18.5
desviacion= 4.3
coeficiente = 5.09%
ARQUITECTURA:
media= 86.98
varianza= 16.41
desviacion= 4.05
coeficiente= 4.66%
INDUSTRIAL:
media= 85.92
varianza= 19.05
desviacion = 4.36
coeficiente= 5.08%
De acuerdo con los resultado, la carrera con mayor coeficiente fue la de civil y la menor fue la de arquitectura, los que nos dice que
El caso numero 6 de probabilidad y estadistica, hablamos de la varianza, la desviacion estandar o tipica y el coeficiente de variacion que me deja mucho de que hablar ya que aprendimos nuevas funciones en el sofware r studio que nos ayudan a facilitar el uso de estas funciones de acuerdo con sus formulas matematicas. Tambien este caso me ayuda a recordar como es que en cursos anteriores de prepa vimos estos temas que desarrollavamos en la libreta y eran mas tediosos y se tardaba un poco mas en hacer todo ese proceso, sin embargo la herramienta de r, hoy nos ayuda a facilitar este tipo de temas.
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.