Metodología
PulsoRico combina opinión pública con un mercado de predicciones cívicas. Esta página describe, de manera concreta, cómo procesamos los votos, cómo calculamos el margen de error, qué hacemos para evitar manipulación y cómo tratamos los datos sensibles.
Cada voto cuenta. Pero no todos los votos cuentan igual si la muestra que participa no se parece a Puerto Rico. Para corregir el sesgo de auto-selección de quienes deciden votar en línea, aplicamos una ponderación demográfica basada en cinco variables que recogemos en el onboarding:
Cada votante recibe un peso w_i calculado de modo que la distribución
ponderada de la muestra se aproxime a la distribución poblacional conocida
(censo y estimaciones oficiales). Los pesos se truncan en un rango razonable
para evitar que un único respondiente raro domine el resultado.
El cálculo vive en src/lib/weighting/ y se prueba con casos numéricos
verificables a mano. Cualquier persona puede revisar el algoritmo en el
código fuente.
Reportar un porcentaje sin margen de error es engañoso. PulsoRico publica siempre la incertidumbre asociada a cada resultado.
El margen de error se calcula a partir del N efectivo de la muestra ponderada — no del N bruto. Cuando una muestra está fuertemente reponderada, el N efectivo es menor que el número de respuestas, y el margen crece en consecuencia.
La fórmula base es la del peor caso para una proporción al 95 % de confianza:
ME = 1.96 × √(p · (1 − p) / N_eff)
con p = 0.5 para el peor caso. Esto da un intervalo conservador que no
subestima la incertidumbre.
Un mercado de opinión solo es útil si cada persona vota una vez. Para evitar cuentas múltiples (ataque Sybil) usamos varias capas:
(poll_id, user_id): el motor
rechaza un segundo voto del mismo usuario en la misma encuesta.src/lib/rate-limit/).Ningún sistema es perfecto; documentamos las limitaciones en el repositorio público.
La identificación partidista es, bajo el marco de GDPR y prácticas de privacidad equivalentes, un dato sensible. La tratamos como tal:
/perfil/datos) el usuario obtiene una copia
completa de sus respuestas, incluida esta variable.Si en algún momento el usuario decide retirar su consentimiento, la fila
correspondiente en profiles.identificacion_partidista se anonimiza y deja
de contribuir a futuras ponderaciones.
Toda la lógica relevante de PulsoRico es auditable:
src/lib/weighting/ con tests
numéricos.supabase/migrations/.Repositorio público: TODO repo URL — pendiente publicar el repositorio en GitHub.
Cualquier persona — periodistas, investigadores, ciudadanía — puede leer el código y abrir un issue si encuentra un error. La metodología que publicamos en esta página tiene que coincidir, línea a línea, con lo que ejecuta el servidor.