Curso
Encontrar la mediana es una parte fundamental del análisis de datos, especialmente cuando tratas con distribuciones sesgadas o valores atípicos.
En R, la función median()
ofrece una forma sencilla e integrada de calcular una medida de tendencia central muy importante (¡no paramétrica!). Te enseñaré cómo funciona:
¿Qué hace R median()?
La función median()
examina tus datos numéricos y devuelve (una interpretación de) el valor central.
median(numeric_vector)
Aquí, numeric_vector
se refiere a un vector numérico o a un objeto similar, como una columna dentro de un marco de datos.
Un ejemplo sencillo con R mediana()
Veámoslo en acción. Supón que tienes un pequeño vector de números:
sales_numbers <- c(3, 5, 8, 2, 7)
median(sales_numbers)
R ordena automáticamente los números (2, 3, 5, 7, 8)
, y devuelve 5
. Este es el valor que se encuentra justo en el centro.
Pero, ¿y si tu vector tiene un número par de elementos, como en el siguiente ejemplo?
quarterly_sales <- c(10, 4, 7, 2)
median(quarterly_sales)
Aquí, R ordena hasta (2, 4, 7, 10)
y luego calcula la media de los dos números centrales (4
y 7
), obteniendo 5.5
.
Si tu conjunto de datos contiene un número impar de valores, simplemente elige el del centro. Para un número par de valores, median()
calcula la media de los dos números centrales.
Así que, bajo el capó, median()
hace la clasificación por ti, lo que es muy cómodo.
Manejo de valores NA con median()
A medida que crecen tus conjuntos de datos, es habitual encontrar valores perdidos. Si no tienes cuidado, pueden hacer que tus cálculos tropiecen. Por defecto, median()
devolverá NA
si falta algún valor en tu vector. (Si falta algún valor.) Veamos cómo se desarrolla esto:
monthly_sales <- c(6, 3, NA, 9)
median(monthly_sales)
Observa que el resultado es NA
. Para evitarlo, añade el argumento na.rm = TRUE
. Esto indica a R que elimine los valores perdidos antes de calcular la mediana:
median(monthly_sales, na.rm = TRUE)
Esta vez, obtendrás 6
(la mediana de los valores restantes (3
, 6
, y 9
)). Vigila esos NA, ya que pueden colarse en tus datos y desbaratar tu análisis si los olvidas.
Encontrar la mediana por grupo en R
Intentemos algo nuevo: comparar medianas entre distintos grupos.
Una pregunta frecuente: W¿Qué pasa si queremos ver la renta media por regiones? Al igual que hicimos con los vectores simples, R nos lo pone fácil, pero ahora tendremos que agrupar primero nuestros datos.
Una forma rápida en R base es con tapply()
:
income_values <- c(40000, 50000, 45000, 35000, 60000, 30000)
region_labels <- c("East", "West", "West", "East", "East", "West")
tapply(income_values, region_labels, median)
Así se calcula la renta media de cada región.
Si prefieres trabajar con el paquete dplyr
, puedes conseguir el mismo resultado utilizando una sintaxis amigable con las tuberías:
library(dplyr)
income_data <- data.frame(income = income_values, region = region_labels)
income_data %>%
group_by(region) %>%
summarise(median_income = median(income))
Este método produce una tabla resumen ordenada, que enumera la renta media de cada región.
Los resúmenes agrupados como éste son especialmente útiles cuando quieres comparar tendencias centrales entre categorías de tus datos.
Calcular la mediana de las columnas de un marco de datos en R
A veces, puedes querer obtener la mediana de todas las columnas de un marco de datos a la vez, quizá para hacer un análisis rápido de los valores centrales de tu conjunto de datos. Aquí utilizaré sapply()
.
test_scores <- data.frame(math = c(1, 2, 3), science = c(7, 8, 9))
sapply(test_scores, median)
Este comando devuelve la mediana de cada columna, para que puedas detectar tendencias o valores atípicos de un vistazo. Esta técnica es especialmente útil cuando exploras nuevos datos y quieres una visión general rápida.
Cosas a tener en cuenta
Antes de terminar, vamos a destacar algunos escollos comunes y las mejores prácticas para garantizar una navegación fluida con median()
:
-
Comprueba que sólo pasas datos numéricos a
median()
. Si lo intentas con un factor o un vector de caracteres, R arrojará un error. -
Recuerda utilizar
na.rm = TRUE
si sospechas que faltan datos. -
No hace falta que ordenes los datos manualmente.
median()
se encarga de la ordenación internamente, así que sólo tienes que pasar tu vector tal cual.
Conclusión
La función median()
es una forma estupenda de conocer el verdadero centro de tus datos, especialmente cuando tu conjunto de datos contiene valores atípicos que pueden distorsionar la media. La función median()
también es lo suficientemente flexible como para manejar complejidades como valores perdidos o resúmenes agrupados.
Para los siguientes pasos, también escribí un breve artículo sobre la función R mean(), por si quieres echarle un vistazo. Y recuerda seguir nuestro curso de Análisis Exploratorio de Datos en R para adquirir realmente todas las habilidades útiles e importantes para el trabajo.
