Documento de metodología
Metodología del test de afinidad (v0.2 · 11-10-2026)
Test rápido y anónimo para las elecciones generales del 29 de noviembre de 2026, convocadas por el Real Decreto 806/2026 (BOE de 6-10-2026). Todo el cálculo se hace en el navegador. No se envía ni se guarda ninguna respuesta.
Archivos:
partidos.json: 40 formaciones. Entran en el ranking las 13 con datos suficientes (los 12 del test y Frente Obrero).preguntas.json: 30 afirmaciones. Hay 22 políticas y 8 indirectas, con la postura, la fuente y el peso de confianza.ponderaciones.csv: peso 1 por pregunta y confianza por fuente. La saliencia del CIS no se aplica.criterios.md,validacion.mdyfuentes.md: rúbrica, resultados de la validación y catálogo de fuentes.
1. Escala y reglas de codificación
Cada partido tiene un valor por afirmación en la escala -2 … +2 (muy en contra … muy a favor), o null.
| Evidencia encontrada | Valor |
|---|---|
| Programa o declaración explícita y rotunda, o autoría o voto final de una ley que dice exactamente lo de la afirmación | ±2 |
| Apoyo o rechazo con matices, voto de trámite (toma en consideración, PNL, enmienda de totalidad) o evidencia indirecta (*proxy*) | ±1 |
| Abstención, o posición explícitamente intermedia | 0 |
| No hay fuente fiable o la evidencia no permite saber el sentido | null |
- Un voto en contra por motivos competenciales (p. ej., PNV, Junts y CC frente a la Ley de Vivienda) se codifica ±1 y se marca
dudosa: true. - Votos de 2021-2022 de Unidas Podemos: se asignan a Sumar y a Podemos, que fueron sus herederos.
- Si la justificación es una inferencia, se marca
dudosa: truey se explica. Ejemplo: SALF y la regularización, deducida de su propuesta de deportaciones. - Fuentes secundarias (guías de AQuienVoto y Doble Lectura) solo se usan cuando no se encontró una primaria. En el JSON llevan
tipo_fuente: "guia". - Las preguntas indirectas no tienen posturas de partido. Su
peso_defectoes 0 y no cuentan en la afinidad.
2. Ejes del gráfico
| Eje | Polo − | Polo + | Nº de afirmaciones (completa / rápida) |
|---|---|---|---|
economico | izquierda | derecha | 10 / 4 |
social | progresista | conservador | 8 / 4 |
territorial | centralista | autonomista | 4 / 2 |
Cada afirmación tiene un campo polaridad_eje:
- +1: estar de acuerdo empuja hacia el polo +.
- −1: estar de acuerdo empuja hacia el polo −.
Nota de modelado: nuclear (P17), ritmo de la política climática (P18) y okupación (P22) se colocan en el eje económico, con polaridad "derecha". Así se alinean las votaciones en el Congreso, pero es una decisión discutible. El eje territorial tiene pocas afirmaciones: en la versión rápida es orientativo.
3. Algoritmo de afinidad (variante V4)
En pantalla hay un deslizador de 0 a 100. Empieza en el centro, pero eso no es una respuesta: hay que moverlo o pulsar Siguiente o Saltar. Siguiente sin haberlo movido guarda el centro (0 en la escala de cálculo). Saltar guarda un vacío y no puntúa. Me importa sigue existiendo y duplica el peso; no avanza de frase.
El 0 % es el polo de la izquierda y el 100 % el de la derecha. Esos polos no son «izquierda» y «derecha» políticas: el 100 % es estar de acuerdo con la afirmación original (texto_original) y el 0 % es estar en desacuerdo. La situación de la pantalla puede estar redactada al revés que esa afirmación. El ejemplo del alquiler: «que pueda subirlo» es el 0 %, porque la afirmación codificada es limitar el alquiler. Cada situación es una sola idea y nombra los dos lados de esa idea.
El porcentaje del deslizador pasa a la escala continua del algoritmo:
valor = (porcentaje × 4 − 200) / 100
Así 0 → −2, 25 → −1, 50 → 0, 75 → +1 y 100 → +2. Un 73 % es +0,92. Las posturas de los partidos siguen siendo enteros −2, −1, 0, +1, +2 o null. No se han recodificado.
El enlace para comparar con un amigo sigue yendo detrás de #. El prefijo a2 guarda el porcentaje entero (0–100), no el valor con decimales. Un enlace antiguo a1 se sigue leyendo como la escala discreta de cinco puntos.
Qué significa el porcentaje. 50 % es lo que saldría respondiendo al azar. 100 % es coincidir en todo lo documentado de ese partido. Por debajo de 50 % hay menos coincidencia que el azar. No es un porcentaje de voto.
ENTRADA
respuestas[i] ∈ [−2, +2] continuo, o SALTADA
importante[i] ∈ {true,false}
preguntas[i].peso_defecto // 1 políticas, 0 indirectas
preguntas[i].posturas[p].valor // -2..2 o null
preguntas[i].posturas[p].peso_confianza // votación 1; programa 0,9; declaración 0,8; prensa 0,7; guía 0,6; dudosa ×0,75
PARÁMETROS
W_IMPORTANTE = 2
COBERTURA_MIN = 0.75 // 15 de 20. El 0,60 dejaba encabezar a quien tiene 12 posturas.
PRIOR = 0.5 // 50 %: la línea de «responder al azar», y también el encogimiento por poca cobertura
PARA cada partido p:
sim = 0 ; base_num = 0 ; conf = 0
peso_conocido = 0 ; peso_respondido = 0
PARA cada pregunta i con respuestas[i] != SALTADA:
w = peso_defecto * (importante[i] ? W_IMPORTANTE : 1)
SI w == 0: CONTINUAR
peso_respondido += w
v = posturas[p].valor
SI v == null: CONTINUAR
c = peso_confianza // si falta, 1. No multiplica otra vez la marca dudosa: el JSON ya trae el ×0,75
peso_conocido += w // la confianza NO entra aquí
s = 1 - |respuestas[i] - v| / 4
E = 0,75 − v²/16
0,75 si v=0; 0,6875 si |v|=1; 0,50 si |v|=2
SI c <= 0: CONTINUAR
sim += w * c * s
base_num += w * c * E
conf += w * c
SI conf == 0: afinidad[p] = SIN_DATOS ; CONTINUAR
bruta = sim / conf
base = base_num / conf
lift = (bruta - base) / (1 - base) si bruta >= base
(bruta - base) / base si bruta < base
centrada = 0,5 + 0,5 * lift
cobertura = peso_conocido / peso_respondido
afinidad = cobertura * centrada + (1 - cobertura) * PRIOR
fiable = cobertura >= COBERTURA_MINLa confianza solo decide qué preguntas pesan más dentro de un partido. Un partido documentado con guías no se acerca al 50 % por eso. Esa era la variante V1, y no se usa: penalizaba la calidad de la fuente, no la distancia política.
La esperanza sale de integrar una respuesta uniforme en [−2, +2]: E[|r − v|] = (v² + 4) / 4, y E[1 − |r − v| / 4] = 0,75 − v²/16. Con la escala discreta de cinco botones era 0,70 / 0,65 / 0,50. El deslizador reparte la probabilidad entre todo el tramo, así que una postura intermedia coincide más a menudo con el azar y su línea de base sube.
Ejemplo: el usuario responde +2 y el partido tiene −1. Entonces la similitud bruta es 0,25. Como una postura ±1 ya coincide bastante con una respuesta continua al azar (esperanza 0,6875), el porcentaje mostrado queda por debajo de 50 %. Una coincidencia perfecta en un extremo sigue siendo 100 %: la esperanza de |v| = 2 es 0,50 y el hueco hasta 1 se llena entero.
Cómo se trata el null:
- Un
nullno cuenta como 0 ni como desacuerdo: se quita del cálculo solo para ese partido. - El encogimiento hacia el 50 % se aplica solo cuando faltan posturas. Sin él, un partido con pocas posturas documentadas podría salir arriba por coincidir en las pocas que tiene.
- Hay que mostrar la cobertura, por ejemplo: "basado en 7 de 10 respuestas".
- Con cobertura por debajo del 75 % del peso respondido, o con menos de 8 posturas en el dossier, la etiqueta es «datos limitados». Esos porcentajes no encabezan el resultado ni la imagen para compartir. En las 20 del test, 75 % son 15 posturas. El corte anterior, 60 %, coincidía exactamente con Frente Obrero (12 de 20).
Versiones:
- El test: 20 afirmaciones políticas, las que llevan
en_version_rapida: true. El progreso dice «4 de 20». No hay una segunda versión: la completa solo añadía cinco ganchos de peso 0, que no cambian el resultado. - Fuera quedan P04 (salario mínimo) y P07 (concertada). Son las menos discriminantes: solo 6 de los 13 partidos del ranking tienen postura, y en P04 la dispersión es la más baja de todas (desviación 0,76, sin un polo en contra). P20 sigue dentro porque separa a SALF de Vox.
De la situación a la afirmación
Cada fila es la misma pregunta de siempre. Las posturas de los partidos no cambian: siguen referidas a la afirmación original. En «ver por qué» se muestran la situación, el porcentaje, los dos polos y esa afirmación.
| Id | Situación en pantalla | Afirmación original | 0 % (−2) | 100 % (+2) |
|---|---|---|---|---|
| P01 | Una familia con un patrimonio grande recibe otra herencia. Si hay un impuesto aparte, paga más por esa riqueza; si no, sigue pagando como ahora. | Las personas con grandes patrimonios deberían pagar un impuesto específico sobre su riqueza. | Que siga pagando como ahora. | Que pague un impuesto aparte por esa riqueza. |
| P02 | Te bajan el IRPF: ganas unos euros más al mes, pero hay menos dinero para servicios públicos. | Habría que bajar impuestos como el IRPF, aunque eso obligue a reducir el gasto público. | Prefiero mantener el impuesto y el dinero de los servicios. | Prefiero pagar menos, aunque haya menos dinero para servicios. |
| P03 | Tu casero quiere subir el alquiler un 20 %. Tú pagarías más cada mes y él ingresaría más por el piso. | Las administraciones deberían poder limitar por ley el precio del alquiler en las zonas más tensionadas. | Que pueda subirlo. | Que la ley pueda frenar esa subida. |
| P05 | En tu trabajo te proponen salir media hora antes, con el mismo sueldo. Tú ganas tiempo libre y la empresa cuenta con menos horas de trabajo. | La jornada laboral máxima debería reducirse por ley de 40 a 37,5 horas semanales sin rebajar el sueldo. | Que la jornada siga como hasta ahora. | Que la jornada baje esa media hora, sin bajar el sueldo. |
| P06 | Para una prueba, el hospital público tiene lista de espera y una clínica privada tiene hueco antes. Hacerla en la clínica acorta la espera y la paga la sanidad pública. | Para reducir las listas de espera, la sanidad pública debería concertar más servicios con clínicas y hospitales privados. | Prefiero hacerla en el hospital público, aunque espere. | Prefiero hacerla antes en la clínica, pagada por la sanidad pública. |
| P08 | Alguien llega a la frontera sin permiso. Un control más estricto revisa mejor el paso y hace más difícil cruzar. | España debería endurecer su política migratoria, con más control de fronteras y más expulsiones de personas en situación irregular. | Que el control en la frontera siga como está. | Que el control en la frontera sea más estricto. |
| P09 | Alguien que ya vive y trabaja en España no tiene papeles. Lleva el tiempo suficiente para pedir un permiso. | Las personas extranjeras sin papeles que ya viven y trabajan en España deberían poder regularizar su situación. | Que no pueda regularizar su situación. | Que pueda regularizar su situación. |
| P10 | El colegio de tus hijos y el ambulatorio de tu barrio dependen de tu comunidad autónoma. Se plantea que vuelvan a depender del Gobierno de España. | Algunas competencias autonómicas, como educación o sanidad, deberían volver a ser gestionadas por el Estado. | Que sigan en manos de la comunidad. | Que educación y sanidad las lleve otra vez el Estado. |
| P11 | En tu comunidad, mucha gente pide votar si quiere seguir en España o independizarse. El voto tendría que pactarse. | Si una comunidad autónoma lo pide de forma mayoritaria, debería poder celebrar un referéndum pactado sobre su independencia. | Que esa votación no se celebre. | Que pueda celebrarse si se pacta y hay una petición mayoritaria. |
| P12 | Un vecino tenía una causa por el procés catalán. Si la amnistía la deja sin efecto, la causa no sigue; si no, continúa. | La ley de amnistía para los implicados en el procés catalán ha sido positiva para la convivencia. | Que la causa siga. | Que la amnistía deje la causa sin efecto. |
| P13 | La parte de impuestos que pagas podría decidirla y gastarla tu comunidad autónoma, no el Estado. | Las comunidades autónomas deberían tener mucha más capacidad para recaudar y gestionar sus propios impuestos. | Que los impuestos sigan más en manos del Estado. | Que tu comunidad recaude y gestione muchos más impuestos. |
| P14 | El jefe del Estado es el rey. No sale de unas elecciones, y la Constitución lo establece así. | La monarquía parlamentaria es la forma de Estado más adecuada para España. | Preferiría otra forma de Estado. | La monarquía parlamentaria me parece la forma adecuada. |
| P15 | Se propone escribir en la Constitución el derecho a interrumpir el embarazo dentro del plazo. Quedaría más protegido y sería más difícil cambiarlo. | El derecho al aborto debería quedar garantizado en la Constitución. | Que no se lleve a la Constitución. | Que quede garantizado en la Constitución. |
| P16 | Un familiar con una enfermedad irreversible pide la eutanasia. Si sigue siendo un derecho, la ley se lo permite; si deja de serlo, no. | La eutanasia debe seguir siendo un derecho regulado por ley en España. | Que deje de ser un derecho. | Que siga siendo un derecho regulado. |
| P17 | La central nuclear que da luz a tu zona tiene fecha de cierre. Alargarla mantiene esa producción y aplaza el cierre. | España debería alargar la vida de sus centrales nucleares más allá del calendario de cierre previsto (2027-2035). | Que cierre en la fecha prevista. | Que alargue su vida más allá de ese calendario. |
| P18 | En el campo y en la fábrica del polígono cambian las normas ambientales. Mantener el calendario sigue ese ritmo; frenarlo deja más tiempo. | Las políticas contra el cambio climático están yendo demasiado deprisa y perjudican al campo y a la industria. | Que el calendario climático se mantenga. | Que el calendario climático se frene. |
| P19 | En los presupuestos que pagas con tus impuestos, la partida de defensa sube de forma clara. | España debería aumentar de forma significativa su gasto en defensa. | Que no aumente de forma significativa. | Que el gasto en defensa suba de forma significativa. |
| P20 | En las fiestas de tu ciudad hay una corrida de toros. La ley puede mantener su protección como patrimonio o retirarla. | La tauromaquia es patrimonio cultural y debe seguir protegida por ley. | Que la ley retire esa protección. | Que la ley mantenga esa protección. |
| P21 | En una obra cerca de tu casa aparecen restos de una fosa de la Guerra Civil. Exhumarlos es una actuación pública; no hacerlo es dejarlos donde están. | Son necesarias políticas públicas de memoria democrática, como exhumar fosas de víctimas del franquismo y retirar símbolos de la dictadura. | Que no haya una actuación pública. | Que se exhume esa fosa. |
| P22 | Vuelves de viaje y hay gente viviendo en tu piso sin tu permiso. La ley puede tardar meses en desalojarlos, o hacerlo en uno o dos días. | La ley debería permitir desalojar a los okupas de una vivienda en un plazo de 24 a 48 horas. | Que el desalojo siga el trámite más largo. | Que se pueda desalojar en 24 o 48 horas. |
P04 (salario mínimo) y P07 (concertada) no están en la rápida ni en la completa. Siguen con su texto de afirmación y sin polos.
Cuando la afirmación original junta dos medidas, la pantalla se queda con una. P08 pregunta solo por el control en la frontera; las expulsiones siguen en la afirmación original y se leen en «ver por qué». P21 pregunta solo por exhumar la fosa; retirar símbolos de la dictadura sigue en la afirmación original.
Los ganchos de la versión completa no puntúan. No tienen afirmación de partido. El 100 % es estar de acuerdo con la frase tal como está escrita:
- I01. «Me veo más viviendo en un pueblo tranquilo que en una gran ciudad.» El 0 % es «Me veo en una gran ciudad.» y el 100 % es «Me veo en un pueblo tranquilo.».
- I02. «La tortilla de patatas tiene que llevar cebolla.» El 0 % es «Sin cebolla.» y el 100 % es «Con cebolla.».
- I04. «Los perros deberían poder entrar en bares y restaurantes.» El 0 % es «Mejor que no entren.» y el 100 % es «Que puedan entrar.».
- I06. «Me informo más por redes sociales (TikTok, YouTube, X…) que por la tele, la radio o la prensa.» El 0 % es «Me informo más por tele, radio o prensa.» y el 100 % es «Me informo más por redes.».
- I08. «Antes una caña en el bar de siempre que un brunch en un sitio de moda.» El 0 % es «Prefiero un brunch en un sitio de moda.» y el 100 % es «Antes una caña en el bar de siempre.».
Colores
El color no entra en el cálculo. Cada partido del ranking lleva el color corporativo público habitual (color en partidos.json), con la fuente en color_fuente. Si sobre blanco no llega al contraste AA de texto (4,5:1), se oscurece sin cambiar el tono. En modo oscuro, si ese color no llega a 4,5:1 sobre el fondo #121212, se aclara lo mínimo sin cambiar el tono. Si dos colores quedan a menos de 70 de distancia RGB, uno usa rayas, puntos o borde para que la barra se distinga. El porcentaje usa el color del texto, no el del partido.
Coincidencia entre dos personas
No es la afinidad con un partido. En cada frase que las dos han respondido, la similitud es 1 − |respuestaA − respuestaB| / 4. La coincidencia es la media. 100 % es responder igual. Si las dos mueven el deslizador al azar, uniforme en [−2, +2], lo esperable es 2/3 (cerca del 67 %), no 0,50 ni el 0,60 de los cinco botones: E[|A − B|] = 4/3. |diferencia| ≤ 1 se lista como «pensáis parecido».
Por temas
Economía, sociedad y territorio son los tres ejes que ya existen. No hay un bloque aparte de vivienda. En cada eje se nombra el partido del ranking con más afinidad solo si hay al menos dos frases respondidas y su cobertura en ese eje llega al 75 %. Si nadie cumple, ese tema no se muestra.
4. Nota de neutralidad (cómo se evita el sesgo)
- Sesgo de aquiescencia. De las 22 afirmaciones políticas:
- 11 van en sentido progresista, de izquierda o autonomista.
- 11 van en sentido conservador, de derecha o centralista.
- El test publica 20. Deja fuera P04 (izquierda) y P07 (derecha), así que en pantalla el reparto sigue siendo 10 y 10. P20 separa a SALF de Vox.
- Redacción. En la rápida y en la completa, la pantalla muestra una situación cotidiana. La afirmación codificada se conserva en
texto_originaly se enseña en «ver por qué» y en la tabla de más abajo. El 100 % del deslizador significa acuerdo con esa afirmación, aunque la situación esté contada al revés. Se alterna el sentido: unas afirmaciones originales ya iban en sentido conservador o de derechas, y el polo derecho del deslizador no es siempre el mismo lado ideológico. No se usan nombres de partidos ni de líderes, ni estereotipos de delito o de cultura para hablar de migración. P04 y P07 no se reescriben: no entran en ninguna de las dos versiones. - Trazabilidad. Cada valor lleva URL y justificación. Las inferencias van marcadas como
dudosa. Se publican datos y metodología completos. - Reglas uniformes. Se aplica la misma tabla de codificación (§1) a todos los partidos. Ninguna postura se ajusta "a ojo" para que el resultado parezca equilibrado.
- Sin ventajas por tamaño.
- El cálculo no usa encuestas, escaños ni el voto pasado del usuario.
- En la pantalla de resultados, los partidos se presentan en orden aleatorio hasta que se ordenan por afinidad.
- El color identificativo no cambia el tamaño ni el porcentaje. Solo distingue la barra y las siglas del primero.
- `null` honesto, línea de base y cobertura visible. No se rellenan huecos con suposiciones. El 50 % es la coincidencia del azar, no un premio al centro. El encogimiento hacia el 50 % evita premiar a quien tiene menos posturas documentadas. La confianza de la fuente no entra en ese encogimiento.
- Preguntas indirectas fuera del cálculo. Peso 0, porque no hay evidencia verificada de correlación con partidos concretos.
- Lenguaje del resultado. Se habla de "coincidencia de posturas", nunca de "deberías votar a". Se recuerda al usuario que lea los programas.
- Derecho de réplica. Cualquiera puede proponer una corrección si aporta una fuente pública. El procedimiento está en
CONTRIBUTING.md: partido, pregunta, valor propuesto y URL. Las correcciones aceptadas quedan en el historial del repositorio. - Actualización. A 8-9 de octubre de 2026 ningún partido había publicado programa para el 29N. Cuando se publiquen, hay que:
- re-codificar las posturas con los programas 2026;
- cerrar si Podemos y el Frente Amplio concurren juntos. Si lo hacen, se fusionan sus fichas o se muestra la de la coalición.
- Privacidad. El cálculo es local. No se usan cookies de seguimiento vinculadas a las respuestas. Si se añade analítica, debe ser agregada y sin respuestas.
5. Limitaciones conocidas
- Muchas posturas regionales se infieren de votaciones en el Congreso, no de declaraciones sobre la afirmación exacta.
- Algunas votaciones son de 2021-2022, con composiciones distintas (Unidas Podemos, JxCat).
- SALF (10/20 en el test, 10/22 en el dossier), CC (9/20, 9/22) y Frente Obrero (12/20, 13/22) no llegan al 75 % de cobertura cuando se responde a todo. Salen con «datos limitados» y no encabezan el resultado. Es intencionado. Con el umbral viejo del 60 %, Frente Obrero sí entraba en estas 20.
- UPN, PCTE, PACMA, Compromís, Teruel Existe y CUP tienen entre 1 y 7 posturas. Su porcentaje solo se muestra en «ver todos», con la etiqueta.
- Quien no tiene posturas (por ejemplo Escaños en Blanco) es una ficha, sin porcentaje.
- Con respuestas al azar el primer puesto no se reparte por igual: la derecha tiene menos partidos con datos suficientes y la izquierda se fragmenta. Con el umbral del 60 %, 1000 respuestas uniformes de 0 a 100 (semilla 11, las 20 del test) dejaban primero a Frente Obrero 128 veces, el segundo tras el PP (199). No era solo que sus posturas sean extremas: 8 de las 12 conocidas son ±2, y para |v| = 2 la línea de base ya es 0,50, así que una racha alta no se corrige. Vox tiene las 20 en ±2 y aun así salía menos (112). La causa es la varianza de una media de 12 preguntas, sentada justo en el corte del 60 %: el encogimiento hacia el 50 % (afinidad = 0,60 × centrada + 0,40 × 0,50) no basta para que un 0,70 de bruta deje de ganar a un partido completo que ronda el 0,50. El corte pasa al 75 % del peso respondido, la misma regla para todos. Quien responde exactamente las posturas de un partido sigue con cobertura 1 y en el 100 %: no se exige un mínimo absoluto de 15 posturas si el usuario no ha contestado las que faltan. Con ese corte, la misma simulación deja el primer puesto en PP 216, Vox 161, PSOE 132, Junts 111, PNV 70, Sumar 68, Bildu 66, BNG 66, ERC 63 y Podemos 47. Frente Obrero, SALF y CC quedan en cero. El cociente máximo/mínimo entre los diez con más posturas en el dossier baja de 4,9 (199/41) a 4,6 (216/47).
- En la versión rápida, Bildu y Podemos siguen muy cerca: solo se separan con claridad en una pregunta. P20 separa a SALF de Vox.
- El eje territorial tiene pocas preguntas.
- Revisión legal pendiente antes de publicar: conviene confirmar con asesoría jurídica si un test así está afectado por las restricciones de la LOREG sobre la difusión de sondeos en los días previos a la votación. No es un sondeo, porque no recoge datos, pero hay que verificarlo.