Sistema de puntuacion clinica construido unicamente con reglas y metodos estadisticos, sobre 253.680 registros del BRFSS 2015.
El enunciado exige clasificar unicamente con reglas y metodos estadisticos. Adoptamos este criterio explicito, y todo el proyecto lo respeta:
.fit() ni ningun parametro ajustado por optimizacion en todo el repositorio.| Se usa | Por que es estadistica clasica |
|---|---|
| Tablas de contingencia y tasas por celda | Contar. Es el ladrillo de la bioestadistica y hace todo auditable. |
| Chi-cuadrado de independencia | Prueba de hipotesis de 1900, implementada a mano con E = fila x columna / n. |
| V de Cramer | Normaliza el chi-cuadrado. Necesaria porque con n=253.680 todo sale significativo. |
| Odds ratio con IC 95% | Formula cerrada de Woolf sobre el log. Es el lenguaje de la epidemiologia. |
| Weight of Evidence (WoE) | Logaritmo del cociente de verosimilitudes de Bayes. Invariante a la prevalencia. |
| Information Value (IV) | Divergencia de Jeffreys entre las distribuciones de enfermos y sanos. |
| AUC por rangos de Mann-Whitney | Estadistico de rangos, calculado a mano. Sin librerias de ML. |
| Indice de Youden | Maximiza sensibilidad + especificidad - 1 sobre la curva ROC del train. |
Excluido scikit-learn, XGBoost, LightGBM, redes neuronales y cualquier clasificador entrenado. pandas y numpy se usan como calculadora (sumas y logaritmos), nunca como clasificador; el clasificador entregable, nucleo/clasificar.py, corre con biblioteca estandar pura y una prueba automatizada lo verifica.
CDC Behavioral Risk Factor Surveillance System 2015, encuesta telefonica anual. De los 441.456 registros originales con 330 variables se conservan 253.680 respuestas con 21 indicadores mas el diagnostico. Curado en el UCI ML Repository (id 891, DOI 10.24432/C53919).
| Chequeo estructural | Resultado |
|---|---|
| Filas | 253.680 |
| Columnas | 22 |
| Celdas validadas | 5.580.960 |
| Valores nulos | 0 |
| Valores fuera del dominio declarado | 0 |
| Sin diabetes | 213.703 (84.24%) |
| Prediabetes | 4.631 (1.83%) |
| Diabetes | 35.346 (13.93%) |
Se clasifica disglicemia = prediabetes o diabetes (prevalencia 15.76%). Razon clinica: para un tamizaje ambas disparan la misma accion, confirmar con glucosa en ayunas. Razon empirica: separar diabetes de prediabetes con estas 21 variables es casi imposible, y la prediabetes es solo el 1.83% de la muestra.
Ocho reglas de coherencia cruzada entre columnas. Cada una marca filas cuya combinacion de respuestas es logicamente contradictoria.
| # | Contradiccion | Registros | % | Disglicemia |
|---|---|---|---|---|
| R1 | Colesterol alto declarado sin haberse hecho nunca el chequeo | 1.981 | 0.78% | 8.3% |
| R2 | IMC fuera del rango clinicamente plausible (14-60) | 832 | 0.33% | 23.0% |
| R3 | Tiene cobertura de salud pero no pudo ver al medico por costo | 16.775 | 6.61% | 21.3% |
| R4 | Salud autopercibida excelente con 20 o mas dias malos en el mes | 1.398 | 0.55% | 7.2% |
| R5 | Salud autopercibida excelente pero con dificultad seria para caminar | 1.072 | 0.42% | 18.3% |
| R6 | Salud autopercibida mala sin ningun sintoma ni diagnostico | 43 | 0.02% | 16.3% |
| R7 | Dificultad para caminar pero hace ejercicio y 0 dias de mala salud fisica | 6.603 | 2.60% | 27.2% |
| R8 | Evento cardiovascular declarado en menores de 30 anos | 121 | 0.05% | 12.4% |
| Al menos una contradiccion | 27.129 | 10.69% | 21.1% |
Los registros inconsistentes tienen 21.1% de disglicemia frente a 15.1% en los consistentes: la inconsistencia no es ruido aleatorio, correlaciona con la enfermedad.
El 9.42% de las filas esta repetida. La conclusion facil seria borrarlas. Seria un error, y lo demostramos:
| Evidencia | Valor |
|---|---|
| Filas duplicadas con 0 dias de mala salud fisica | 96.2% |
| Filas unicas con 0 dias de mala salud fisica | 57.8% |
| Perfil mas repetido | 59 veces |
| Prevalencia con duplicados | 15.76% |
| Prevalencia si se borran | 17.29% |
IMC: rango observado 12 a 98 (media 28.4). 805 registros superan 60 y 7 declaran exactamente 98, que es el tope de captura de la fuente. 27 estan por debajo de 14. Se marcan como implausibles pero no se borran: los IMC altos reales son casos de alto riesgo genuinos.
Cada variable se cruza con el diagnostico. Ordenamos por Information Value, no por significancia: con 253.680 registros el chi-cuadrado da p<0,001 para practicamente todo, asi que la significancia no discrimina. El tamano del efecto si.
| Variable | IV | V de Cramer | chi-cuadrado | Odds ratio (IC 95%) | Fuerza |
|---|---|---|---|---|---|
| Salud general autopercibida | 0.749 | 0.306 | 23.791 | - | Muy fuerte |
| Presion arterial alta | 0.575 | 0.270 | 18.539 | 4.78 (4.67-4.90) | Muy fuerte |
| Indice de masa corporal | 0.409 | 0.237 | 14.262 | - | Fuerte |
| Grupo etario | 0.366 | 0.190 | 9.173 | - | Fuerte |
| Colesterol alto | 0.335 | 0.210 | 11.218 | 3.24 (3.17-3.32) | Fuerte |
| Dificultad para caminar | 0.298 | 0.222 | 12.519 | 3.70 (3.61-3.79) | Media |
| Ingreso del hogar | 0.224 | 0.173 | 7.617 | - | Media |
| Dias de mala salud fisica | 0.206 | 0.180 | 8.237 | - | Media |
| Cardiopatia o infarto | 0.178 | 0.177 | 7.941 | 3.51 (3.41-3.61) | Media |
| Nivel educativo | 0.127 | 0.133 | 4.471 | - | Media |
| Actividad fisica | 0.100 | 0.121 | 3.738 | 0.50 (0.48-0.51) | Media |
| Chequeo de colesterol (5 anos) | 0.062 | 0.068 | 1.168 | 5.86 (5.22-6.57) | Debil |
| Accidente cerebrovascular | 0.062 | 0.105 | 2.786 | 2.97 (2.85-3.10) | Debil |
| Dias de mala salud mental | 0.040 | 0.077 | 1.517 | - | Debil |
| Consumo elevado de alcohol | 0.032 | 0.057 | 815 | 0.41 (0.38-0.43) | Debil |
| Fumador | 0.029 | 0.063 | 999 | 1.41 (1.38-1.44) | Debil |
| Consume vegetales a diario | 0.025 | 0.059 | 889 | 0.68 (0.66-0.70) | Debil |
| Consume frutas a diario | 0.013 | 0.042 | 449 | 0.79 (0.77-0.81) | Inutil |
| No pudo ver al medico por costo | 0.010 | 0.038 | 366 | 1.41 (1.36-1.46) | Inutil |
| Sexo | 0.007 | 0.030 | 222 | 1.18 (1.15-1.20) | Inutil |
| Tiene cobertura de salud | 0.002 | 0.014 | 50 | 1.21 (1.15-1.27) | Inutil |
Se seleccionan las variables con IV ≥ 0.30, el umbral estandar de "predictor fuerte" en la literatura de scorecards. El criterio es a priori: no se elige mirando el resultado. Quedan 5 variables.
Para cada tramo se calcula WoE = ln( P(tramo | enfermo) / P(tramo | sano) ) y se convierte a puntos enteros con puntos = round( (WoE - WoE_minimo) x K ), donde K = 10.129 es comun a todas las variables y se elige para que el maximo sea 100. Es un cambio de unidades, como pasar de Celsius a Fahrenheit: no altera el orden de los pacientes.
| Variable | Tramo | Registros | Tasa observada | WoE | Puntos |
|---|---|---|---|---|---|
| Salud general autopercibida | Excelente | 45.299 | 3.2% | -1.730 | 0 |
| Muy buena | 89.084 | 8.5% | -0.697 | 9 | |
| Buena | 75.646 | 20.1% | +0.295 | 18 | |
| Regular | 31.570 | 34.3% | +1.024 | 25 | |
| Mala | 12.081 | 40.8% | +1.304 | 28 | |
| Presion arterial alta | No | 144.851 | 7.2% | -0.877 | 0 |
| Si | 108.829 | 27.1% | +0.688 | 15 | |
| Indice de masa corporal | Bajo peso | 3.127 | 6.3% | -1.021 | 0 |
| Normal | 86.099 | 7.3% | -0.862 | 3 | |
| Sobrepeso | 91.176 | 14.5% | -0.100 | 10 | |
| Obesidad I | 44.453 | 23.7% | +0.507 | 16 | |
| Obesidad II | 17.346 | 31.8% | +0.915 | 19 | |
| Obesidad III | 11.479 | 36.8% | +1.136 | 22 | |
| Grupo etario | 18-34 | 24.421 | 2.8% | -1.877 | 0 |
| 35-44 | 29.980 | 6.6% | -0.972 | 10 | |
| 45-54 | 46.133 | 12.1% | -0.311 | 16 | |
| 55-64 | 64.076 | 17.6% | +0.129 | 21 | |
| 65-74 | 55.727 | 23.3% | +0.486 | 24 | |
| 75+ | 33.343 | 22.5% | +0.441 | 23 | |
| Colesterol alto | No | 146.089 | 9.2% | -0.615 | 0 |
| Si | 107.591 | 24.7% | +0.561 | 11 |
Anadir mas factores empeora el resultado. No es una concesion al tiempo disponible, es la decision correcta:
| Variables | Ultima anadida | AUC prueba |
|---|---|---|
| 3 | Indice de masa corporal | 0.7705 |
| 4 | Grupo etario | 0.7875 |
| 5 | Colesterol alto | 0.7930 optimo |
| 6 | Dificultad para caminar | 0.7909 |
| 8 | Dias de mala salud fisica | 0.7862 |
| 11 | Actividad fisica | 0.7848 |
| 16 | Fumador | 0.7863 |
| 21 | Tiene cobertura de salud | 0.7880 |
La causa es la violacion del supuesto de independencia condicional: salud autopercibida, dias de mala salud fisica y dificultad para caminar miden tres veces el mismo sindrome de fragilidad, y un puntaje aditivo lo cuenta tres veces. El modelo corto no es el barato: es el bueno.
Protocolo: deduplicar, partir 70/30 estratificado con semilla fija, construir la tarjeta solo con el 70%, elegir el umbral por indice de Youden solo en el 70%, y reportar todo sobre el 30% restante (68.935 pacientes que el sistema nunca vio).
| Metrica en el corte 62 | Valor | Lectura clinica |
|---|---|---|
| Sensibilidad | 73.8% | de cada 100 enfermos, detecta 74 |
| Especificidad | 70.5% | de cada 100 sanos, descarta 70 |
| Valor predictivo positivo | 34.3% | de cada 100 positivos, 34 tienen la enfermedad |
| Valor predictivo negativo | 92.8% | un negativo descarta con alta confianza |
| Exactitud balanceada | 72.1% | media de sensibilidad y especificidad |
| Exactitud simple | 71.1% | engañosa por si sola, ver nota |
El puntaje no es solo un ordenador de pacientes: sus tramos corresponden a riesgos observados reales, y crecen de forma perfectamente monotona.
| Banda | Puntos | Pacientes | % poblacion | Riesgo observado |
|---|---|---|---|---|
| Muy bajo | 0-34 | 13.939 | 20.2% | 1.74% |
| Bajo | 35-48 | 14.334 | 20.8% | 6.06% |
| Moderado | 49-60 | 13.769 | 20.0% | 13.12% |
| Alto | 61-73 | 13.424 | 19.5% | 23.99% |
| Muy alto | 74-100 | 13.469 | 19.5% | 42.91% |
Entre el quintil mas bajo y el mas alto hay un gradiente de 25 veces en riesgo observado, con grupos de tamano comparable.
El clasificador completo esta embebido en esta pagina: son los 21 enteros de la tabla anterior. Funciona sin conexion y sin servidor.
Declararlas es parte del metodo, no una concesion:
| Limitacion | Consecuencia |
|---|---|
| Todo es autorreportado | No hay HbA1c ni glucosa. 'Diabetes' significa 'un profesional se lo dijo alguna vez': subestima los casos no diagnosticados. |
| Estudio transversal | Mide asociacion, nunca causalidad. Un odds ratio alto no implica que el factor cause la enfermedad. |
| Sin pesos muestrales | El dataset curado no incluye _LLCPWT, asi que las prevalencias no son representativas de la poblacion de EE.UU. |
| Sesgo de cobertura telefonica | Subrepresenta poblacion sin telefono, institucionalizada y de menores ingresos. |
| Datos de EE.UU. de 2015 | La transferibilidad a Panama es limitada; los cortes deberian recalibrarse con datos locales. |
| Prediabetes casi invisible | Solo el 1.83% de la muestra. No se intenta separarla de la diabetes. |
Un tamizaje poblacional con esta tarjeta cuesta cinco preguntas y una medicion de peso y talla. No requiere laboratorio, ni personal especializado, ni conexion.