En la práctica 2 aprendimos a representar y analizar variables cualitativas por medio de diagramas de barras. En esta práctica aprenderemos a representar y analizar variables cuantitativas por medio de histogramas y a calcular las medidas de tendencia central y dispersión más adecuadas.
Después de realizar con éxito esta práctica serás capaz de:
La función que nos permite construir un histograma en R es hist( x, … ), donde x es el vector de valores que representa la serie de datos de interés. Los puntos suspensivos indican que se pueden fijar algunos parámetros adicionales.
Una de las habilidades fundamentales para el desarrollo del pensamiento estadístico es identificar la simetría de una distribución de datos.
Copie y ejecute el siguiente código. Esto generará un histograma aproximadamente simétrico.
serie1 <- c(9.87,9.9,10.32,9.77,10.4,10.1,10.11,9.91,9.92,9.86,10.28,9.62,10.13,10.05,9.89,10.57,9.8,10.29,9.86,10.3,10.2,9.97,9.56,10.34,10.18,10.14,10.21,9.9,9.82,10.23,10.35,10.26,9.94,9.47,10.46,10.09,9.88,9.67,9.66,9.84,10.05,9.56,10.14,9.4,10.01,10.02,9.64,9.9,9.82,10.1,9.83, 9.73, 10.11, 10.01,9.92,10.74,10.29,10.02,9.68,9.96,9.79,9.82,9.98,9.79,9.44,10.05,10.01,9.73,10.12,9.36,10.04,9.9,9.92,9.8,9.68,9.49,10.03,10.33,9.72,9.83)
hist(serie1, main="Histograma para la Variable serie1", probability=TRUE, xlim = c(9,11), ylab = "Densidad", col="lightsalmon")
La forma del histograma sugiere que la distribución es aproximadamente simétrica. Es importante recalcar que la simetría perfecta raras veces se da en la realidad (algunos autores proponen que la simetría perfecta no existe) por eso, diremos que la distribución es aproximadamente simétrica. Ejecute el siguiente código varias veces hastas que obtenga el “big picture” de cómo luce una distribución aproximadamente simétrica.
datos_simetricos <- rnorm(100,10,0.3)
hist(datos_simetricos,probability = TRUE, col="lightsalmon")
curve(dnorm(x,10,0.3),add=TRUE,lwd="3")
Copie el siguiente código y ejecútelo
serie3 <- c(0.88, 0.91, 0.88, 0.90, 0.88, 0.89, 0.88, 0.80, 0.91, 0.69, 0.79, 0.88, 0.77, 0.80, 0.93, 0.72, 0.94, 0.92, 0.76, 0.96, 0.82, 0.90, 0.75, 0.79, 0.87, 0.79, 0.93, 0.79, 0.84, 0.94, 0.87, 0.82, 0.96, 0.79, 0.81, 0.91, 0.92, 0.90, 0.88, 0.90, 0.94, 0.87, 0.93, 0.89, 0.86, 0.84, 0.94, 0.84, 0.92, 0.96, 0.85, 0.80, 0.92, 0.88, 0.80, 0.88, 0.79, 0.82, 0.95, 0.95, 0.74, 0.87, 0.94, 0.96, 0.85, 0.87, 0.92, 0.87, 0.83, 0.86, 0.88, 0.85, 0.88, 0.93, 0.99, 0.93, 0.95, 0.87, 0.94, 0.95, 0.77, 0.87, 0.87, 0.92, 0.92, 0.87, 0.90, 0.92, 0.85, 0.86, 0.86, 0.88, 0.85, 0.87, 0.81, 0.75, 0.93, 0.93, 0.93, 0.74)
hist(serie3, main="Histograma para la Variable Serie3", probability=TRUE, xlim = c(0.6,1), ylab = "Densidad", col="lightsalmon")
La forma del histograma sugiera que la distribución de datos presenta un sesgo a la izquierda.
Para distribuciones aproximadamente simétricas usamos la media y la desviación estándar para medir el centro y la variabilidad de la distribución de datos. en R, usamos las funciones mean() para calcular la media, var() para la varianza y sd() para la desviación estándar. Si queremos encontrar las medidas de tendencia central y despersión para la siguiente serie de datos, procedemos de la siguiente manera:
10.12, 9.35, 11.11, 13.82, 12.28, 12.16, 9.93, 11.24, 12.56, 12.03, 14.55, 15.07, 12.54, 11.04, 13.41, 12.02, 15.03, 10.55, 11.39, 10.59, 15.76, 13.81, 10.72, 13.82, 11.22, 13.68, 13.36, 13.63, 12.24, 12.88, 12.01, 12.14, 13.09, 12.25, 10.53, 11.51, 11.31
datos1 <- c(10.12, 9.35, 11.11, 13.82, 12.28, 12.16, 9.93, 11.24, 12.56, 12.03, 14.55, 15.07, 12.54, 11.04, 13.41, 12.02, 15.03, 10.55, 11.39, 10.59, 15.76, 13.81, 10.72, 13.82, 11.22, 13.68, 13.36, 13.63, 12.24, 12.88, 12.01, 12.14, 13.09, 12.25, 10.53, 11.51, 11.31)
hist(datos1,main = "Verificando simetría", col="lightsalmon")
mean(datos1)
## [1] 12.29054
sd(datos1)
## [1] 1.535442
Para describir distribuciones sesgadas usamos la mediana y el IQR para medir el centro y la variabilidad de la distribución de datos. En R, usamos las funciones median() para calcular la media, IQR() para el recorrido intercuartílico (o rango intercuartil). Si queremos encontrar las medidas de tendencia central y despersión para la siguiente serie de datos, procedemos de la siguiente manera:
0.63, 0.86, 0.88, 0.59, 0.82, 0.68, 0.54, 0.83, 0.89, 0.80, 0.79, 0.67, 0.55, 0.35, 0.96, 0.71, 0.96, 0.90, 0.75, 0.62, 0.97, 0.71, 0.92, 0.82, 0.90, 0.90, 0.57, 0.81, 0.93, 0.66, 0.42, 0.68, 0.46, 0.74, 0.66
datos2 <- c(0.63, 0.86, 0.88, 0.59, 0.82, 0.68, 0.54, 0.83, 0.89, 0.80, 0.79, 0.67, 0.55, 0.35, 0.96, 0.71, 0.96, 0.90, 0.75, 0.62, 0.97, 0.71, 0.92, 0.82, 0.90, 0.90, 0.57, 0.81, 0.93, 0.66, 0.42, 0.68, 0.46, 0.74, 0.66)
hist(datos2,main="Verificando simetría", col="lightsalmon")
median(datos2)
## [1] 0.75
IQR(datos2)
## [1] 0.24
Para poder comparar la variabilidad entre dos series de datos aproximadamente simétricas y con unidades diferentes calculamos el coeficiente de variación \(C{_{var}}=\frac{s}{\overline{x}}\) para cada distribución y luego comparamos sus valores. Si ya tienen las mismas unidades podemos comparar las desviaciones estándar directamente.
Por ejemplo, suponga que en la siguiente tabla se muestran las notas de dos alumnos para la asigntura de probabilidad y estadística:
Alumno A: 4 5 5 4 6 7 8 9 3 9
Alumno B: 5 6 6 6 7 7 6 5 7 5
¿Para cuál de los alumnos la variabilidad en las notas es menor?
Como estamos analizando las mismas unidades (notas de ambos alumnos), simplemente comparamos ambas desviaciones estándar:
notasA <- c(4,5,5,4,6,7,8,9,3,9)
notasB <- c(5,6,6,6,7,7,6,5,7,5)
sd(notasA)
## [1] 2.160247
sd(notasB)
## [1] 0.8164966
Por lo que concluimos que la variabilidad del alumno B es menor que la del alumo A.
En el caso de datos con unidades diferentes calculamos los coefientes de variación. Por ejemplo, suponga que las notas del Alumno A se comparan con los tiempos invertidos en contestar los exámenes por un grupo de estudiantes (en horas): 2,3,4,2,4,3,5,2,2,5,6,1,3,2. ¿Cuál serie de datos tiene menor variabilidad?
Como se trata de series con distintas unidades, calculamos los coeficientes de variación para ambas series de datos
notasA <- c(4,5,5,4,6,7,8,9,3,9)
tiempos <- c(2,3,4,2,4,3,3,2,2,4,3,1,3,2)
cv_1 <- sd(notasA)/mean(notasA)
cv_2 <- sd(tiempos)/mean(tiempos)
cv_1
## [1] 0.3600411
cv_2
## [1] 0.3366902
Concluimos que los tiempos usados en contestar los exámenes tienen una menor variabilidad que las notas obtenidas por el alumno A.
Por defecto la función hist( ) selecciona el número de clases por defecto, pero también puede modificarse usando el parámetro breaks.
Por ejemplo, para la serie de datos del ejemplo 4 del guion de clase si se usa la función hist( ) sin este argumento se genera un histograma con 10 clases. Para generar el gráfico de la figura 9 podemos hacer uso del parámetro breaks de la siguiente manera
notas <- c(75, 89, 57, 88, 61,
90, 79, 91, 69, 99,
83, 85, 82, 79, 72,
78, 73, 86, 86, 86,
80, 87, 72, 92, 81,
98, 77, 68, 82, 78,
81, 84, 51, 77, 90,
70, 70, 88, 68, 81,
78, 86, 62, 70, 76,
89, 67, 87, 85, 80)
par(mfrow = c(1, 2)) # Esto divide en dos la región donde se presentan los gráficos
hist(notas, main = "Histograma por defecto", probability = TRUE, col = "grey")
hist(notas, breaks = seq(50.5,104.5, by = 9), main = "Histograma usando breaks", probability = TRUE ,col = "grey")
Nota: la función seq(50.5,104.5, by = 9) genera la secuencia 50.5, 59.5, …, 104.5.