EstevezAlvarez
Ciencia de datos e IA

Calcular la incertidumbre sin réplicas artificiales: un procedimiento por documento

Incertidumbre en RAG, parte 3: muestro el cálculo por documento, con fórmulas y código, y cómo lo uso para comparar sistemas y planificar la muestra.

En este artículo

En este estudio, la selección de documentos genera la incertidumbre amostral. Esta parte explica el cálculo para medias de resultados agrupados: hit@k, MRR u otros escores por consulta, siempre que el diseño y el agrupamiento lo permitan. No es una receta automática para métricas no aditivas, preguntas multidocumentales o jueces aleatorios.

Parte 1: por qué 10.000 fragmentos no son 10.000 casos

Parte 2: qué unidad debe remuestrear el bootstrap

Paso 1: una fila por documento

Para las medias y los métodos agrupados de este estudio bastan n_d, el número de resultados observados, y s_d, su suma. Esas columnas permiten recalcular micro, macro y sus aproximaciones de varianza. No sustituyen los registros detallados para auditar rankings, dependencia local o errores temporales. Las métricas no aditivas y las preguntas multidocumentales requieren otra especificación.

Si la métrica no es binaria, se guarda también la suma de los cuadrados. Si la comparación es entre dos sistemas sobre las mismas consultas, s_d pasa a ser la suma de las diferencias por consulta dentro del documento.

Paso 2: declarar el estimando

Con tamaños desiguales hay dos medias distintas, y cada una responde a una pregunta. La micro-media, R = Σ s_d / Σ n_d, es la tasa de un fragmento sorteado al azar: qué fracción de los trechos del acervo atribuye bien el sistema. La macro-media, r̄, la media de las tasas s_d / n_d, es la tasa esperada en un documento típico. En el acervo ANEEL–TAESA valen 0,1846 y 0,1596. No es una elección técnica; hay que decidirla antes de calcular y escribirla en el informe.

Si la pregunta lo admite, la macro-media es más fácil de estimar: con 20 documentos, su raíz del error cuadrático medio fue 0,050, contra 0,089 de la micro-media, que depende mucho de unos pocos documentos grandes.

Paso 3: el error estándar sale de los documentos

La macro-media es una media de K números, uno por documento, y su error estándar es el de cualquier media. La micro-media es un cociente, y su error estándar sale de la linealización clásica del estimador de razón: cada documento contribuye con un residuo u_d = s_d − R·n_d, que mide cuánto se aparta su total de lo que daría la tasa global. En las fórmulas, se(·) es el error estándar y ν, los grados de libertad.

macro   r_d = s_d / n_d      r̄ = (1/K) · Σ r_d
        se(r̄) = sd(r_d) / √K                       ν = K − 1

micro   N = Σ n_d            R = Σ s_d / N        u_d = s_d − R · n_d
  CR1   se(R) = √( K/(K−1) · Σ u_d² ) / N          ν = K − 1
  CR2   se(R) = √( Σ u_d² / (1 − n_d/N) ) / N      ν = Imbens–Kolesár

95%     θ̂ ± t(0.975; ν) · se(θ̂)

CR1 aplica la corrección K/(K−1). CR2 ajusta los residuos bajo un modelo de trabajo; aquí se usa el de independencia. Los grados de libertad aproximados de Imbens–Kolesár reflejan el desequilibrio de pesos. Con tamaños iguales coinciden; para la macro coinciden con el t sobre tasas. Son aproximaciones: estos ajustes no garantizan cobertura nominal con pocos documentos.

Ningún paso usa el número de fragmentos como tamaño de muestra. n_d entra solo como peso del documento. Esa es la diferencia con la fórmula binomial, en la que N aparece en el denominador como si cada fragmento fuera un caso.

Paso 4: el intervalo, con los grados de libertad a la vista

Los grados de libertad describen la aproximación del intervalo, no un número literal de documentos independientes. Con 20 documentos y 764 fragmentos, CR2 obtuvo ν=3,76 y un intervalo micro de [−0,023; 0,308]. El Wald iid dio [0,118; 0,167], que no contenía el objetivo de 0,185. Informo K y ν por separado: son intervalos nominales cuya cobertura debe evaluarse.

El código reproduce las fórmulas deterministas. Su bootstrap usa 9.999 réplicas y semilla 1; el original usó 999 y otra secuencia. Sus límites pueden diferir por Monte Carlo. Primero hay que seleccionar los documentos de la muestra: el censo completo ya tiene una tasa conocida.

import numpy as np
from scipy import stats

# df: one row per chunk (or query), columns doc_id and hit (0/1 or any score)
g = df.groupby("doc_id")["hit"].agg(n="size", s="sum")
n, s = g["n"].to_numpy(float), g["s"].to_numpy(float)
K, N = len(n), n.sum()
if K < 2 or np.any(n <= 0) or not np.isfinite(s).all():
    raise ValueError("Need at least two valid documents")

# micro: ratio estimator, CR2 with Imbens-Kolesar degrees of freedom
R = s.sum() / N
u = s - R * n
h = n / N
se_micro = np.sqrt(np.sum(u**2 / (1 - h))) / N
a = 1 / np.sqrt(1 - h)
M = -np.outer(a * n, a * n) / N
M[np.diag_indices(K)] += a**2 * n
df_micro = np.trace(M)**2 / np.sum(M * M)
ci_micro = R + np.array([-1, 1]) * stats.t.ppf(0.975, df_micro) * se_micro

# macro: mean of per-document rates, t with K - 1 degrees of freedom
r = s / n
se_macro = r.std(ddof=1) / np.sqrt(K)
ci_macro = r.mean() + np.array([-1, 1]) * stats.t.ppf(0.975, K - 1) * se_macro

# document bootstrap-t (macro): resample documents, studentise each replicate
rng = np.random.default_rng(1)
rb = r[rng.integers(0, K, (9999, K))]
sd = rb.std(1, ddof=1)
degenerate_fraction = np.mean(sd == 0)
if not np.any(sd > 0):
    raise ValueError("All bootstrap replicates have zero SE; interval unavailable")
tb = (rb.mean(1)[sd > 0] - r.mean()) / (sd[sd > 0] / np.sqrt(K))
lo, hi = np.quantile(tb, [0.025, 0.975])
ci_boot_t = (r.mean() - hi * se_macro, r.mean() - lo * se_macro)

Para la micro-media, el bootstrap-t sigue la misma lógica: en cada réplica se sortean documentos, se recalcula el cociente y se divide por el CR1 de la propia réplica. Las réplicas en las que todos los documentos tienen la misma tasa no tienen error estándar y se descartan.

Paso 5: elegir el método según la situación

No hay un método que domine en todos los casos. Las coberturas del estudio, con intervalos nominales del 95%, sugieren una guía:

Guía basada en las coberturas del estudio ANEEL–TAESA, con 20 documentos salvo indicación (nominal: 95%). No es una regla universal.
SituaciónAproximación evaluadaLímite o precaución
Macro-media, 20 documentos o mást con K − 1 gl sobre las tasas (93,0%)Wald iid y bootstrap de fragmentos (59,7%)
Micro-media, tamaños desigualesCR2 con gl de Imbens–Kolesár (85,7%) o bootstrap-t (88,4%)CR1 (77,1%) y Wald iid (29,5%)
Cinco documentosCR2 (86,6% micro), avisando que el nominal no está garantizadoBootstrap-t (71,1%) y percentil (75,0%)
Tasa cerca de 0 o de 1Intervalo en escala logit (no evaluado aquí)Logit no garantiza cobertura; tratar 0 y 1
Se sortearon tipos y después documentosAproximación por tipo; revisión de dos etapas: t 91,42%El comparador original de estratos no aisló un único error

Logit mantiene los límites en el dominio cuando la transformación está definida, pero requiere tratar estimaciones en cero o uno y no garantiza cobertura. No lo evalué aquí. Intersectar un intervalo con [0,1] conserva la cobertura para una proporción y tampoco la mejora. Conviene informar ceros, unos y réplicas degeneradas, no esconderlos detrás de una transformación.

Comparar dos sistemas: diferencias por documento

Comparo los recuperadores sobre las mismas consultas y agrego las diferencias por documento. El pareamiento aprovecha la variación compartida y puede reducir la varianza: Var(A−B)=Var(A)+Var(B)−2Cov(A,B). No elimina las interacciones entre sistema y documento ni cambia por sí solo la unidad muestral.

En el acervo ANEEL–TAESA, la ventaja de BM25 sobre TF-IDF fue de 0,62 puntos en la micro-media y de 0,27 en la macro-media, con empate exacto en el 70% de los documentos. Con diferencias tan pequeñas, discretas y llenas de ceros, los bootstraps por documento cubrieron entre el 85% y el 89%. El CR2 de la micro-media (95,7%) y el t de la macro-media (97,4%) fueron los únicos que llegaron al nominal o lo superaron. Antes de anunciar que un sistema es mejor, vale la pena comprobar el método en una simulación con los propios datos, como hizo este estudio.

Planificar: la precisión se compra con documentos

Para planificar con M=1.300 documentos usé t × S/√K × √(1−K/M). La aproximación da 76 documentos para una semiamplitud de 0,05 en macro y 220 en micro; sin corrección finita, 80 y 264. No garantiza cobertura ni utiliza grados de libertad CR2 específicos. También hay que comprobar asimetría e influencia documental.

Semiamplitud esperada del intervalo del 95% según el número de documentos, con la dispersión estimada en el acervo ANEEL–TAESA. La curva estratificada es una aproximación a partir de la simulación con K = 20.
Semiamplitud esperada del intervalo del 95% según el número de documentos, con la dispersión estimada en el acervo ANEEL–TAESA. La curva estratificada es una aproximación a partir de la simulación con K = 20. Ampliar imagen

La micro-media es cara porque unos pocos documentos grandes deciden el resultado. El remedio es de diseño, no de cálculo: estratificar el sorteo por tamaño. Probé separar los 129 documentos con más de 76 fragmentos, que concentran el 59% de todos los fragmentos, y sortear 10 entre ellos y 10 entre los demás, con el estimador de razón combinado y su error estándar estratificado. Coherente con la parte 2, los estratos son fijos y los documentos se sortean dentro de cada uno.

La desviación estándar de la micro-media bajó de 0,092 a 0,059, y la anchura media del intervalo, de 0,39 con CR2 a 0,22. La cobertura subió al 88,6%, todavía por debajo del 95%: dentro del estrato de documentos pequeños sigue habiendo mucha asimetría. Estratificar no sustituye a tener más documentos, pero hace que cada documento rinda más.

Qué informar

Sobre el diagnóstico: el tamaño efectivo N/DEFF ayuda a explicar el problema, pero usarlo como si fueran N/DEFF casos independientes es otra aproximación frágil. En el estudio, ese «Wald con n efectivo» cubrió el 89% con 20 documentos y cayó al 74% con cinco.

Cierre de la serie

Empiezo por el diseño: qué se seleccionó, cuál es la población y qué media responde a la pregunta. Aquí agrego por documento y conservo ese agrupamiento en la inferencia. Otros diseños requieren pesos, estratos, etapas o preguntas que dependen de varios documentos. Los 10.000 fragmentos de 20 documentos ilustran la diferencia entre mediciones y unidades muestrales; esos recuentos no determinan por sí solos el error estándar.

Procedencia y referencias

Coberturas de los métodos y comparación pareada: estudio ANEEL–TAESA, con 5.000 repeticiones para K = 20 y 2.000 en las sensibilidades. Estratificación por tamaño y planificación: etapa4_teoria.py, con 2.000 muestras. La curva estratificada de la figura extrapola la desviación estándar observada con K = 20 y es solo indicativa.

Descargar los agregados y los hashes de las fuentes (JSON)

Volver al índice del blog

Revisión metodológica · 11 de octubre de 2026

Realicé los experimentos como Jean M. Estevez Alvarez. Esta revisión distingue los resultados originales de las verificaciones posteriores: conserva los resultados por fragmento y las coberturas originales, corrige las cantidades derivadas y añade 5.000 repeticiones del diseño de dos etapas. No hubo nueva recuperación, entrenamiento ni evaluación en producción.

Los métodos de la tabla son aproximaciones evaluadas, no una receta calibrada: el 93,0% del t macro sigue por debajo del 95% nominal. El bootstrap-t original descarta réplicas con error estándar cero y devuelve un intervalo puntual si todas degeneran; esa política forma parte de los resultados históricos y no demuestra certeza. En la revisión de dos etapas, la varianza corregida funciona en promedio, pero el intervalo t aún cubre el 91,42%.

Las fórmulas CR1 y macro mostradas sin corrección finita son aproximaciones apropiadas cuando la fracción seleccionada es pequeña. Para AAS sin reemplazo, la varianza macro incluye (1−K/M); la micro admite esa corrección en su linealización. No aplico una única corrección global a diseños de varias etapas. Las referencias originales fundamentan los métodos bajo sus condiciones, no validan por sí solas este corpus.

Resultados de la revisión del diseño (JSON)

Field y Welsh (2007): modelos y límites del bootstrap agrupado

Bell y McCaffrey (2002): artículo original sobre BRL