Herramienta · estadísticaTool · statistics

Calculadora de equivalencia (TOST)TOST equivalence calculator

Wilcoxon, Hodges-Lehmann y Holm: el mismo procedimiento que fijé en el registro de decisiones de mi TFM.Wilcoxon, Hodges–Lehmann and Holm: the same procedure I fixed in my thesis’s decision log.

Un p mayor que 0,05 no demuestra que dos métodos rindan igual: solo dice que no se vio la diferencia. Para afirmar «son equivalentes» hay que declarar antes un margen δ (la diferencia que no te importa) y rechazar que la diferencia real esté fuera de ±δ. Eso hace el TOST: dos contrastes unilaterales, uno contra cada borde.

A p-value above 0.05 does not show that two methods perform the same; it only says the difference was not detected. To claim “they are equivalent” you must first declare a margin δ (the difference you do not care about) and reject that the true difference lies outside ±δ. That is what TOST does: two one-sided tests, one against each edge.

01DatosData

EjemploExample Datos sintéticos, inventados para mostrar los tres desenlaces y lo que cambia Holm. No son resultados de ningún proyecto. Synthetic data, made up to show the three outcomes and what Holm changes. They are not results from any project.

Una fila por par: A y B separados por tabulador, ;, espacio, o coma si el decimal es punto. Decimal con coma o con punto, sin separador de miles. Se contrasta d = A − B. Una línea # nombre o una línea en blanco empieza otra comparación; con una primera columna de texto (separada por tabulador o ;) las filas se agrupan por ese nombre. Las filas con un valor vacío o NA se descartan. One row per pair: A and B separated by a tab, ;, a space, or a comma if the decimal mark is a dot. Decimal comma or dot, no thousands separator. The test is on d = A − B. A # name line or a blank line starts another comparison; with a first text column (separated by a tab or ;) rows are grouped by that name. Rows with an empty or NA value are dropped.

02ResultadoResult

Cómo leer cada númeroHow to read each number

θ es la pseudomediana de d = A − B: la mediana de los promedios de cada par de diferencias. Es el parámetro que contrasta Wilcoxon.θ is the pseudomedian of d = A − B: the median of the averages of every pair of differences. It is the parameter the Wilcoxon test is about.

n
Pares usados, sin las filas con valores vacíos. Con menos de 5 no se contrasta: ningún resultado podría salir significativo al 5 %.Pairs used, excluding rows with empty values. With fewer than 5 there is no test: no outcome could be significant at 5%.
HL
Estimador de Hodges-Lehmann de θ: la mediana de los n(n+1)/2 promedios de Walsh (dᵢ + dⱼ)/2. A diferencia de la mediana de d, no se queda en 0 cuando hay muchos ceros.Hodges–Lehmann estimator of θ: the median of the n(n+1)/2 Walsh averages (dᵢ + dⱼ)/2. Unlike the median of d, it does not stick at 0 when there are many zeros.
IC al 1 − 2α1 − 2α CI
Los valores de θ que ninguno de los dos unilaterales rechaza (90 % con α = 0,05). Sin empates, «equivalente» es lo mismo que el intervalo dentro de (−δ, +δ). Con empates es aproximado y decide el p.The values of θ that neither one-sided test rejects (90% with α = 0.05). Without ties, “equivalent” is the same as the interval lying inside (−δ, +δ). With ties it is approximate and the p-value decides.
p (θ > −δ)
Wilcoxon unilateral sobre d + δ. Pequeño: hay evidencia de que la diferencia no está por debajo de −δ.One-sided Wilcoxon test on d + δ. Small: evidence that the difference is not below −δ.
p (θ < +δ)
Wilcoxon unilateral sobre d − δ. Pequeño: hay evidencia de que la diferencia no está por encima de +δ.One-sided Wilcoxon test on d − δ. Small: evidence that the difference is not above +δ.
p TOSTTOST p
El mayor de los dos. Hay equivalencia si p TOST ≤ α. No se reparte α: tienen que rechazar los dos, y por eso basta el α de cada uno (intersección-unión).The larger of the two. Equivalence holds if TOST p ≤ α. α is not split: both must reject, which is why each one’s α is enough (intersection–union).
p TOST · HolmTOST p · Holm
Con varias comparaciones, el p ajustado por Holm. Sirve para decir cuáles son equivalentes con una probabilidad de error de familia ≤ α.With several comparisons, the Holm-adjusted p-value. Use it to say which ones are equivalent with a family-wise error probability ≤ α.
DesenlaceOutcome
Equivalente; diferencia relevante (θ fuera de ±δ, con el bilateral al α); inconcluso (ni una cosa ni otra: faltan datos, no es «casi equivalente»); no contrastable (menos de 5 pares).Equivalent; relevant difference (θ outside ±δ, two-sided at α); inconclusive (neither: data are missing, it is not “almost equivalent”); not testable (fewer than 5 pairs).
DetalleDetails
W+ es la suma de los rangos de las diferencias positivas, más la mitad del rango de cada cero. Incluye el p de θ = 0: una diferencia puede ser real y a la vez irrelevante.W+ is the sum of the ranks of the positive differences, plus half the rank of each zero. It includes the p-value for θ = 0: a difference can be real and still irrelevant.

Nota técnicaTechnical note

Hipótesis

Con d = A − B y θ su pseudomediana: H₀: θ ≤ −δ o θ ≥ +δ, frente a H₁: −δ < θ < +δ. Se hacen dos Wilcoxon de rangos con signo unilaterales, cada uno al α: sobre d + δ (H₁: θ > −δ) y sobre d − δ (H₁: θ < +δ). Se declara equivalencia si los dos p son ≤ α; el p TOST es el mayor. Es el criterio de effect_test en el paquete del TFM, que además separa «diferencia relevante» de «inconcluso».

Ceros y empates

Rangos medios para los empates. Los ceros se reparten (zero_method="zsplit"): la mitad de su rango va a W+ y la otra mitad a W−. El p es exacto y condicional: se recorren todos los signos posibles de las diferencias no nulas por programación dinámica sobre 2 × rango, lo que sigue siendo exacto con empates y ceros. Se usa hasta 500 diferencias no nulas; por encima, aproximación normal con la varianza condicional (suma de los rangos al cuadrado de las no nulas, entre 4) y corrección de continuidad de 0,5.

Antes de asignar rangos, las diferencias se redondean a 10 cifras significativas relativas a la mayor magnitud. Sin eso, en coma flotante (0,03 − 0,01) − 0,02 da −3,5 × 10⁻¹⁸ en vez de 0, y una diferencia igual a δ contaría como negativa.

Intervalo de Hodges-Lehmann

Los extremos son dos promedios de Walsh ordenados, W₍c₎ y W₍M+1−c₎ con M = n(n+1)/2, y c sale de la distribución exacta de W+ sin empates (normal si n > 500). Sin empates su cobertura es exacta; con empates es aproximada y algo conservadora, y por eso decide el p.

Varias comparaciones

Cada comparación ya es una intersección-unión: hace falta que rechacen sus dos unilaterales. Entre comparaciones, Holm sobre los p TOST dice cuáles se declaran equivalentes con error de familia ≤ α (y, por separado, Holm sobre los p de diferencia relevante). Para afirmar que todas son equivalentes a la vez no hace falta corrección: basta que cada una lo sea al α. Una comparación no contrastable cuenta en Holm con p = 1, porque la familia es la que declaraste, no la que salió.

Supuesto y límites

El nivel exacto de Wilcoxon supone que d es simétrica alrededor de su pseudomediana. Con asimetría fuerte (casi todas las diferencias en 0 y una cola larga) los niveles son aproximados. Esta calculadora admite hasta 2000 pares por comparación y 50 comparaciones.

Diferencias con scipy

Sin empates ni ceros, los p coinciden con scipy.stats.wilcoxon(..., zero_method="zsplit", method="exact"). Con empates o ceros, method="exact" de scipy usa la nula sin empates y su p es aproximado, y method="asymptotic" cuenta los ceros en la varianza; los dos pueden diferir de esta calculadora. La permutación exhaustiva de scipy (PermutationMethod) sí coincide.

Validación

tools/tost/test_tost.mjs, en el repositorio del sitio, compara 15 casos (n de 6 a 60, más uno de 600 para la rama normal; continuos, con empates y con ceros) con scipy: método exacto (sin empates ni ceros), asintótico con corrección de continuidad (sin ceros), permutación exhaustiva (n ≤ 18) y Monte Carlo, más el estimador y el intervalo de Hodges-Lehmann. La tolerancia es 10⁻¹² en las comparaciones deterministas y 5 errores estándar en Monte Carlo; donde scipy difiere a propósito (el apartado anterior), la diferencia se informa sin exigir tolerancia. También compara con tfmfdd/stats.py del repositorio del TFM.

En el TFM

Esta regla es la de effect_test y compare_arms, con las que el TFM decide las ablaciones. La hipótesis principal usa la misma maquinaria en su versión de no superioridad: δ = 0,02 (2 puntos porcentuales) sobre la pseudomediana de Hodges-Lehmann de la ventaja por simulación, fijado antes del piloto de varianza y sin revisarlo con su resultado; cada unilateral al 5 %, intervalo al 90 %, Holm sobre los seis p de «ventaja relevante» y, para afirmar el apoyo, intersección-unión: las seis comparaciones al 5 % sin corrección. Fijar δ después de ver los datos sería elegir el resultado.

Hypotheses

With d = A − B and θ its pseudomedian: H₀: θ ≤ −δ or θ ≥ +δ, against H₁: −δ < θ < +δ. Two one-sided Wilcoxon signed-rank tests are run, each at α: on d + δ (H₁: θ > −δ) and on d − δ (H₁: θ < +δ). Equivalence is declared if both p-values are ≤ α; the TOST p is the larger one. This is the criterion of effect_test in the thesis package, which also separates “relevant difference” from “inconclusive”.

Zeros and ties

Average ranks for ties. Zeros are split (zero_method="zsplit"): half of their rank goes to W+ and half to W−. The p-value is exact and conditional: every possible sign pattern of the non-zero differences is enumerated by dynamic programming over 2 × rank, which stays exact with ties and zeros. It is used up to 500 non-zero differences; above that, a normal approximation with the conditional variance (sum of the squared ranks of the non-zero differences, divided by 4) and a 0.5 continuity correction.

Before ranking, differences are rounded to 10 significant digits relative to the largest magnitude. Without that, in floating point (0.03 − 0.01) − 0.02 gives −3.5 × 10⁻¹⁸ instead of 0, and a difference equal to δ would count as negative.

Hodges–Lehmann interval

The endpoints are two ordered Walsh averages, W₍c₎ and W₍M+1−c₎ with M = n(n+1)/2, and c comes from the exact no-ties distribution of W+ (normal if n > 500). Without ties its coverage is exact; with ties it is approximate and slightly conservative, which is why the p-value decides.

Several comparisons

Each comparison is already an intersection–union test: both of its one-sided tests must reject. Across comparisons, Holm on the TOST p-values says which ones can be declared equivalent with family-wise error ≤ α (and, separately, Holm on the relevant-difference p-values). Claiming that all of them are equivalent at once needs no correction: each one being equivalent at α is enough. A non-testable comparison enters Holm with p = 1, because the family is the one you declared, not the one that came out.

Assumption and limits

The exact level of the Wilcoxon test assumes d is symmetric around its pseudomedian. With strong asymmetry (almost all differences at 0 and a long tail) the levels are approximate. This calculator accepts up to 2000 pairs per comparison and 50 comparisons.

Differences from scipy

Without ties or zeros, the p-values match scipy.stats.wilcoxon(..., zero_method="zsplit", method="exact"). With ties or zeros, scipy’s method="exact" uses the no-ties null and its p-value is approximate, and method="asymptotic" counts the zeros in the variance; both can differ from this calculator. scipy’s exhaustive permutation (PermutationMethod) does match.

Validation

tools/tost/test_tost.mjs, in the site’s repository, compares 15 cases (n from 6 to 60, plus one of 600 for the normal branch; continuous, with ties and with zeros) against scipy: exact (no ties or zeros), asymptotic with continuity correction (no zeros), exhaustive permutation (n ≤ 18) and Monte Carlo permutation, plus the Hodges–Lehmann estimate and interval. The tolerance is 10⁻¹² for the deterministic comparisons and 5 standard errors for Monte Carlo; where scipy differs on purpose (previous section), the difference is reported without a tolerance. It also compares against tfmfdd/stats.py from the thesis repository.

In the thesis

This rule is the one in effect_test and compare_arms, which the thesis uses to decide its ablations. The main hypothesis uses the same machinery in its non-superiority form: δ = 0.02 (2 percentage points) on the Hodges–Lehmann pseudomedian of the per-simulation advantage, fixed before the variance pilot and not revised with its result; each one-sided test at 5%, a 90% interval, Holm over the six “relevant advantage” p-values and, to claim support, intersection–union: all six comparisons at 5% with no correction. Fixing δ after seeing the data would be choosing the result.