Anpheros Research · Motor de patrones de salud

La salud es una serie temporal.
La leemos con reglas que puedes comprobar.

Un historial médico suele leerse valor a valor. Lo que más importa, como un descenso lento, una semana distinta de las demás o un síntoma que vuelve una y otra vez, solo aparece a lo largo de meses. Anpheros lo encuentra con estadística fija y versionada, y cada hallazgo trae los datos en los que se basa.

Fig. 0 · Paciente sintético, 180 días de presión sistólica. Puntos: valores diarios. Línea: tendencia de Theil–Sen.

01 · El problema

Una instantánea oculta el cambio.

Lo que suele mostrar un historial

128 mmHg

Última presión sistólica. Parece normal y no dice nada de hacia dónde va.

Lo que informa el motor

−7.7 mmHg / 6 meses

Paciente sintético con un descenso de 8 mmHg introducido durante seis meses. La pendiente se recupera con su periodo, su incertidumbre y las mediciones en las que se basa.

Hoy se pide a los modelos de IA que lean historiales médicos. Con unos pocos números, un modelo adivina la tendencia. Creemos que la tendencia debe calcularse, no adivinarse, y después entregarse al modelo con sus pruebas.

02 · Método

Cuatro preguntas, cuatro métodos.

Cada pregunta tiene un único método estadístico, elegido para datos escasos, irregulares y personales. Cada método lleva un número de versión, así que sus resultados se pueden reproducir.

trend · 1.1.0

¿Sube o baja?

Pendiente de Theil–Sen con la prueba de Mann–Kendall sobre un valor por día. Los datos densos del reloj se reducen a medianas semanales. La prueba se corrige cuando los días vecinos se parecen entre sí (Yue–Wang).

baseline_deviation · 1.1.0

¿Es esta semana inusual para esta persona?

Los últimos 7 días se comparan con los días 8 a 60, con Mann–Whitney o con una diferencia de medias ajustada por autocorrelación AR(1). La comparación es con lo normal de la persona, no con un promedio de población.

event_rate_change

¿Se registra un síntoma más a menudo?

Días con síntoma sobre los días en que la persona registró algo: los últimos 30 días frente a los 90 anteriores, con una prueba exacta. Un día sin registros no cuenta como un día sin el síntoma.

recurrence

¿Vuelve con un ritmo?

Los intervalos entre los inicios de los episodios se comparan con una simulación de Monte Carlo de episodios colocados al azar. La simulación parte de la huella de los propios datos, así que el mismo historial da siempre el mismo valor p.

La regla para «respaldado»

q < 0.05 y |cambio| ≥ umbral

Todas las pruebas de una ejecución se corrigen juntas con Benjamini–Hochberg. Un hallazgo solo tiene respaldo estadístico cuando el valor q corregido es pequeño y el cambio es lo bastante grande para importar en esa medición. Todo lo demás se informa como descripción, marcado como débil o no probado.

03 · Validación

Hecho para callar.

Un motor de patrones que encuentra algo en todo el mundo es peor que no tener ninguno. Lo probamos con pacientes sintéticos sin nada introducido, y con otros con patrones conocidos de tamaño conocido.

0%

de 600 ejecuciones sobre historiales sintéticos sin patrón produjeron algún hallazgo respaldado. Objetivo: como máximo un 5%.

0%

fue la tasa de falsas alarmas de nuestra primera prueba de desviación con datos de reloj. Los días vecinos se parecen, y la prueba no lo sabía. Corregimos la autocorrelación antes de publicar nada.

0 ms

para una ejecución completa sobre un año típico del historial de una persona. Un historial denso de cinco años tarda 236 ms.

Fig. 1 · Sensibilidad: proporción de patrones introducidos que se encuentran como respaldados, con un efecto del doble del umbral

Síntoma que vuelve cada semana100%
Salto de la frecuencia cardiaca en reposo84%
Pendiente de la presión arterial67%
Frecuencia de un síntoma ×324%

El detector de frecuencia de síntomas es el más débil: detecta una triplicación aproximadamente una vez de cada cuatro. El motor informa un fallo como «débil» o «no probado», nunca como «sin cambios».

04 · Límites

Lo que se niega a decir.

  • un diagnósticoLos hallazgos describen el historial. Nunca nombran una enfermedad ni sugieren un cambio de tratamiento.
  • una causaUn cambio tras un medicamento nuevo no prueba que el medicamento lo causara, y cada hallazgo lo dice.
  • la opinión de una IANingún modelo de IA analiza los datos. Cada número sale de reglas estadísticas fijas.
  • revisado clínicamenteLos umbrales de un cambio significativo se fijaron con ayuda de la IA y todavía no los ha revisado un médico. Cada hallazgo lo dice en un campo propio.
  • la hora del díaLa hora local de la persona aún no está en el historial, así que no se calculan patrones por hora del día.

05 · Reproducibilidad

Mismos datos. Misma respuesta. Mismo id.

El id de un hallazgo sale de sus datos, de la versión del método y de la configuración. Si el historial cambia, el id cambia, y el id antiguo responde que los datos han cambiado. Un hallazgo se recalcula cuando se pide, nunca se guarda, y cada uno enlaza con las mediciones en las que se basa.

"type": "trend",
"summary_text": "Systolic blood pressure fell by about 7.7 mmHg over 180 days.",
"strength": "moderate",
"statistics": { "p_value": 0.0004, "q_value": 0.0031 },
"evidence_total": 58,
"method": { "name": "trend", "version": "1.1.0" },
"engine_version": "0.2.1",
"review": { "thresholds_reviewed_by_clinician": false },
"safety": { "not_a_diagnosis": true, "causal_claim": false }

Fig. 2 · Hallazgo abreviado de un paciente sintético. Los valores son ilustrativos.

06 · Trabaja con nosotros

Tres puertas de entrada.

Health Pattern Engine 0.2.1 · beta. Los historiales reales solo se analizan con el consentimiento aparte de cada paciente.