Este taller busca fortalecer las competencias en el uso de R para calcular e interpretar medidas de estadística descriptiva, fundamentales para la comprensión de datos en diversas disciplinas.
Definición: Promedio simple. Representa el valor central de una distribución si no hay valores extremos que la distorsionen.La media aritmética es el promedio de un conjunto de datos. Es una medida de tendencia central que se calcula sumando todos los valores y dividiendo por la cantidad de observaciones.
\[ \bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i \]
Ejemplo con iris (longitud del sépalo):
mean(iris$Sepal.Length)
## [1] 5.843333
Interpretación: Una media de 5.84 indica que, en promedio, la longitud del sépalo en el conjunto de datos es de 5.84 cm.
Definición: Da más peso a ciertos valores (asigna pesos diferentes a cada observación). Útil cuando algunos datos tienen mayor relevancia.
\[ \bar{x}_p = \frac{\sum x_i w_i}{\sum w_i} \]
valores <- iris$Sepal.Length[1:10]
pesos <- seq(1, 10)
weighted.mean(valores, pesos)
## [1] 4.829091
Interpretación: Si los pesos representan frecuencia o importancia, este promedio refleja un valor más representativo.
Definición: Se usa cuando los datos son tasas o razones, velocidades.Se define como el inverso del promedio de los inversos.
\[ \bar{x}_h = \frac{n}{\sum \frac{1}{x_i}} \]
valores <- iris$Petal.Length[1:10]
length(valores) / sum(1 / valores)
## [1] 1.443232
Interpretación: Útil para promediar velocidades u otros índices inversos.
Definición: Promedio multiplicativo. Se usa en crecimiento proporcional.
\[ \bar{x}_g = \left( \prod x_i \right)^{1/n} \]
valores <- iris$Petal.Width[1:10]
prod(valores)^(1/length(valores))
## [1] 0.2082759
Interpretación: Apropiada para promediar tasas de crecimiento.
Definición: Valor central de los datos ordenados. Robusta ante valores atípicos. Divide los datos en dos partes iguales.
Fórmula: Ordenar los datos y seleccionar el valor medio (o promedio de los dos valores centrales si n es par).
median(iris$Sepal.Width)
## [1] 3
Interpretación: La mitad de los valores están por encima y la otra mitad por debajo de la mediana.
library(ggplot2)
data("diamonds")
tabla <- table(cut(diamonds$price, breaks = seq(0, 20000, 5000)))
tabla
##
## (0,5e+03] (5e+03,1e+04] (1e+04,1.5e+04] (1.5e+04,2e+04]
## 39226 9492 3567 1655
La mediana para datos agrupados se puede aproximar usando interpolación lineal en la clase mediana.
Definiciones:
Cuartiles: Dividen los datos en cuatro partes iguales.
Deciles: Dividen los datos en diez partes iguales.
Percentiles: Dividen los datos en cien partes iguales.
Outliers: Son valores que se encuentran fuera del rango intercuartílico 1.5 veces.
quantile(iris$Sepal.Length) # Cuartiles
## 0% 25% 50% 75% 100%
## 4.3 5.1 5.8 6.4 7.9
quantile(iris$Sepal.Length, probs = seq(0.1, 1, 0.1)) # Deciles
## 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 4.80 5.00 5.27 5.60 5.80 6.10 6.30 6.52 6.90 7.90
quantile(iris$Sepal.Length, probs = seq(0.01, 1, 0.01)) # Percentiles
## 1% 2% 3% 4% 5% 6% 7% 8% 9% 10% 11% 12% 13%
## 4.400 4.400 4.547 4.600 4.600 4.694 4.743 4.800 4.800 4.800 4.900 4.900 4.900
## 14% 15% 16% 17% 18% 19% 20% 21% 22% 23% 24% 25% 26%
## 4.900 5.000 5.000 5.000 5.000 5.000 5.000 5.029 5.100 5.100 5.100 5.100 5.100
## 27% 28% 29% 30% 31% 32% 33% 34% 35% 36% 37% 38% 39%
## 5.123 5.200 5.200 5.270 5.400 5.400 5.400 5.400 5.500 5.500 5.500 5.500 5.511
## 40% 41% 42% 43% 44% 45% 46% 47% 48% 49% 50% 51% 52%
## 5.600 5.600 5.600 5.607 5.700 5.700 5.700 5.700 5.700 5.800 5.800 5.800 5.800
## 53% 54% 55% 56% 57% 58% 59% 60% 61% 62% 63% 64% 65%
## 5.800 5.900 5.900 6.000 6.000 6.000 6.000 6.100 6.100 6.100 6.100 6.200 6.200
## 66% 67% 68% 69% 70% 71% 72% 73% 74% 75% 76% 77% 78%
## 6.234 6.300 6.300 6.300 6.300 6.300 6.328 6.400 6.400 6.400 6.400 6.473 6.500
## 79% 80% 81% 82% 83% 84% 85% 86% 87% 88% 89% 90% 91%
## 6.500 6.520 6.600 6.700 6.700 6.700 6.700 6.700 6.763 6.800 6.861 6.900 6.900
## 92% 93% 94% 95% 96% 97% 98% 99% 100%
## 7.008 7.157 7.200 7.255 7.408 7.653 7.700 7.700 7.900
# Outliers
Q1 <- quantile(iris$Sepal.Length, 0.25)
Q3 <- quantile(iris$Sepal.Length, 0.75)
IQR <- Q3 - Q1
lim_inf <- Q1 - 1.5 * IQR
lim_sup <- Q3 + 1.5 * IQR
outliers <- iris$Sepal.Length[iris$Sepal.Length < lim_inf | iris$Sepal.Length > lim_sup]
outliers
## numeric(0)
Interpretación: Ayuda a comprender la dispersión y detectar valores extremos.
Definiciones: Varianza muestral: mide la dispersión de los datos respecto a la media, utilizando n−1
Varianza poblacional: usa n como denominador.
Fórmulas:
# Muestral
var(iris$Petal.Length)
## [1] 3.116278
# Poblacional
x <- iris$Petal.Length
mean_x <- mean(x)
sum((x - mean_x)^2) / length(x)
## [1] 3.095503
Interpretación: Cuánto varían los datos respecto a la media. Mayor varianza, más dispersión.
Definición: Es la raíz cuadrada de la varianza. Expresa la dispersión en las mismas unidades que los datos.
Fórmulas:
Ejemplo:
# Muestral
sd(iris$Petal.Length)
## [1] 1.765298
# Poblacional
sqrt(sum((x - mean_x)^2) / length(x))
## [1] 1.759404
Interpretación: Dispersión promedio en las mismas unidades que la variable.
Definiciones:
Fórmulas:
# Covarianza
cov(iris$Sepal.Length, iris$Petal.Length)
## [1] 1.274315
# Correlación
cor(iris$Sepal.Length, iris$Petal.Length)
## [1] 0.8717538
Interpretación:
Definición: Un histograma es una representación gráfica de la distribución de un conjunto de datos cuantitativos. Divide los datos en intervalos (clases) y muestra la frecuencia con la que ocurren.
Número de clases (Sturges):
\[ k = 1 + \log_2(n) \]
Ejemplo con mtcars (variable mpg):
library(ggplot2)
# Datos
x <- mtcars$mpg
n <- length(x)
k <- ceiling(1 + log2(n)) # Número de clases sugerido
# Histograma
hist(x, breaks = k, main = "Histograma de mpg", xlab = "Millas por galón", col = "skyblue", border = "white")
Interpretación: El histograma permite observar la forma de la distribución: simétrica, sesgada, multimodal, etc.
Construcción de frecuencias absolutas, relativas y acumuladas:
Ejemplo con mtcars$mpg:
# Crear clases
intervalos <- cut(x, breaks = k, right = FALSE)
# Frecuencia absoluta
freq_abs <- table(intervalos)
# Frecuencia relativa
freq_rel <- prop.table(freq_abs)
# Frecuencia acumulada
freq_acum <- cumsum(freq_abs)
# Frecuencia acumulada relativa
freq_rel_acum <- cumsum(freq_rel)
# Tabla resumen
tabla_frec <- data.frame(
Intervalo = names(freq_abs),
Frecuencia = as.vector(freq_abs),
Frec_Relativa = round(freq_rel, 3),
Frec_Acumulada = freq_acum,
Frec_Relativa_Acum = round(freq_rel_acum, 3)
)
knitr::kable(tabla_frec)
| Intervalo | Frecuencia | Frec_Relativa.intervalos | Frec_Relativa.Freq | Frec_Acumulada | Frec_Relativa_Acum | |
|---|---|---|---|---|---|---|
| [10.4,14.3) | [10.4,14.3) | 4 | [10.4,14.3) | 0.125 | 4 | 0.125 |
| [14.3,18.2) | [14.3,18.2) | 10 | [14.3,18.2) | 0.312 | 14 | 0.438 |
| [18.2,22.1) | [18.2,22.1) | 9 | [18.2,22.1) | 0.281 | 23 | 0.719 |
| [22.1,26.1) | [22.1,26.1) | 4 | [22.1,26.1) | 0.125 | 27 | 0.844 |
| [26.1,30) | [26.1,30) | 1 | [26.1,30) | 0.031 | 28 | 0.875 |
| [30,33.9) | [30,33.9) | 4 | [30,33.9) | 0.125 | 32 | 1.000 |
Interpretación: Esta tabla permite entender la distribución y acumulación de los datos en intervalos. Es útil para resúmenes cuantitativos y gráficos.
Definición: Los cuartiles dividen un conjunto de datos ordenados en cuatro partes iguales. El Boxplot representa gráficamente los cuartiles y posibles outliers.
Ejemplo con mtcars$mpg:
# Cuartiles
quantile(x, probs = c(0.25, 0.5, 0.75))
## 25% 50% 75%
## 15.425 19.200 22.800
# Boxplot
boxplot(x, main = "Boxplot de mpg", col = "lightgreen", horizontal = TRUE)
Interpretación: El boxplot permite detectar la simetría, la dispersión y los posibles valores atípicos (outliers).
Definición: La distribución normal es una distribución de probabilidad continua, simétrica, con forma de campana. Es fundamental en estadística.
Ejemplo de visualización:
# Curva normal teórica
x_vals <- seq(-4, 4, length.out = 100)
y_vals <- dnorm(x_vals)
plot(x_vals, y_vals, type = "l", col = "blue", lwd = 2,
main = "Distribución Normal Estándar", xlab = "Z", ylab = "Densidad")
Comparación de una variable con una normal:
# Histograma con curva normal superpuesta
x_norm <- scale(mtcars$mpg)
hist(x_norm, probability = TRUE, main = "mpg estandarizado vs. Normal",
col = "lightgray", xlab = "mpg estandarizado")
curve(dnorm(x), add = TRUE, col = "red", lwd = 2)
Interpretación: Comparar una variable con la normal estándar permite evaluar si sigue una distribución aproximadamente normal, clave para aplicar muchos métodos estadísticos inferenciales.
Este taller integral ha abordado el cálculo, visualización e interpretación de medidas de estadística descriptiva y exploratoria utilizando R, con énfasis en la comprensión conceptual y práctica de cada herramienta. A lo largo de los ejercicios, se trabajó con datos reales disponibles en R, lo cual permitió contextualizar los conceptos teóricos y observar su aplicación directa.
Se exploraron medidas de tendencia central (medias, mediana), dispersión (varianza, desviación estándar), posición (cuartiles, percentiles), así como relaciones entre variables (covarianza y correlación). También se construyeron tablas de frecuencia y gráficos fundamentales como histogramas, diagramas de caja (boxplot) y curvas de distribución normal, esenciales para identificar patrones y comportamientos en los datos.
El dominio de estas técnicas fortalece las competencias analíticas de los estudiantes y sienta las bases para estudios estadísticos más avanzados. Se invita a los participantes a continuar experimentando con otras variables y conjuntos de datos, afianzando así su aprendizaje autónomo y crítico frente al análisis de datos en diversos contextos.
¿Tienes preguntas? ¡Hablemos en los GEA!