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.
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.
| Candidato | Afinidad con respuestas todo-0 |
|---|---|
| Abelardo De La Espriella | 50% |
| Claudia López | 50% |
| Sergio Fajardo | 50% |
| Iván Cepeda | 50% |
| Paloma Valencia | 50% |
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.
| Candidato | Techo (perfil espejo) | Piso (anti-espejo) | Rango |
|---|---|---|---|
| Abelardo De La Espriella | 100% | 7% | 93 |
| Claudia López | 100% | 14% | 86 |
| Sergio Fajardo | 99% | 13% | 86 |
| Iván Cepeda | 100% | 3% | 97 |
| Paloma Valencia | 100% | 8% | 92 |
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).
| Candidato | Todo +2 | Todo −2 | Suma |
|---|---|---|---|
| Abelardo De La Espriella | 49% | 51% | 100 |
| Claudia López | 84% | 17% | 101 |
| Sergio Fajardo | 82% | 18% | 100 |
| Iván Cepeda | 83% | 17% | 100 |
| Paloma Valencia | 56% | 46% | 102 |
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.
| Candidato | Media | Desviación estándar | Rango observado |
|---|---|---|---|
| Abelardo De La Espriella | 54.9% | ±6.9 | [32, 74] |
| Claudia López | 55.1% | ±6.7 | [37, 80] |
| Sergio Fajardo | 52.9% | ±6 | [38, 76] |
| Iván Cepeda | 48.9% | ±6.4 | [32, 68] |
| Paloma Valencia | 54.6% | ±6.3 | [39, 74] |
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.
| Candidato | High | Medium | Low (omitidos) | Cobertura |
|---|---|---|---|---|
| Abelardo De La Espriella | 17 | 6 | 13 | 64% |
| Claudia López | 17 | 11 | 8 | 78% |
| Sergio Fajardo | 23 | 8 | 5 | 86% |
| Iván Cepeda | 25 | 5 | 6 | 83% |
| Paloma Valencia | 21 | 8 | 7 | 81% |
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: | Abelardo | Claudia | Sergio | Iván | Paloma |
|---|---|---|---|---|---|
| Abelardo De La Espriella | 100% | 73% | 78% | 26% | 94% |
| Claudia López | 71% | 100% | 91% | 65% | 74% |
| Sergio Fajardo | 78% | 91% | 99% | 59% | 75% |
| Iván Cepeda | 29% | 65% | 61% | 100% | 33% |
| Paloma Valencia | 94% | 74% | 74% | 31% | 100% |
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
| Postura | Valores | SD |
|---|---|---|
| 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
| Postura | Valores | SD |
|---|---|---|
| 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 →