Muestreo Estratificado: Creación y Aplicación en Python

Clase 6 de 22Curso de Estadística Inferencial para Data Science e Inteligencia Artificial

Resumen

¿Cómo implementar muestreo estratificado en Python?

El muestreo estratificado es una herramienta poderosa en el análisis de datos que garantiza que todas las subpoblaciones relevantes sean representadas adecuadamente. Este enfoque se basa en dividir el conjunto de datos en grupos homogéneos, llamados estratos, y luego tomar muestras aleatorias de cada uno de estos. En este caso, vamos a aprender cómo realizarlo utilizando Python y algunas de sus populares librerías.

Configuración inicial y creación de variables

Primero, es fundamental crear una nueva variable de estratificación que nos permitirá dividir nuestros datos en los diferentes grupos homogéneos. En este ejemplo, partimos de una base de datos llamada EconData y usamos las columnas relacionadas con la ubicación y el tipo de establecimiento para crear esta variable.

EconData['estratificado'] = EconData['delegacion'] + ',' + EconData['tipo']

El método utilizado es la concatenación de las columnas delegacion y tipo, separadas por una coma. Notarás que un pequeño error, como el uso incorrecto de espacios o caracteres, puede causar problemas en la ejecución del código.

Recuento de apariciones y ordenación de datos

Para verificar cómo se distribuyen nuestras categorías estratificadas, se procede a contabilizar y ordenar estas proporciones.

proporciones_estratificadas = EconData['estratificado'].value_counts(normalize=True).sort_values(ascending=False)

Esto te permitirá observar los segmentos predominantes de tu data y establecer la proporción deseada para cada estrato.

Definición de la función de muestreo estratificado

La pieza clave para implementar este método es crear una función que ajuste la selección de muestras basándonos en las proporciones deseadas. Esta función se encargará de:

  1. Iterar sobre cada estrato.
  2. Calcular el número de muestras necesarias basadas en las proporciones definidas.
  3. Concatenar cada subconjunto en un DataFrame final.
import pandas as pd

def data_estratificada(df, strat, proporciones, random_state=None):
    # DataFrame resultante
    df_estratificado = pd.DataFrame(columns=df.columns)
    
    # Iterar sobre cada estrato
    for valor_strat in strat:
        # Filtrar por el valor del estrato
        df_filtrado = df[df['estratificado'] == valor_strat]
        
        # Definir el tamaño de la muestra
        num_samples = int(proporciones[valor_strat] * len(df))
        if len(df_filtrado) < num_samples:
            num_samples = len(df_filtrado)
        
        # Extraer la muestra
        df_sample = df_filtrado.sample(n=num_samples, random_state=random_state)
        
        # Concatenar el resultado
        df_estratificado = pd.concat([df_estratificado, df_sample], ignore_index=True)
    
    return df_estratificado

Ejecución de la función y visualización de los resultados

Finalmente, aplicamos la función creada para generar nuestra muestra estratificada. Es importante asegurarse de que las proporciones establecidas sumen el 100% para obtener resultados precisos.

# Definición de los valores y proporciones
valores_strat = [
    "Cuauhtemoc,hotel", 
    "Cuauhtemoc,museo", 
    "Venustiano Carranza,hotel", 
    "Cuauhtemoc,mercado", 
    "Venustiano Carranza,mercado"
]

proporciones = {
    "Cuauhtemoc,hotel": 0.5,
    "Cuauhtemoc,museo": 0.2,
    "Venustiano Carranza,hotel": 0.1,
    "Cuauhtemoc,mercado": 0.1,
    "Venustiano Carranza,mercado": 0.1
}

# Generación de la muestra
muestra_estratificada = data_estratificada(EconData, valores_strat, proporciones, random_state=42)

Este proceso es flexible y se puede adaptar a diferentes conjuntos de datos y contextos. Además, con cada aplicación, te familiarizarás más con el flujo de un análisis estratificado, lo que te permitirá realizar trabajos más precisos y representativos.

Consejos prácticos

  • Verifica tus datos: Antes de empezar con el muestreo, asegúrate de entender la heterogeneidad y la distribución del conjunto de datos.
  • Prueba diferentes escenarios: La estratificación puede variar dependiendo de los criterios seleccionados. Es crucial revisar y ajustar las proporciones para reflejar cambios en el patrón.
  • Documenta cada paso: Una buena práctica es realizar anotaciones sobre las decisiones tomadas en cada fase, lo que beneficiará revisiones futuras y colaboraciones.

Es importante reconocer que dominar el muestreo estratificado lleva tiempo y práctica, pero es muy valioso para garantizar una representación más precisa de diversas poblaciones. ¡Anímate a experimentar con tus conjuntos de datos y continúa fortaleciendo tus habilidades en análisis de datos!