Segmentación (CHAID / Inferencia Condicional)

La segmentación implementa un algoritmo de segmentación basado en Árboles de Inferencia Condicional, la alternativa moderna y estadísticamente más robusta al clásico algoritmo CHAID (Chi-square Automatic Interaction Detection) popularizado por SPSS.

Esta técnica divide iterativamente la muestra en subgrupos mutuamente excluyentes y exhaustivos que difieren significativamente respecto a una variable dependiente. A diferencia de otros algoritmos de árboles (como CART) que buscan maximizar la “pureza” de la información (índice de Gini), nuestro motor utiliza contrastes de hipótesis formales (pruebas \(\chi^2\) y ANOVA) para decidir si una división es estadísticamente significativa, lo que evita por completo el sobreajuste (overfitting) sin necesidad de “podar” el árbol a posteriori.

La función detecta automáticamente si la variable dependiente es categórica (generando un árbol de Clasificación) o continua (generando un árbol de Regresión).

📋 Requerimientos y preparación de datos (inputs)

Para que el algoritmo de segmentación funcione de manera óptima y proporcione resultados robustos, es fundamental configurar correctamente los siguientes parámetros de entrada:

  • Variable Dependiente (dep_var): El motor es dual; detecta automáticamente si la variable objetivo es categórica, generando un árbol de Clasificación, o si es continua, generando un árbol de Regresión.
  • Variables Predictoras (indep_vars): Son las variables que el algoritmo evaluará para realizar las divisiones de la muestra. Pueden ser de cualquier tipo, aunque el motor es especialmente eficiente gestionando variables categóricas con múltiples niveles.
  • Variables Ordinales (ordinal_vars): Si se declaran variables en este argumento (como escalas de satisfacción), se fuerza la adyacencia estricta. Esto significa que el algoritmo solo podrá realizar cortes consecutivos (ej. separar niveles “1 y 2” frente a “3, 4 y 5”), respetando el orden lógico del constructo.
  • Ponderación (weight_var): En caso de aplicar pesos, el motor redondea automáticamente los valores decimales al número entero más próximo para satisfacer las exigencias matemáticas de los contrastes de hipótesis de inferencia condicional.
  • Identificador de Caso (id_var): Es un requisito indispensable si se activa la opción export_json. Permite vincular de forma inequívoca a cada sujeto de la base de datos con su Nodo Terminal final.
  • Criterios de Parada (min_split y min_bucket):
    • min_split: Define el tamaño mínimo que debe tener un grupo para que el algoritmo intente dividirlo (equivalente al “N de nodo padre” en SPSS).
    • min_bucket: Establece el tamaño mínimo que debe tener cualquier grupo resultante de una división (equivalente al “N de nodo hijo” en SPSS).

📊 Estructura de resultados y salida

Interpretación de los resultados

El bloque de resultados generado por la función se divide en una cabecera de metadatos, una tabla resumen de los segmentos descubiertos y la representación gráfica del árbol.

Al inicio del informe, se muestra un resumen técnico con la configuración del algoritmo:

  • Variable Dependiente y Tipo: Indica la variable objetivo y cómo la ha procesado el algoritmo (Nominal para clasificación o Continua para regresión).
  • Ponderación (Opcional): Si se aplicó una variable de ponderación (weight_var), se indicará aquí. Para satisfacer las exigencias matemáticas del motor de inferencia, los pesos decimales se redondean automáticamente al número entero más próximo.

Resumen de nodos terminales

Esta tabla condensa el resultado de la segmentación listando únicamente las “hojas” del árbol, es decir, los grupos finales en los que se ha dividido la muestra. La información mostrada depende de la naturaleza de la variable dependiente:

Si la Variable Dependiente es Categórica (Nominal/Ordinal):

  • Nodo: El identificador numérico único del segmento final.
  • N (Casos): El volumen muestral del segmento (reflejando la N ponderada si procede).
  • Categoría Mayoritaria: La respuesta más frecuente (la moda) dentro de ese segmento. Representa la “predicción” o el perfil dominante del grupo.

Si la Variable Dependiente es Continua (Numérica):

  • Nodo: El identificador numérico del segmento.
  • N (Casos): El volumen muestral del segmento.
  • Media Estimada: El valor promedio de la variable dependiente para los sujetos que han caído en ese segmento.
  • Desv. Típica: La dispersión de los datos dentro del nodo, indicando la homogeneidad del segmento.

Gráfico de segmentación

El gráfico es la pieza central del análisis, proporcionando una visualización jerárquica de las reglas descubiertas.

  • Nodos Internos (Óvalos): Representan las variables predictoras que el algoritmo ha seleccionado para dividir la muestra. El número dentro del óvalo es simplemente el orden de creación del nodo. Se incluye el p-valor, que demuestra la significación estadística de esa división (siempre menor al umbral alpha especificado, típicamente 0.05).
  • Ramas (Líneas): Muestran el criterio de corte. Por ejemplo, “Edad \(\le\) 35” por un lado y “Edad > 35” por otro.
  • Nodos terminales (Gráficos inferiores):
    • En árboles de Clasificación: Se muestra un diagrama de barras apiladas o agrupadas que representa la distribución de probabilidades de las distintas categorías de la variable dependiente en ese segmento concreto.
    • En árboles de regresión: Se muestra un diagrama de caja (boxplot) que ilustra la mediana, los cuartiles y la dispersión de la variable continua en ese segmento.

Parámetros avanzados

La función permite ajustar el comportamiento del algoritmo para que se adapte exactamente a los requerimientos de la investigación:

Variables ordinales y adyacencia estricta

Por defecto, al evaluar variables categóricas, el algoritmo puede agrupar niveles no consecutivos si encuentra que se comportan igual (ej. agrupar a los que votaron “1” y “5” frente a los que votaron “2”, “3” y “4”). Si declaras una variable en el argumento ordinal_vars (ej. una escala Likert de satisfacción), se fuerza matemáticamente la adyacencia. El algoritmo solo podrá hacer cortes consecutivos (ej. separar “1, 2” frente a “3, 4, 5”), respetando la naturaleza ordinal del constructo.

Ramificaciones

Los árboles modernos suelen forzar divisiones dicotómicas (dos ramas) por estabilidad computacional. Sin embargo, si se activa multiway = TRUE, el algoritmo emulará al CHAID tradicional, permitiendo que un nodo se divida en 3, 4 o más ramas simultáneamente si la variable predictora tiene múltiples categorías y las diferencias entre todas ellas son significativas.

Criterios de parada

  • min_split: El número mínimo de casos (ponderados) que debe tener un nodo para que el algoritmo intente buscar una división. Si el nodo es más pequeño, se declara terminal inmediatamente. (Equivale al “N de nodo padre” en SPSS).
  • min_bucket: El número mínimo de casos (ponderados) que puede tener un nodo terminal o “hoja”. El algoritmo no realizará ninguna división que genere un grupo con un tamaño inferior a este umbral. (Equivale al “N de nodo hijo” en SPSS).
  • max_depth: La profundidad máxima del árbol. Un valor de 3 significa que, como máximo, habrá 3 niveles de ramificación desde la raíz hasta las hojas.
  • alpha: El nivel de significación estadística (por defecto 0.05). Si la prueba de independencia entre la predictora y la dependiente arroja un p-valor superior a este umbral, la rama deja de crecer.

💡 Notas técnicas

Si el parámetro export_json está activado y se proporciona una variable identificadora (id_var), la función generará un archivo .json en el directorio de trabajo.

Este archivo contiene un diccionario que asocia el identificador exacto de cada sujeto encuestado con el nodo terminal al que ha sido asignado por el modelo, permitiendo incorporar esta tipología al dataframe principal o a sistemas externos de bases de datos para posteriores análisis cruzados.