Anpheros Research · Motorul de tipare de sănătate

Sănătatea este o serie în timp.
O citim cu reguli pe care le poți verifica.

Un dosar medical se citește de obicei câte o valoare pe rând. Lucrurile care contează cel mai mult, cum ar fi o scădere lentă, o săptămână care nu seamănă cu celelalte sau un simptom care tot revine, se văd abia în câteva luni. Anpheros le găsește prin statistică fixă și versionată, iar fiecare constatare vine cu datele pe care se sprijină.

Fig. 0 · Pacient sintetic, 180 de zile de tensiune sistolică. Puncte: valorile zilnice. Linie: trendul Theil–Sen.

01 · Problema

O imagine de moment ascunde schimbarea.

Ce arată de obicei un dosar

128 mmHg

Ultima tensiune sistolică. Pare normală și nu spune nimic despre direcția în care merge.

Ce raportează motorul

−7.7 mmHg / 6 luni

Pacient sintetic cu o scădere de 8 mmHg plantată pe parcursul a șase luni. Panta e regăsită, cu perioada ei, cu incertitudinea ei și cu măsurătorile pe care se sprijină.

Modelelor de inteligență artificială li se cere acum să citească dosare medicale. Primind câteva numere, un model ghicește tendința. Credem că tendința trebuie calculată, nu ghicită, și abia apoi dată modelului, împreună cu dovezile ei.

02 · Metoda

Patru întrebări, patru metode.

Fiecare întrebare are o singură metodă statistică, aleasă pentru date puține, neregulate și personale. Fiecare metodă are un număr de versiune, așa că rezultatele ei pot fi reproduse.

trend · 1.1.0

Crește sau scade?

Panta Theil–Sen cu testul Mann–Kendall, pe o valoare pe zi. Datele dense de la ceas sunt reduse la mediane săptămânale. Testul e corectat când zilele vecine seamănă între ele (Yue–Wang).

baseline_deviation · 1.1.0

Este săptămâna asta neobișnuită pentru această persoană?

Ultimele 7 zile sunt comparate cu zilele 8–60, cu Mann–Whitney sau cu o diferență a mediilor ajustată pentru autocorelarea AR(1). Comparația se face cu normalul persoanei, nu cu media unei populații.

event_rate_change

Apare un simptom mai des?

Zilele cu simptom raportate la zilele în care persoana a notat ceva: ultimele 30 de zile față de cele 90 dinainte, cu un test exact. O zi fără nicio notare nu e socotită o zi fără simptom.

recurrence

Revine într-un ritm?

Intervalele dintre începuturile episoadelor sunt testate față de o simulare Monte Carlo a unor episoade așezate la întâmplare. Simularea pornește de la amprenta datelor, așa că același dosar dă mereu aceeași valoare p.

Regula pentru „susținut”

q < 0.05 și |schimbare| ≥ prag

Toate testele dintr-o rulare sunt corectate împreună, cu Benjamini–Hochberg. O constatare e susținută statistic doar când valoarea q corectată e mică și schimbarea e destul de mare ca să conteze pentru acea măsurătoare. Restul e raportat ca descriere, marcat slab sau netestat.

03 · Validare

Făcut să tacă atunci când nu e nimic.

Un motor de tipare care găsește ceva la oricine e mai rău decât niciunul. L-am testat pe pacienți sintetici fără nimic plantat, și pe alții cu tipare cunoscute, de mărime cunoscută.

0%

din 600 de rulări pe dosare sintetice fără niciun tipar au dat vreo constatare susținută. Ținta: cel mult 5%.

0%

a fost rata de alarme false a primului nostru test de abatere pe datele de la ceas. Zilele vecine seamănă între ele, iar testul nu știa asta. Am corectat autocorelarea înainte de orice lansare.

0 ms

pentru o rulare completă pe un an obișnuit din dosarul unei persoane. Un dosar încărcat, de cinci ani, durează 236 ms.

Fig. 1 · Sensibilitate: proporția tiparelor plantate găsite ca susținute, la un efect de două ori pragul

Simptom care revine săptămânal100%
Salt al pulsului în repaus84%
Panta tensiunii arteriale67%
Frecvența unui simptom ×324%

Detectorul de frecvență a simptomelor e cel mai slab: prinde o triplare cam o dată din patru. Motorul raportează o ratare ca „slab” sau „netestat”, niciodată ca „nicio schimbare”.

04 · Limite

Ce refuză să spună.

  • un diagnosticConstatările descriu dosarul. Nu numesc niciodată o afecțiune și nu sugerează o schimbare de tratament.
  • o cauzăO schimbare după un medicament nou nu e o dovadă că medicamentul a provocat-o, iar fiecare constatare spune asta.
  • părerea unui AINiciun model AI nu analizează datele. Fiecare număr vine din reguli statistice fixe.
  • revizuit clinicPragurile pentru o schimbare semnificativă au fost stabilite cu ajutorul AI și nu au fost încă revizuite de un medic. Fiecare constatare spune asta într-un câmp separat.
  • ora din ziOra locală a persoanei nu e încă în dosar, așa că tiparele legate de ora din zi nu se calculează.

05 · Reproductibilitate

Aceleași date. Același răspuns. Același id.

Id-ul unei constatări vine din datele ei, din versiunea metodei și din configurație. Dacă dosarul se schimbă, se schimbă și id-ul, iar id-ul vechi răspunde că datele s-au schimbat. O constatare se recalculează la cerere, nu se stochează niciodată, și fiecare trimite la măsurătorile pe care se sprijină.

"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 · Constatare prescurtată de la un pacient sintetic. Valorile sunt ilustrative.

06 · Lucrează cu noi

Trei uși.

Health Pattern Engine 0.2.1 · beta. Dosarele reale sunt analizate doar cu acordul separat al fiecărui pacient.