Chat
Ask me anything
Ithy Logo
Sign in to save

Análisis Estadístico en R: Estadísticos de Variables Cuantitativas Filtradas por Cualitativas

Explorando datos en RStudio: Obtén resúmenes estadísticos por grupos definidos por variables categóricas.

estadisticos-cuantitativos-filtrados-r-3vwjdtg2

En el ámbito del análisis de datos con R, es una tarea común y fundamental obtener estadísticos descriptivos de una variable cuantitativa, pero no para el conjunto de datos completo, sino para subgrupos específicos definidos por los valores de una variable cualitativa. Este enfoque permite comparar características numéricas entre diferentes categorías, lo cual es crucial para entender las diferencias y patrones dentro de los datos.

R y su entorno de desarrollo RStudio ofrecen herramientas muy potentes y flexibles para llevar a cabo este tipo de análisis. Principalmente, el paquete dplyr del universo tidyverse simplifica enormemente estas operaciones mediante el uso de funciones como group_by() y summarise() (o summarize()).

Aspectos Clave para Obtener Estadísticos Agrupados

  • Identificación de Variables: Es fundamental distinguir claramente entre la variable cuantitativa de interés (aquella sobre la que se calcularán los estadísticos) y la variable cualitativa (la que define los grupos para el análisis).
  • Agrupación de Datos: El primer paso en R, utilizando el enfoque de dplyr, es agrupar el conjunto de datos basándose en los niveles de la variable cualitativa. Esto se logra con la función group_by().
  • Resumen Estadístico: Una vez que los datos están agrupados, se aplica la función summarise() para calcular los estadísticos deseados (media, mediana, desviación estándar, etc.) para cada uno de los grupos definidos.

Entendiendo los Tipos de Variables en R

Antes de sumergirnos en el código, es importante recordar la distinción entre variables cuantitativas y cualitativas en estadística, y cómo se representan en R.

Variables Cuantitativas

Una variable cuantitativa es aquella cuyos valores son números y representan una magnitud. Con ellas se pueden realizar operaciones aritméticas. En R, estas variables suelen almacenarse como tipos de datos numeric o integer.

Variables Cuantitativas Discretas

Toman un número contable de valores enteros. Ejemplos: número de hijos, cantidad de coches en una casa.

Variables Cuantitativas Continuas

Pueden tomar cualquier valor dentro de un rango numérico dado. Ejemplos: peso, altura, temperatura. En R, a menudo se representan con tipos numeric o double.

Variables Cualitativas

También conocidas como categóricas, estas variables describen características o cualidades que no pueden medirse numéricamente. En R, suelen representarse como factores (factor) o caracteres (character).

Variables Cualitativas Nominales

Las categorías no tienen un orden intrínseco. Ejemplos: estado civil, color de ojos.

Variables Cualitativas Ordinales

Las categorías tienen un orden o jerarquía natural. Ejemplos: nivel educativo (primaria, secundaria, universitaria), clasificación (bajo, medio, alto).

Comprender esta clasificación es vital porque el tipo de análisis estadístico y las visualizaciones apropiadas dependen del tipo de variable con el que se esté trabajando.


Preparando el Entorno en RStudio

Para llevar a cabo este análisis de manera eficiente en RStudio, el paquete dplyr es altamente recomendado. Si aún no lo tienes instalado, puedes hacerlo con el siguiente comando:

install.packages("dplyr")

Una vez instalado, debes cargarlo en tu sesión de R:

library(dplyr)

Además de dplyr, el paquete tidyverse incluye una colección de paquetes útiles para la ciencia de datos en R, incluyendo dplyr, ggplot2 para visualización, y otros. Cargar tidyverse es una alternativa común:

library(tidyverse)

Realizando el Análisis: Filtrado Implícito con Agrupación

El enfoque más eficiente y elegante para obtener estadísticos de una variable cuantitativa filtrada por una variable cualitativa en R, especialmente con dplyr, no implica un paso de "filtrado" explícito antes de calcular los estadísticos. En su lugar, la agrupación por la variable cualitativa realiza implícitamente el "filtrado" al realizar los cálculos dentro de cada grupo.

Uso Combinado de group_by() y summarise()

La combinación de estas dos funciones es la columna vertebral de este tipo de análisis. Primero, group_by() divide el dataframe en grupos basados en los valores únicos de la variable cualitativa. Luego, summarise() calcula uno o más estadísticos para la variable cuantitativa dentro de cada uno de esos grupos.

Consideremos un ejemplo práctico. Supongamos que tenemos un dataframe llamado datos con una variable cuantitativa ingreso y una variable cualitativa ciudad. Queremos calcular el ingreso promedio para cada ciudad.

# Supongamos que tenemos un dataframe llamado datos
# con columnas 'ingreso' (cuantitativa) y 'ciudad' (cualitativa)

# Cargar el paquete dplyr (si no está cargado)
# library(dplyr)

# Calcular el ingreso promedio por ciudad
resumen_por_ciudad <- datos %>%
  group_by(ciudad) %>%
  summarise(media_ingreso = mean(ingreso, na.rm = TRUE))

# Mostrar el resultado
print(resumen_por_ciudad)

En este código:

  • datos %>%: Utiliza el operador pipe (%>%) para encadenar operaciones, haciendo el código más legible.
  • group_by(ciudad): Agrupa el dataframe datos por los valores únicos de la columna ciudad.
  • summarise(media_ingreso = mean(ingreso, na.rm = TRUE)): Para cada grupo (cada ciudad), calcula la media de la columna ingreso y la almacena en una nueva columna llamada media_ingreso. na.rm = TRUE es importante para manejar posibles valores faltantes en los datos.

Puedes calcular múltiples estadísticos a la vez dentro de summarise():

# Calcular varios estadísticos por ciudad
resumen_amplio_por_ciudad <- datos %>%
  group_by(ciudad) %>%
  summarise(
    media_ingreso = mean(ingreso, na.rm = TRUE),
    mediana_ingreso = median(ingreso, na.rm = TRUE),
    desviacion_estandar_ingreso = sd(ingreso, na.rm = TRUE),
    n_observaciones = n() # Cuenta el número de observaciones en cada grupo
  )

# Mostrar el resultado
print(resumen_amplio_por_ciudad)

Filtrado Explícito Antes de Agrupar (Menos Común para Resúmenes por Grupo)

Aunque no es el enfoque típico para obtener resúmenes por grupo de todas las categorías, puedes usar la función filter() de dplyr para seleccionar subconjuntos específicos de tu dataframe antes de realizar cualquier cálculo. Esto sería útil si, por ejemplo, solo te interesan los estadísticos de algunas ciudades en particular.

# Filtrar datos solo para las ciudades "Ciudad A" y "Ciudad B"
datos_filtrados <- datos %>%
  filter(ciudad == "Ciudad A" | ciudad == "Ciudad B")

# Calcular estadísticos para las ciudades filtradas (si es necesario)
# Aunque para comparar, el enfoque group_by es más directo.
# Si solo quieres el resumen general de las ciudades filtradas:
resumen_ciudades_seleccionadas <- datos_filtrados %>%
  summarise(media_ingreso_filtrado = mean(ingreso, na.rm = TRUE))

print(resumen_ciudades_seleccionadas)

# O para ver por separado, aunque group_by en el dataframe original es mejor:
resumen_filtrado_por_ciudad <- datos_filtrados %>%
  group_by(ciudad) %>%
  summarise(media_ingreso = mean(ingreso, na.rm = TRUE))

print(resumen_filtrado_por_ciudad)

La función filter() permite seleccionar filas basándose en condiciones lógicas. Puedes usar operadores de comparación (==, !=, >, <, >=, <=) y operadores lógicos (& para Y, | para O, ! para NO).

Consideraciones sobre Datos Faltantes

Los datos faltantes (representados como NA en R) pueden afectar el cálculo de los estadísticos. Es crucial manejarlos adecuadamente. La mayoría de las funciones estadísticas en R tienen un argumento na.rm (remove NA) que, cuando se establece en TRUE, excluye los valores faltantes del cálculo.

# Ejemplo con datos faltantes
media_con_na <- mean(datos$ingreso) # Puede dar NA si hay NA
media_sin_na <- mean(datos$ingreso, na.rm = TRUE) # Calcula la media ignorando NA

Visualización de los Estadísticos Agrupados

Una vez que tienes los estadísticos resumidos por grupo, es muy útil visualizarlos para una mejor comprensión. El paquete ggplot2, también parte del tidyverse, es excelente para esto.

# Cargar ggplot2 (si no está cargado)
# library(ggplot2)

# Crear un gráfico de barras de la media de ingreso por ciudad
ggplot(resumen_por_ciudad, aes(x = ciudad, y = media_ingreso)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  labs(title = "Ingreso Promedio por Ciudad",
       x = "Ciudad",
       y = "Ingreso Promedio") +
  theme_minimal()

Este código generará un gráfico de barras donde cada barra representa una ciudad y su altura corresponde al ingreso promedio calculado previamente.

Gráfico de barras mostrando la distribución de una variable cualitativa.

La imagen anterior muestra un ejemplo de cómo se pueden visualizar datos cualitativos, similar a cómo representaríamos los ingresos promedio por cada categoría de ciudad.


Ejemplo Completo con Datos de Ejemplo

Para ilustrar el proceso completo, crearemos un pequeño dataframe de ejemplo en R:

# Crear un dataframe de ejemplo
datos_ejemplo <- data.frame(
  categoria = rep(c("A", "B", "C"), each = 10),
  valor_cuantitativo = rnorm(30, mean = rep(c(50, 60, 70), each = 10), sd = 10)
)

# Mostrar las primeras filas del dataframe
print(head(datos_ejemplo))

# Cargar dplyr
library(dplyr)

# Calcular estadísticos descriptivos por categoría
resumen_por_categoria <- datos_ejemplo %>%
  group_by(categoria) %>%
  summarise(
    media = mean(valor_cuantitativo, na.rm = TRUE),
    mediana = median(valor_cuantitativo, na.rm = TRUE),
    desviacion_estandar = sd(valor_cuantitativo, na.rm = TRUE),
    minimo = min(valor_cuantitativo, na.rm = TRUE),
    maximo = max(valor_cuantitativo, na.rm = TRUE)
  )

# Mostrar el resumen
print(resumen_por_categoria)

Este ejemplo crea un dataframe con una variable cualitativa categoria (con niveles A, B, C) y una variable cuantitativa valor_cuantitativo generada aleatoriamente con diferentes medias para cada categoría. Luego, calcula y muestra la media, mediana, desviación estándar, mínimo y máximo de valor_cuantitativo para cada categoria.

Ejemplo de Tabla de Resumen

El resultado de la operación anterior se presenta típicamente como una tabla. Aquí tienes un ejemplo de cómo podría verse la estructura de esa tabla:

categoria media mediana desviacion_estandar minimo maximo
A [Media calculada para A] [Mediana calculada para A] [DE calculada para A] [Mínimo calculado para A] [Máximo calculado para A]
B [Media calculada para B] [Mediana calculada para B] [DE calculada para B] [Mínimo calculado para B] [Máximo calculado para B]
C [Media calculada para C] [Mediana calculada para C] [DE calculada para C] [Mínimo calculado para C] [Máximo calculado para C]

Esta tabla resume de manera concisa las principales características de la variable cuantitativa dentro de cada nivel de la variable cualitativa.


Consideraciones Adicionales y Alternativas

Función aggregate()

R base también ofrece la función aggregate(), que puede realizar operaciones similares de resumen por grupo.

# Usando aggregate()
resumen_aggregate <- aggregate(valor_cuantitativo ~ categoria, data = datos_ejemplo, FUN = mean, na.rm = TRUE)
print(resumen_aggregate)

La sintaxis de aggregate() utiliza una fórmula (variable_cuantitativa ~ variable_cualitativa) para especificar la variable a resumir y la variable de agrupación. FUN especifica la función a aplicar (por ejemplo, mean, median, sd).

Manejo de Múltiples Variables Cualitativas

Puedes agrupar por múltiples variables cualitativas simplemente incluyéndolas en la función group_by():

# Agrupar por dos variables cualitativas
resumen_doble_agrupacion <- datos %>%
  group_by(ciudad, genero) %>%
  summarise(media_ingreso = mean(ingreso, na.rm = TRUE))

print(resumen_doble_agrupacion)

Esto calcularía el ingreso promedio para cada combinación única de ciudad y género.

Transformación de Variables Cuantitativas a Cualitativas

En algunos casos, puede ser útil categorizar una variable cuantitativa en una cualitativa (por ejemplo, dividir la edad en rangos de edad). Esto se puede hacer con funciones como cut() o mutate() y case_when() de dplyr.

# Ejemplo de categorización de una variable cuantitativa
datos <- datos %>%
  mutate(rango_ingreso = cut(ingreso,
                             breaks = c(0, 30000, 60000, Inf),
                             labels = c("Bajo", "Medio", "Alto")))

# Ahora 'rango_ingreso' es una variable cualitativa (factor)
print(head(datos))

Preguntas Frecuentes (FAQ)

¿Cuál es la diferencia entre summarise() y mutate()?

summarise() colapsa múltiples filas en una sola fila de resumen para cada grupo. mutate() añade nuevas columnas a un dataframe existente o modifica columnas existentes, manteniendo el mismo número de filas.

¿Cómo manejo los valores faltantes (NA) al calcular estadísticos?

La mayoría de las funciones estadísticas en R tienen el argumento na.rm = TRUE, que debe incluirse para ignorar los valores faltantes en el cálculo. Si no se incluye y hay valores faltantes, el resultado del estadístico puede ser NA.

¿Puedo agrupar por más de una variable cualitativa?

Sí, puedes agrupar por múltiples variables cualitativas pasándolas como argumentos a group_by(). Los estadísticos se calcularán para cada combinación única de los niveles de esas variables.

¿Qué estadísticos puedo calcular en summarise()?

Puedes utilizar una amplia gama de funciones estadísticas dentro de summarise(), como mean(), median(), sd(), min(), max(), sum(), n() (para contar el número de observaciones), n_distinct() (para contar valores únicos), y muchas otras.

¿Es necesario usar el paquete dplyr?

Aunque no es estrictamente necesario (R base tiene funciones como aggregate()), dplyr es altamente recomendado por su sintaxis clara, intuitiva y su eficiencia, especialmente con conjuntos de datos grandes. Es una herramienta estándar en el ecosistema de ciencia de datos en R.


El video "Variables cuantitativas. Ejemplo en R: Tablas de frecuencias e histograma" proporciona una introducción visual a la manipulación y visualización de variables cuantitativas en R, lo cual complementa el proceso de obtener estadísticos descriptivos antes de agrupar. Aunque se centra en un solo tipo de variable, los conceptos de organización y resumen de datos son relevantes para el análisis agrupado.


Referencias

cran.r-project.org
R-project
estadistica-dma.ulpgc.es
Estadística Descriptiva con R
rsanchezs.gitbooks.io
filter () | Programación en R
biocosas.github.io
Gestión de datos con R

Last updated April 20, 2025

AI-assisted research. Sources, methodology and corrections · Source-checked guides and tools · Explore published answers

Ask Ithy AI
Download Article
Delete Article