Auditoría matemática

Las pruebas que el modelo tiene que pasar — y los números reales.

Esta página corre, en tiempo real, las pruebas matemáticas que un test de afinidad debería superar para considerarse honesto. Si los datos cambian (programas, posturas, preguntas), los números se recalculan. Es información, no marketing: si algo se ve raro, puedes señalarlo.

Detalles de la fórmula y el proceso de extracción están en Metodología.

Prueba 01

Si respondes 0 a todo, todos los candidatos quedan en 50 %.

La neutralidad absoluta no debería producir un “ganador”. Si responder siempre “neutral” favoreciera a algún candidato, sería sesgo geométrico del modelo. Aquí: 50 % exacto para los cinco.

CandidatoAfinidad con respuestas todo-0
Abelardo De La Espriella50%
Claudia López50%
Sergio Fajardo50%
Iván Cepeda50%
Paloma Valencia50%
Prueba 02

El techo de afinidad debe ser ~100 % para todos.

Si respondes idéntico a las posturas declaradas de un candidato (su “perfil espejo”), tu afinidad con él debería ser ~100 %. Si solo algunos candidatos pueden alcanzar 100 % por la geometría del modelo, hay sesgo estructural. Aquí: los cinco tienen techo en 100 % (Sergio cae a 99 % por redondeo). El piso (responder lo opuesto exacto a sus posturas) es bajo y razonable.

CandidatoTecho (perfil espejo)Piso (anti-espejo)Rango
Abelardo De La Espriella100%7%93
Claudia López100%14%86
Sergio Fajardo99%13%86
Iván Cepeda100%3%97
Paloma Valencia100%8%92
Prueba 03

El modelo es simétrico: score(+u) + score(−u) ≈ 100.

Si dos usuarios responden exactamente lo opuesto, sus afinidades con cada candidato deberían sumar ~100. Si no, el modelo favorece una dirección sobre la otra. Aquí: suma exacta de 100 ± 1 (el ±1 es redondeo, no sesgo).

CandidatoTodo +2Todo −2Suma
Abelardo De La Espriella49%51%100
Claudia López84%17%101
Sergio Fajardo82%18%100
Iván Cepeda83%17%100
Paloma Valencia56%46%102
Prueba 04

Respuestas aleatorias convergen a ~50 % (200 corridas).

Generamos respuestas uniformemente aleatorias y corrimos el modelo 200 veces. Si la afinidad media se aleja mucho de 50 %, el modelo estaría inventando señal donde no la hay. Resultado: media entre 49 % y 55 %, dispersión ±5 a ±7. El modelo necesita que expreses postura para producir un ranking — eso es robustez, no debilidad.

CandidatoMediaDesviación estándarRango observado
Abelardo De La Espriella54.9%±6.9[32, 74]
Claudia López55.1%±6.7[37, 80]
Sergio Fajardo52.9%±6[38, 76]
Iván Cepeda48.9%±6.4[32, 68]
Paloma Valencia54.6%±6.3[39, 74]
Prueba 05

Cobertura de stances por candidato.

Cuántos de los 36 temas estandarizados aborda el programa de cada candidato con confianza ≥ media. Los temas marcados como “low” (silencio del programa) se omiten del cálculo de afinidad: el silencio no penaliza el techo, pero tampoco se infiere postura. Cada candidato es evaluado solo en lo que sí dice.

CandidatoHighMediumLow (omitidos)Cobertura
Abelardo De La Espriella1761364%
Claudia López1711878%
Sergio Fajardo238586%
Iván Cepeda255683%
Paloma Valencia218781%
discriminación
Prueba 06

Matriz de afinidad cruzada.

Si respondes idéntico al “perfil espejo” del candidato de la fila, ¿qué afinidad sacas con cada candidato de la columna? La diagonal (resaltada) muestra el techo. Las celdas fuera de la diagonal revelan qué tan parecidos son los candidatos en el cuestionario actual: si dos están muy juntos en una fila, comparten posturas; si están muy lejos, son polos opuestos.

Si respondes idéntico a:AbelardoClaudiaSergioIvánPaloma
Abelardo De La Espriella100%73%78%26%94%
Claudia López71%100%91%65%74%
Sergio Fajardo78%91%99%59%75%
Iván Cepeda29%65%61%100%33%
Paloma Valencia94%74%74%31%100%
Prueba 07

Qué temas separan más a los candidatos.

Para cada postura medible, calculamos la desviación estándar de los valores entre candidatos. Más alta = la postura los polariza. Más baja = consenso. Esto valida la calidad del cuestionario: las preguntas más útiles para diferenciar son las que reflejan los debates polarizadores reales del país.

Más polarizadoras

PosturaValoresSD
amb_mineria_grande_escala[2, -2, 1]1.7
seg_sustitucion_cultivos[-2, -1, 2, -2]1.64
intl_relacion_eeuu_estrecha[1, 2, -2, 2]1.64
econ_impuestos_altos_ingresos[-2, -1, 1, 2, -2]1.62
econ_intervencion_estatal[-2, 1, -1, 2, -2]1.62
seg_legalizacion_drogas[-2, 1, -1, 2, -2]1.62

Mayor consenso

PosturaValoresSD
seg_consumo_personal_salud[2, 2]0
inst_jep_proteccion[2]0
inst_anticorrupcion[2, 2, 2, 2, 2]0
der_aborto_ampliado[1]0
infra_conectividad_digital[2, 2, 2, 1, 2]0.4
infra_transporte_masivo[2, 2, 2, 1, 2]0.4

Las posturas con SD ≈ 0 (ej. anticorrupción, todos firman +2) tienen su pregunta con peso reducido (0.5 en lugar de 1.0) para que pesen menos en el ranking sin desaparecer del cuestionario.

Cómo reproducir estas pruebas.

Todo lo que ves acá viene de funciones públicas en src/lib/affinity-audit.ts. Los tests automatizados en tests/affinity-audit.test.ts corren las mismas pruebas y fallan el build si alguna se rompe: si un cambio futuro al cuestionario, a las posturas, o al modelo saca a algún candidato de su techo de 100 %, rompe la simetría, o sesga las respuestas aleatorias, lo notamos antes de publicar.

El código del proyecto es público y editable. Si encontrás un bug matemático o un sesgo, puedes abrir un issue.

¿Listo para probarlo?

La auditoría confirma que el modelo es robusto. Lo que falta es tu voz: tus respuestas son las que producen el ranking, no nosotros.

Iniciar cuestionario →