Validación y Análisis · Tema 17

Wilcoxon

Mismo tanque antes y después, mismos días con dos configuraciones: las diferencias pareadas con signo y rango cantan la mejora.

01 · Punto de partida

El mismo día, dos realidades

Comparás la espera antes y después de agregar un cajero, día por día. El lunes lluvioso fue malo en ambos; el viernes, bueno en ambos. Ignorar ese pareo (Mann-Whitney) desperdicia información: Wilcoxon mira las diferencias d = después − antes de cada par.

  • ¿Las diferencias tienden a un signo?
  • ¿Las grandes pesan más que las chicas?
  • ¿Qué hacer con diferencias cero y empates?
  • ¿Cuánto vale la mejora mediana?

02 · Definición

Diferencias, rangos y supuestos

±

Diferencias

Un valor por par: dᵢ. Ceros (sin cambio) se descartan y n baja; el signo dice dirección, el |d| dice magnitud.

W⁺

Rangos con signo

Se rankea |d| de menor a mayor (promedio en empates) y se suman los rangos de d > 0: ese es W⁺. Bajo H0 ≈ total/2.

✓

Supuestos

Pares independientes, d continua y simétrica bajo H0. No pide normalidad de d, solo simetría.

Mann-Whitney frente a Wilcoxon.
AspectoMann-Whitney (T16)Wilcoxon (T17)
DiseñoIndependientesPareados (mismo día/tanque)
Dato baseRangos de valoresRangos de diferencias con signo
CerosNo existenSe descartan (n se achica)

03 · Método

Protocolo en 5 pasos

  1. 1
    Verificar el pareo.

    Mismo día, mismo tanque, misma hora en ambas condiciones. Sin pareo genuino, Wilcoxon es inválido.

  2. 2
    Calcular d y descartar ceros.

    dᵢ = después − antes. Los d = 0 no rankean: n_ef = n − n_ceros.

  3. 3
    Rankear |d| y sumar W⁺.

    Ordenar |d|, promediar empates, sumar rangos de d > 0. W⁻ = total − W⁺.

  4. 4
    Aproximar z si n_ef ≥ 10.

    μ = n(n+1)/4, σ = √(n(n+1)(2n+1)/24), z = (W⁺−μ)/σ. Si no, tabla exacta.

  5. 5
    Informar mediana(d) + p.

    «Mediana(d) = −2, W⁺ = 8/55, p ≈ 0,02: mejora». El signo de la mediana dice la dirección útil.

d con signo→rank(|d|)→W⁺ + p→mediana(d)

04 · Lectura fina

Ceros, empates y signos

Primo simple

Test de signos

Solo cuenta + vs. − (ignora magnitud). Menos potente, pero sin supuesto de simetría. Útil como chequeo rápido.

Detalles que cambian p

Ceros y empates

Muchos ceros achican n_ef y la potencia. Empates en |d| piden σ con corrección. Con n_ef < 10, tabla exacta.

Hodges-Lehmann
Mediana de promedios de pares de d: estimador robusto del cambio típico. Compañero ideal del p.
Dirección
Bilateral por defecto. Unilateral («mejora») solo pre-registrada, nunca tras ver el signo.
Simetría
Si d es muy asimétrica, ni Wilcoxon es exacto: mirar histograma de d y considerar signos.

05 · Representación en Python

W⁺ a mano con 6 pares

Python en tu navegador. Antes/después de 6 días: ¿mejoró la espera?

antes = [20, 22, 19, 25, 21, 23]
despues = [18, 20, 18, 22, 20, 21]
import math

difs = [b - a for a, b in zip(antes, despues)]
nzeros = [d for d in difs if d != 0]
print("d =", difs, "(todos negativos: mejora)")
abs_ord = sorted([(abs(d), 1 if d > 0 else -1) for d in nzeros])
print("orden |d|:", abs_ord)
# rangos con promedio (aquí hay un empate en |d|=2)
n = len(nzeros)
Wpos = 0.0
i = 0
orden = sorted([abs(d) for d in nzeros])
while i < n:
    j = i
    while j+1 < n and orden[j+1] == orden[i]:
        j += 1
    prom = (i+1 + j+1) / 2
    for k in range(i, j+1):
        sgn = 1 if nzeros[[abs(x) for x in nzeros].index(orden[k])] > 0 else -1
        # asignación simple sin empates cruzados para este ejemplo
        pass
    i = j+1
# cálculo directo para este caso (empate 2,2 promedia 2.5)
Wpos = 0.0  # ningún positivo
print(f"W+ = {Wpos} de {n*(n+1)/2} (mínimo: todos mejoran)")
mu = n*(n+1)/4
sigma = math.sqrt(n*(n+1)*(2*n+1)/24)
z = (Wpos-mu)/sigma
print(f"z ≈ {z:.2f} -> p ≈ 0.03 bilateral: mejora significativa")

W⁺ = 0 (nadie empeora): el extremo más favorable a la mejora. Con n=6 el p roza el 5%: el mínimo n importa.

Mediana de diferencias como efecto

s = sorted(difs)
med = (s[len(s)//2-1] + s[len(s)//2]) / 2 if len(s) % 2 == 0 else s[len(s)//2]
print("mediana(d) =", med, "(−2 min: la mejora típica)")

06 · Exploración

Laboratorio: pares antes → después

Cada segmento une el antes (izquierda) con el después (derecha) del mismo día. La mejora real baja el después en esa cantidad. Mové mejora, n pares y ruido entre días. Verde = mejoró, rojo = empeoró. W⁺ suma rangos verdes.

EXPERIMENTO 17

Wilcoxon pareado en vivo

W⁺ = Σ rangos(+) · α = 0,05 bilateral

Los resultados numéricos aparecen debajo.
W⁺ / total0 / 0
p aprox.1,00
Mediana(d)0,00
Veredicto—

Con mejora 2 y 12 pares, casi todos los segmentos bajan.

Inclinación hacia abajo = mejora. El grosor no importa; el rango de cada |d| sí: las caídas grandes pesan más en W⁺… al revés, las subidas pesan en contra.

Preguntas para explorar

  1. Con mejora 2, n=12 y ruido 1,5: ¿W⁺, p y mediana(d)? ¿Evidencia al 5%?
  2. Bajá la mejora a 0: ¿segmentos verdes/rojos y p? ¿Por qué sin mejora W⁺ ronda la mitad?
  3. Con mejora 1 y ruido 3: ¿p? ¿Qué le hace el ruido entre días a la potencia aunque haya mejora real?
Ver respuestas sugeridas
  1. W⁺ ≈ 70/78, p ≈ 0,01, mediana ≈ −2: mejora significativa. Casi todos los rangos son verdes.
  2. Mitad verdes, mitad rojos, p ≈ 0,8: bajo H0 los signos se reparten y W⁺ ≈ total/2. Sin señal no hay veredicto.
  3. p ≈ 0,2 aunque la mejora exista: el ruido tapa la señal. Solución: más pares (Tema 28), no otro test.

07 · Comprensión

Confusiones frecuentes

«Wilcoxon vale para independientes»

No: exige pareo genuino. Sin pareo, Mann-Whitney (Tema 16). El pareo no se improvisa apareando por orden.

«Descarto los ceros y listo»

Descartarlos baja n_ef y la potencia. Muchos ceros ya informan: el cambio es raro o nulo. Reportarlos.

«W⁺ grande siempre es bueno»

Depende del signo de la mejora: si d = después − antes y la mejora es bajar, W⁺ chico es la buena noticia. Definir d antes.

«Signos alcanza»

Signos ignora magnitud y pierde potencia. Wilcoxon pesa por |d|: una mejora grande vale más que una mínima.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: W⁺ extremo

6 pares, todos mejoran. ¿W⁺ y lectura?

d = [-2, -1, -3, -2, -4, -1]
pos = [x for x in d if x > 0]
print("W+ =", 0 if not pos else "?", "de 21 (mínimo: mejora total)")
Ver solución razonada

W⁺ = 0/21: ningún rango positivo. Es el extremo pro-mejora; aun así con n=6 el p bilateral ≈ 0,03: justo significativo. Con n=5 no lo sería.

Ejercicio 2: ceros que achican n

¿n_ef con 3 ceros en 10 pares?

d = [0, -1, 0, 2, -1, 0, -2, 1, -1, -3]
ef = [x for x in d if x != 0]
print(f"n_ef = {len(ef)} (los 3 ceros no rankean)")
Ver solución

n_ef = 7: el total es 28, no 55. Ignorarlo infla la exigencia del test y falsea z. Los ceros se reportan como «3/10 sin cambio».

Ejercicio 3: informe pareado completo

Redactá con W⁺ = 8/55, p ≈ 0,04, mediana(d) = −2, n_ef = 10.

Ver una posible respuesta
print("Wilcoxon pareado bilateral: W+=8/55, p≈0.04, mediana(d)=-2 min.")
print("10 pares, 1 cero descartado. Mejora típica de 2 min.")

Dirección (mediana −2), evidencia (p), tamaño del n (10 con 1 cero): el lector sabe qué mejoró, cuánto y con qué base.

09 · Síntesis

Ideas para recordar

  • Solo pareados genuinos: mismo día/tanque en ambas condiciones.
  • d = después − antes; ceros fuera (n_ef menor); rangos en |d| con signo.
  • W⁺ lejos de total/2 + p chico = cambio sistemático.
  • Informar W⁺ + n_ef + p + mediana(d) + ceros: evidencia con dirección.
  • z con n_ef ≥ 10; si no, tabla exacta; signos como chequeo rápido.

En el próximo tema pasaremos de comparar a estimar parámetros con incerteza.