Autor/a

Diego Villalba

Fecha de publicación

16 de octubre de 2026

1 El problema: ¿qué significa que unos datos sean heterogéneos?

Decir que unos datos son heterogéneos significa que no están concentrados en una sola posibilidad. Sin embargo, la pregunta concreta depende del tipo de variable:

Tipo de datos Pregunta de heterogeneidad Poca heterogeneidad Mucha heterogeneidad
Categóricos ¿Cómo se reparte la frecuencia entre las clases? Casi todas las observaciones pertenecen a una sola clase. Las observaciones se reparten de forma equilibrada entre varias clases.
Numéricos agrupados ¿Cuánto cambia la distribución de una respuesta entre grupos? Los grupos tienen centros y formas semejantes. La pertenencia al grupo ayuda a anticipar el valor numérico.

Esta distinción evita un error frecuente: una variable categórica no tiene distancias numéricas naturales entre sus etiquetas, mientras que una variable numérica sí permite medir desviaciones respecto a una media. Por eso se necesitan construcciones diferentes.

En la primera mitad del capítulo seguiremos un único ejemplo: una bolsa contiene seis canicas de tres clases, cada clase identificada por un color.

Clase Color Número de canicas Proporción
\(A\) azul \(3\) \(p_A=3/6=1/2\)
\(B\) naranja \(1\) \(p_B=1/6\)
\(C\) verde \(2\) \(p_C=2/6=1/3\)
Total 6 1

La variable aleatoria1 \(X\) registra la clase de una canica extraída. Sus valores posibles son \(\{A,B,C\}\) y su distribución es

1 Una variable aleatoria es una regla que asigna un valor a cada resultado de un experimento. Aquí no significa que las etiquetas sean números: \(X\) asigna la etiqueta \(A\), \(B\) o \(C\) a la canica observada.

\[ p=(p_A,p_B,p_C)=\left(\frac12,\frac16,\frac13\right). \]

Las clases son mutuamente excluyentes y exhaustivas:2 cada extracción produce exactamente una de las tres etiquetas. La heterogeneidad categórica dependerá de estas proporciones, no del nombre ni del color asignado a cada clase.

2 Mutuamente excluyentes significa que una canica no puede pertenecer simultáneamente a dos clases. Exhaustivas significa que las tres clases cubren todos los resultados posibles.

NotaDos casos que servirán como brújula
  • Si las seis canicas fueran de clase \(A\), conocer la clase de una extracción sería trivial: la heterogeneidad debería valer cero.
  • Si hubiera dos canicas de cada clase, ninguna clase dominaría: con tres clases, la heterogeneidad debería ser máxima.

Toda medida que usemos deberá respetar estos dos extremos.

2 Heterogeneidad categórica I: Gini–Simpson

2.1 De una extracción a dos extracciones

Al extraer una canica de la bolsa completa, la probabilidad3 de obtener cada clase es su fracción dentro del total:

3 En este ejemplo equiprobable a nivel de canica, la probabilidad de una clase es el número de canicas de esa clase dividido entre el total. En una interpretación frecuentista, es también la proporción a la que tendería la frecuencia de esa clase al repetir muchas veces el experimento bajo las mismas condiciones.

\[ P(X=A)=\frac36,\qquad P(X=B)=\frac16,\qquad P(X=C)=\frac26. \]

Una sola extracción informa cuál clase apareció, pero todavía no produce una noción directa de diversidad. Para obtenerla, planteemos otro experimento:

Se extrae una canica, se registra su clase, se devuelve a la bolsa, se mezcla y se extrae una segunda canica. ¿Cuál es la probabilidad de que las dos clases sean diferentes?

Devolver la primera canica significa muestrear con reemplazo.4 Gracias a ello, la composición de la bolsa es la misma antes de ambas extracciones. Supondremos además que las extracciones son independientes:5 saber qué ocurrió en la primera no cambia las probabilidades de la segunda.

4 Muestrear con reemplazo consiste en devolver cada unidad antes de la siguiente selección. Así, las probabilidades permanecen constantes. Sin reemplazo, después de extraer una canica quedarían cinco y la segunda probabilidad dependería de la primera extracción.

5 Dos variables aleatorias \(X_1\) y \(X_2\) son independientes si conocer el valor de una no modifica la distribución de la otra. Formalmente, \(P(X_1=j,X_2=k)=P(X_1=j)P(X_2=k)\) para todo par \((j,k)\).

La independencia permite multiplicar probabilidades. Por ejemplo,

\[ P(X_1=A, X_2=A)=P(X_1=A)P(X_2=A) =\frac36\frac36=\frac{9}{36}. \]

Del mismo modo,

\[ P(B,B)=\left(\frac16\right)^2=\frac1{36}, \qquad P(C,C)=\left(\frac26\right)^2=\frac4{36}. \]

La tabla contiene los \(6\times 6=36\) pares ordenados de canicas que pueden obtenerse. Las celdas diagonales corresponden a coincidencias de clase.

Primera \(\backslash\) segunda \(A\) \(B\) \(C\) Total de la fila
\(A\) \(9/36\) \(3/36\) \(6/36\) \(18/36\)
\(B\) \(3/36\) \(1/36\) \(2/36\) \(6/36\)
\(C\) \(6/36\) \(2/36\) \(4/36\) \(12/36\)
Total de la columna \(18/36\) \(6/36\) \(12/36\) \(36/36\)

Por tanto, la probabilidad de obtener la misma clase es

\[ P(X_1=X_2)=\frac{9+1+4}{36}=\frac{14}{36}=\frac7{18}. \]

Los eventos “misma clase” y “clases diferentes” son complementarios,6 de modo que

6 Si \(E\) es un evento, su complemento \(E^c\) reúne todos los resultados en los que \(E\) no ocurre. Como son mutuamente excluyentes y cubren todo el espacio, \(P(E^c)=1-P(E)\).

\[ P(X_1\neq X_2)=1-P(X_1=X_2)=1-\frac7{18}=\frac{11}{18}\approx 0.6111. \]

Ya tenemos una medida interpretable: en aproximadamente el \(61.1\%\) de los pares extraídos de manera independiente y con reemplazo, las clases serán diferentes.

2.2 Definición formal

Sea \(p=(p_1,\ldots,p_K)\) una distribución sobre \(K\) categorías. El índice de Gini–Simpson (Simpson 1949) es

\[ D(p)=1-\sum_{k=1}^{K}p_k^2. \tag{1} \]

La fórmula se obtiene directamente del experimento anterior:

\[ \underbrace{\sum_{k=1}^{K}p_k^2}_{P(X_1=X_2)} +\underbrace{D(p)}_{P(X_1\neq X_2)}=1. \]

También puede escribirse como

\[ D(p)=\sum_{j\neq k}p_jp_k, \]

que suma todos los pares ordenados de clases distintas. Esta es la razón probabilística —no solo algebraica— del cuadrado en \(p_k^2\).

2.3 El cuadrado de probabilidades

Imagine un cuadrado de área uno. El eje horizontal representa la segunda extracción y el vertical la primera. Al dividir ambos ejes en segmentos de longitudes \(p_A\), \(p_B\) y \(p_C\), aparecen nueve rectángulos:

  • los tres bloques diagonales tienen áreas \(p_A^2\), \(p_B^2\) y \(p_C^2\) y representan coincidencias;
  • los seis bloques restantes tienen áreas \(p_jp_k\) con \(j\neq k\) y representan diferencias.

Explorador del cuadrado de Gini–Simpson

Cambie la cantidad de canicas. Los conteos se convierten en proporciones y las 9 áreas se redibujan.

Coincidencia0.3889
Gini–Simpson0.6111
misma claseclases diferentes

2.4 Cotas e interpretación

Si una sola clase concentra toda la probabilidad, entonces \(\sum p_k^2=1\) y \(D=0\). Por la desigualdad de Cauchy–Schwarz, \(\sum_k p_k^2\ge 1/K\), con igualdad cuando todas las probabilidades son iguales. Por tanto, si las \(K\) clases son equiprobables, \(p_k=1/K\), se alcanza

\[ D_{\max}=1-K\left(\frac1K\right)^2=1-\frac1K. \tag{2} \]

Así, con tres clases \(D\in[0,2/3]\). El valor \(0.6111\) de nuestras canicas está cerca del máximo \(0.6667\), pero no debe interpretarse como “61.11% del máximo”. Para esa lectura se normaliza:

\[ D_{\mathrm{norm}}=\frac{D}{1-1/K}. \]

En el ejemplo, \(D_{\mathrm{norm}}=(11/18)/(2/3)=11/12\approx0.9167\).

AdvertenciaNo confundir dos índices llamados Gini

La diversidad de Gini–Simpson mide la probabilidad de desacuerdo entre categorías. El coeficiente de Gini asociado con la curva de Lorenz mide desigualdad en una variable numérica, como ingreso o riqueza. Comparten parte del nombre, pero responden preguntas diferentes.

3 Heterogeneidad categórica II: de la sorpresa a la entropía

Gini–Simpson construye diversidad comparando dos extracciones. Shannon toma otro camino: mide cuánta información aporta observar una sola extracción.

3.1 La sorpresa de un resultado

Antes de extraer una canica, compare dos resultados:

  • obtener \(A\) no sería muy sorprendente, porque ocurre con probabilidad \(1/2\);
  • obtener \(B\) sería más sorprendente, porque ocurre con probabilidad \(1/6\).

La información propia o sorpresa de un evento con probabilidad \(p\) se define como

\[ I_b(p)=-\log_b(p), \qquad b>1. \tag{3} \]

Esta elección cumple propiedades deseables: un evento seguro tiene sorpresa cero, los eventos menos probables producen mayor sorpresa y la sorpresa de dos eventos independientes se suma.7

7 Para eventos independientes con probabilidades \(p\) y \(q\), \(I_b(pq)=-\log_b(pq)=-\log_b p-\log_b q=I_b(p)+I_b(q)\).

En bits, es decir, usando base \(2\),

\[ I_2(A)=1,\qquad I_2(B)=\log_2(6)\approx2.585,\qquad I_2(C)=\log_2(3)\approx1.585. \]

3.2 De la sorpresa individual a la sorpresa promedio

No basta con promediar esos tres números dando el mismo peso a cada clase: \(A\) aparece más veces que \(B\). La sorpresa media debe ponderar cada resultado por la probabilidad con que ocurre. Ese valor esperado8 es la entropía de Shannon (Shannon 1948):

8 El valor esperado de una variable discreta es su promedio teórico ponderado: \(\mathbb{E}[Z]=\sum_z zP(Z=z)\). No asigna el mismo peso a resultados frecuentes y raros.

\[ H_b(p)=\mathbb{E}[I_b(X)]=-\sum_{k=1}^{K}p_k\log_b(p_k). \tag{4} \]

Para las seis canicas y base \(2\):

Clase \(p_k\) Sorpresa \(-\log_2p_k\) Aporte promedio \(-p_k\log_2p_k\)
\(A\) \(0.5000\) \(1.0000\) \(0.5000\)
\(B\) \(0.1667\) \(2.5850\) \(0.4308\)
\(C\) \(0.3333\) \(1.5850\) \(0.5283\)
Total \(1\) \(H_2=1.4591\) bits

Observe la diferencia entre sorpresa y aporte a la entropía. \(B\) es el resultado más sorprendente, pero aparece poco; \(C\) aporta más al promedio porque combina sorpresa considerable con mayor frecuencia.

Cuando \(p_k=0\), la expresión contiene formalmente \(0\log 0\). Se adopta la extensión continua

\[ 0\log 0:=\lim_{p\to0^+}p\log p=0, \]

porque una clase imposible nunca llega a aportar sorpresa al promedio.

3.3 ¿Dónde está la entropía máxima?

Con \(K\) fijo, la entropía satisface

\[ 0\le H_b(p)\le \log_b K. \tag{5} \]

El mínimo ocurre cuando una sola clase tiene probabilidad uno. El máximo ocurre en la distribución uniforme \(p_k=1/K\). Puede verificarse con multiplicadores de Lagrange: al maximizar \(-\sum p_k\ln p_k\) sujeto a \(\sum p_k=1\), las condiciones de primer orden exigen que todos los \(p_k\) sean iguales; la restricción obliga a que valgan \(1/K\). Como la matriz hessiana tiene diagonal \(-1/p_k<0\), la entropía es estrictamente cóncava en el interior del simplex y ese punto crítico es el máximo global único.

Para comparar variables con distinto número de clases conviene usar

\[ H_{\mathrm{norm}}=\frac{H_b(p)}{\log_bK}\in[0,1]. \tag{6} \]

En nuestro ejemplo,

\[ H_{\mathrm{norm}}=\frac{1.4591}{\log_2 3}=0.9206. \]

ImportanteDos máximos que no deben confundirse

La contribución de una sola clase, \(f(p)=-p\ln p\), alcanza su máximo en \(p=1/e\approx0.3679\). En cambio, la entropía de toda la distribución, sujeta a que las probabilidades sumen uno, alcanza su máximo en \(p_k=1/K\). Para tres clases, el máximo global está en \((1/3,1/3,1/3)\), no en tres probabilidades iguales a \(1/e\), pues estas últimas ni siquiera sumarían uno.

En efecto,

\[ f'(p)=-\ln p-1=0 \iff p=1/e, \qquad f''(p)=-1/p<0. \]

3.4 Cambiar la base cambia la escala, no la conclusión

Por la fórmula de cambio de base,

\[ H_b(p)=\frac{H_e(p)}{\ln b}. \]

  • base \(2\): bits;
  • base \(e\): nats;
  • base \(10\): hartleys.

La base multiplica todas las entropías por una constante positiva. Por tanto, no cambia qué distribución es más heterogénea. Tampoco cambia \(H_{\mathrm{norm}}\), porque numerador y denominador se escalan por el mismo factor.

Explorador de sorpresa y entropía

El triángulo contiene todas las distribuciones posibles de tres clases. El centro es la distribución uniforme y, por ello, el punto de entropía máxima.

Entropía observada
Máximo con K=3
Clase p Sorpresa p × sorpresa

4 Comparar Gini–Simpson y Shannon

Los dos índices miden heterogeneidad, pero observan la distribución desde experimentos distintos:

Índice Experimento mental Fórmula Mayor sensibilidad relativa
Gini–Simpson ¿Dos extracciones tendrán clases distintas? \(1-\sum p_k^2\) Clases dominantes; las probabilidades se elevan al cuadrado.
Shannon ¿Cuánta sorpresa produce, en promedio, una extracción? \(-\sum p_k\log p_k\) Clases raras; una probabilidad pequeña conserva aporte mediante \(-p\log p\).

No conviene comparar directamente \(D\) y \(H\), porque tienen escalas y máximos diferentes. Con \(K\) fijo, compare \(D_{\mathrm{norm}}\) con \(H_{\mathrm{norm}}\):

Distribución \((p_A,p_B,p_C)\) \(D\) \(D_{\mathrm{norm}}\) \(H\) (nats) \(H_{\mathrm{norm}}\)
\((1,0,0)\) \(0.0000\) \(0.0000\) \(0.0000\) \(0.0000\)
\((0.90,0.05,0.05)\) \(0.1850\) \(0.2775\) \(0.3944\) \(0.3590\)
\((0.60,0.30,0.10)\) \(0.5400\) \(0.8100\) \(0.8979\) \(0.8173\)
\((0.50,0.1667,0.3333)\) \(0.6111\) \(0.9167\) \(1.0114\) \(0.9206\)
\((1/3,1/3,1/3)\) \(0.6667\) \(1.0000\) \(1.0986\) \(1.0000\)

Ambos ordenan estos ejemplos de la misma manera. Sin embargo, Shannon asigna relativamente más diversidad al escenario \((0.90,0.05,0.05)\) porque reconoce la información aportada por las dos clases raras.

TipRegla de elección
  • Use Gini–Simpson cuando la interpretación por pares o la probabilidad de desacuerdo sea natural.
  • Use Shannon cuando la incertidumbre, codificación o sorpresa sea central.
  • Si necesita comunicar “cuántas categorías igualmente frecuentes equivalen a esta distribución”, transforme ambos a números efectivos de Hill.

5 Una escala común: números de Hill

Los índices anteriores no están expresados en “número de categorías”. La familia de Hill (Hill 1973; Jost 2006) los convierte a esa escala:

\[ {}^qD=\left(\sum_{k=1}^{K}p_k^q\right)^{1/(1-q)}, \qquad q\ge0,\ q\neq1. \tag{7} \]

El parámetro \(q\) controla cuánto pesan las clases raras:

  1. \(q=0\), riqueza observada: \({}^0D=K\); solo cuenta las clases presentes.
  2. \(q\to1\), diversidad de Shannon: \({}^1D=e^{H_e}\).
  3. \(q=2\), diversidad de Simpson: \({}^2D=1/\sum p_k^2=1/(1-D)\).

Para las canicas,

\[ {}^0D=3,\qquad {}^1D=e^{1.0114}=2.750, \qquad {}^2D=\frac1{7/18}=\frac{18}{7}=2.571. \]

La interpretación de \({}^1D=2.750\) es concreta: la distribución \((3,1,2)\) tiene la misma entropía que una distribución ideal con \(2.750\) categorías equiprobables. En general,

\[ {}^0D\ge{}^1D\ge{}^2D, \tag{8} \]

y los tres valores coinciden con \(K\) únicamente bajo uniformidad perfecta.

Si prefiere una explicación visual antes de seguir, (Biostatsquid 2026) repasa Shannon, Gini-Simpson y los números de Hill vistos aquí (además de Chao1, un estimador de riqueza de especies que no se cubre en este capítulo).

6 Heterogeneidad de una variable numérica entre grupos

Ahora cambia la pregunta. Sea \(Y\) una respuesta numérica y sea \(G\) una variable categórica que identifica grupos. Ya no preguntamos si dos etiquetas son distintas, sino:

¿Qué parte de la variación numérica de \(Y\) se asocia con diferencias entre los grupos?

Usaremos seis observaciones:

\[ A=(4,5),\qquad B=(8,9),\qquad C=(5,5). \]

La media global y las medias de grupo son

\[ \bar y=6, \qquad \bar y_A=4.5, \qquad \bar y_B=8.5, \qquad \bar y_C=5. \]

6.1 La identidad que separa dos fuentes de variación

Para una observación \(y_{gi}\) del grupo \(g\),

\[ y_{gi}-\bar y =\underbrace{(y_{gi}-\bar y_g)}_{\text{desviación dentro del grupo}} +\underbrace{(\bar y_g-\bar y)}_{\text{desviación entre grupos}}. \]

Al elevar al cuadrado y sumar todas las observaciones, el término cruzado desaparece porque \(\sum_i(y_{gi}-\bar y_g)=0\) dentro de cada grupo. Se obtiene la descomposición exacta de ANOVA:

\[ \underbrace{\sum_g\sum_i(y_{gi}-\bar y)^2}_{SS_T} =\underbrace{\sum_g n_g(\bar y_g-\bar y)^2}_{SS_B} +\underbrace{\sum_g\sum_i(y_{gi}-\bar y_g)^2}_{SS_W}. \tag{9} \]

  • \(SS_T\): variación total respecto a la media global;
  • \(SS_B\): variación entre medias grupales (between);
  • \(SS_W\): variación dentro de los grupos (within).

6.2 Cálculo completo

La variación total es

\[ SS_T=(4-6)^2+(5-6)^2+(8-6)^2+(9-6)^2+(5-6)^2+(5-6)^2=20. \]

La parte entre grupos es

\[ \begin{aligned} SS_B &=2(4.5-6)^2+2(8.5-6)^2+2(5-6)^2\\ &=4.5+12.5+2=19. \end{aligned} \]

La parte interna es

\[ \begin{aligned} SS_W &=[(4-4.5)^2+(5-4.5)^2]\\ &\quad+[(8-8.5)^2+(9-8.5)^2]+[(5-5)^2+(5-5)^2]\\ &=0.5+0.5+0=1. \end{aligned} \]

La identidad se comprueba: \(20=19+1\).

6.3 Eta cuadrada y omega cuadrada

La proporción descriptiva de variación explicada por las diferencias de medias es

\[ \eta^2=\frac{SS_B}{SS_T}\in[0,1]. \tag{10} \]

En el ejemplo, \(\eta^2=19/20=0.95\): conocer el grupo explica el \(95\%\) de la variación cuadrática observada. Esto no significa que el grupo “cause” el resultado; es una descripción de asociación en estos datos.

En muestras pequeñas, \(\eta^2\) tiende a sobreestimar el efecto poblacional. Una corrección habitual es

\[ \omega^2= \frac{SS_B-(G-1)MS_W}{SS_T+MS_W}, \qquad MS_W=\frac{SS_W}{N-G}. \tag{11} \]

Aquí, \(MS_W=1/(6-3)=1/3\) y

\[ \omega^2= \frac{19-2(1/3)}{20+1/3} =0.9016. \]

La corrección reduce el optimismo de \(0.9500\) a \(0.9016\). En muestras reales, \(\omega^2\) puede resultar ligeramente negativa; eso se interpreta como ausencia de evidencia de variación explicada, aunque algunas implementaciones la truncan a cero para presentación.

Explorador de heterogeneidad numérica entre grupos

Cada grupo contiene dos valores: centro ± separación. Acerque o aleje los centros y cambie la dispersión interna para observar cómo se reparte SST.

Variación entre grupos
Variación dentro de grupos
Variación total
Eta cuadrada
entre gruposdentro de grupos

6.4 Lo que \(\eta^2\) sí ve y lo que no ve

\(\eta^2\) resume diferencias de medias. No detecta por sí sola todos los tipos de heterogeneidad distributiva. Dos grupos pueden tener la misma media y, aun así, diferir en:

  • dispersión;
  • asimetría;
  • número o severidad de valores atípicos;
  • multimodalidad.

Por ello, la descomposición ANOVA debe acompañarse con tamaños muestrales y gráficos de las distribuciones: diagramas de caja, violines, densidades o funciones de distribución empírica. Una cifra alta tampoco demuestra causalidad; puede reflejar confusión, selección o diseño muestral.

7 Heterogeneidad cruzada entre variables categóricas

Cuando se cruzan dos variables categóricas, la pregunta pasa a ser si la composición de una cambia entre niveles de la otra. Para cada grupo \(g\), compare las probabilidades condicionales9

9 La probabilidad condicional \(P(X=k\mid G=g)\) restringe el universo a los casos del grupo \(g\) y calcula dentro de él la proporción que pertenece a la clase \(k\).

\[ p_{k\mid g}=P(X=k\mid G=g). \]

Una tabla de conteos responde cuánto soporte tiene cada combinación; una tabla de porcentajes por fila permite comparar composiciones. El mapa de calor debe mostrar ambas cosas o, como mínimo, acompañar cada porcentaje con su \(n_{kg}\).

AdvertenciaCeldas pequeñas

Las combinaciones con pocos casos generan porcentajes inestables. No existe un umbral universal que vuelva confiable una celda; la regla práctica \(n<10\) solo funciona como alerta inicial. Revise conteos, incertidumbre y mecanismo de muestreo antes de interpretar una diferencia como estructura real.

Si se necesita un resumen formal de asociación, una prueba \(\chi^2\) contrasta independencia y la \(V\) de Cramér cuantifica intensidad. Estas herramientas responden una pregunta relacional distinta de la diversidad marginal: una variable puede ser muy diversa y, al mismo tiempo, ser independiente de la otra.

8 Puentes con algoritmos de minería de datos

Algoritmo Medida de heterogeneidad Uso
Árboles CART Impureza de Gini \(1-\sum p_k^2\) Elige el corte que produce nodos hijos más puros mediante la reducción ponderada de impureza.
ID3 / C4.5 Entropía de Shannon ID3 maximiza ganancia de información; C4.5 la ajusta con gain ratio para evitar cortes con demasiadas ramas.
\(k\)-means \(SS_W\) o inercia Busca centroides que minimicen la variación dentro de los grupos. Con datos fijos, minimizar \(SS_W\) equivale a maximizar \(SS_B\).
Calinski–Harabasz Razón tipo ANOVA Compara separación entre clusters con compactación interna: \(CH=(SS_B/(k-1))/(SS_W/(n-k))\).

En un árbol, “impureza de Gini” es precisamente Gini–Simpson aplicado a la distribución de clases dentro de un nodo. En clustering, los grupos no vienen dados: el algoritmo intenta construirlos para reducir heterogeneidad interna.

9 Implementación reproducible

Las siguientes funciones reproducen los cálculos del capítulo y hacen explícitas las convenciones para probabilidades nulas.

Mostrar código
import numpy as np
import pandas as pd

def indices_categoricos(conteos, base=np.e):
    conteos = np.asarray(conteos, dtype=float)
    if np.any(conteos < 0) or conteos.sum() == 0:
        raise ValueError("Los conteos deben ser no negativos y sumar más de cero.")

    p = conteos / conteos.sum()
    p_positivas = p[p > 0]
    k = len(p_positivas)
    h = -(p_positivas * (np.log(p_positivas) / np.log(base))).sum()
    gini_simpson = 1 - np.square(p).sum()

    return pd.Series({
        "K observado": k,
        "Gini–Simpson": gini_simpson,
        "Gini–Simpson normalizado": gini_simpson / (1 - 1 / k) if k > 1 else 0,
        "Entropía": h,
        "Entropía normalizada": h / (np.log(k) / np.log(base)) if k > 1 else 0,
        "Hill q=1": base ** h,
        "Hill q=2": 1 / np.square(p).sum(),
    })

indices_categoricos([3, 1, 2], base=np.e).round(4)
K observado                 3.0000
Gini–Simpson                0.6111
Gini–Simpson normalizado    0.9167
Entropía                    1.0114
Entropía normalizada        0.9206
Hill q=1                    2.7495
Hill q=2                    2.5714
dtype: float64

9.1 Ver la composición antes de resumirla

El ejemplo original y los dos casos brújula pueden compararse sin perder las proporciones que originan los índices.

Mostrar código
import plotly.express as px
from IPython.display import HTML, display

def mostrar_plotly(figura):
    """Incrusta Plotly sin cargar una segunda versión de MathJax."""
    display(HTML(figura.to_html(
        full_html=False,
        include_plotlyjs="cdn",
        include_mathjax=False,
    )))

composiciones = {
    "Ejemplo 3–1–2": [3, 1, 2],
    "Uniforme 2–2–2": [2, 2, 2],
    "Concentrada 6–0–0": [6, 0, 0],
}

filas_composicion = []
for escenario, conteos in composiciones.items():
    resumen = indices_categoricos(conteos)
    total = sum(conteos)
    for clase, conteo in zip(["A", "B", "C"], conteos):
        filas_composicion.append({
            "Escenario": escenario,
            "Clase": clase,
            "Proporción": conteo / total,
            "Gini–Simpson": resumen["Gini–Simpson"],
            "Entropía": resumen["Entropía"],
        })

fig = px.bar(
    pd.DataFrame(filas_composicion),
    x="Escenario",
    y="Proporción",
    color="Clase",
    barmode="stack",
    hover_data={"Gini–Simpson": ":.4f", "Entropía": ":.4f"},
    title="La heterogeneidad aumenta cuando la masa se reparte entre clases",
)
fig.update_layout(yaxis_tickformat=".0%", yaxis_title="Proporción de canicas")
mostrar_plotly(fig)
Mostrar código
def descomposicion_anova(valores, grupos):
    datos = pd.DataFrame({"y": valores, "grupo": grupos})
    media_global = datos["y"].mean()
    medias_grupo = datos.groupby("grupo")["y"].transform("mean")
    ss_t = np.square(datos["y"] - media_global).sum()
    ss_w = np.square(datos["y"] - medias_grupo).sum()
    ss_b = ss_t - ss_w
    n, g = len(datos), datos["grupo"].nunique()
    ms_w = ss_w / (n - g)
    eta2 = ss_b / ss_t if ss_t > 0 else np.nan
    omega2 = (ss_b - (g - 1) * ms_w) / (ss_t + ms_w) if ss_t + ms_w > 0 else np.nan
    return pd.Series({"SS_T": ss_t, "SS_B": ss_b, "SS_W": ss_w,
                      "eta²": eta2, "omega²": omega2})

descomposicion_anova(
    valores=[4, 5, 8, 9, 5, 5],
    grupos=["A", "A", "B", "B", "C", "C"],
).round(4)
SS_T      20.0000
SS_B      19.0000
SS_W       1.0000
eta²       0.9500
omega²     0.9016
dtype: float64

10 Guía de decisión

Pregunta Herramienta principal Comprobación necesaria
¿Qué tan repartida está una variable categórica? Barras, Gini–Simpson, Shannon Reportar \(K\), conteos y versión normalizada si se comparan cardinalidades.
¿Cuántas clases efectivas hay? Números de Hill Indicar el orden \(q\) y su sensibilidad a clases raras.
¿Cambian las medias numéricas entre grupos? \(SS_B\), \(SS_W\), \(\eta^2\), \(\omega^2\) Inspeccionar tamaños, dispersión y forma de cada grupo.
¿Cambia una composición categórica entre grupos? Proporciones condicionales, mapa de calor, \(\chi^2\), \(V\) de Cramér Mostrar soporte de cada celda.
¿Hay heterogeneidad causal? Ningún índice descriptivo basta Se requiere diseño causal y control de variables de confusión.

11 Puente al caso BigMart

El capítulo práctico Medidas de heterogeneidad en Big Mart Sales traslada estas ideas a datos de retail:

  • diversidad de categorías de producto mediante Shannon, Gini–Simpson y números de Hill;
  • heterogeneidad de ventas entre formatos de establecimiento mediante \(\eta^2\) y \(\omega^2\);
  • composiciones cruzadas entre ubicación, tipo y antigüedad del establecimiento.

La secuencia recomendada es siempre la misma: ver los conteos o distribuciones, formular el experimento que da significado al índice, calcularlo y finalmente interpretar su escala.

12 Ejercicios formativos

  1. Recupere el significado probabilístico. Para \(p=(0.7,0.2,0.1)\), construya la matriz de probabilidades \(p_jp_k\). Sume la diagonal y su complemento. Explique el resultado como frecuencia esperada de desacuerdos en 100 pares.
  2. Sorpresa frente a aporte. Para las mismas probabilidades, calcule \(I_2(p_k)\) y \(p_kI_2(p_k)\). Identifique qué clase sorprende más y cuál aporta más a la entropía. ¿Son necesariamente la misma?
  3. Escala y base. Calcule \(H\) en bits y nats. Compruebe que \(H_{\mathrm{norm}}\) es el mismo en ambas bases.
  4. Números efectivos. Calcule \({}^0D\), \({}^1D\) y \({}^2D\) para \(p=(0.7,0.2,0.1)\) y verifique \({}^0D\ge{}^1D\ge{}^2D\).
  5. Descomposición numérica. Para \(G_1=(10,12)\) y \(G_2=(20,22)\), calcule \(SS_T\), \(SS_B\), \(SS_W\), \(\eta^2\) y \(\omega^2\).
  6. Límite de \(\eta^2\). Construya dos grupos con la misma media y dispersiones muy distintas. Muestre que \(\eta^2=0\) y explique por qué eso no demuestra que las distribuciones sean iguales.

Referencias