Det er i skrivende stund ca tre døgn til NIPU dataene slippes i forbindelse med ESMO, og som lovet kommer derfor et lengre innlegg om simuleringer knyttet til det. Skulle helst ha kommet med dette litt tidligere, men det tok dessverre litt lenger tid enn planlagt.
For å ta helt kort om studien for eventuelt nye lesere, så er NIPU en randomisert fase 2 studie, der Ultimovacs sitt legemiddel UV1 testes i kombinasjon med sjekkpunkthemmerene Ipilimumab og Nivolumab fra Bristol Meyer Squibb (BMS) i 2.linje brysthinnekreft med spredning. Pasientene har først blitt behandlet med kjemoterapi, før de ble innrullert i studien. Det er totalt 118 pasienter, der halvparten får Ipilimumab + Nivolumab, og den andre halvparten får dette i kombinasjon med UV1. Randomiserte studier regnes som gullstandarden, siden man da med stor sikkerhet kan si hvorvidt legemiddelet som testes fungerer eller ikke. Siden dette er en fase 2 studie har studien likevel færre pasienter og dermed et mindre robust design enn typiske fase 3 studier.
Designet til NIPU har tidligere blitt beskrevet i denne artikkelen, og gjentatt en rekke ganger på forumet: NIPU: a randomised, open-label, phase II study evaluating nivolumab and ipilimumab combined with UV1 vaccination as second line treatment in patients with malignant mesothelioma | Journal of Translational Medicine | Full Text
Det sentrale her er at alpha nivået er ensidig og 0.1. Alpha defineres på forhånd når studien designes for å beregne N, altså hvor mange pasienter som trengs i studien for å vise stor nok forskjell mellom armene til å si noe om effekten til legemiddelet som testes. For å finne ut av dette benyttes det som regel en log-rank test for å beregne p-verdien. Selve effekten beregnes med Cox Proportional Hazards model. Om p-verdien blir lavere enn alpha, nås endepunktet. I Juni kom meldingen om at primærendepunktet ikke ble nådd. Dette var da for PFS, progresjonsfri overlevelse. Den uavhengige komiteen kom frem til at primærendepunktet ikke ble nådd, men lokal komité kom frem til at studien nådde primærendepunktet.
De ulike radiologene tolket bildene forskjellig. Det betyr at p-verdien for dataene tolket av de lokale radiologene var under 0.1, mens p-verdien for dataene som ble tolket av radiologene til den uavhengige komiteen var over 0.1. Det var altså samme statistiker som gjorde beregningene, mens radiologene tolket bildene forskjellig. Dette er diskutert hyppig på forumet. Det som også var spennende var at det ble beskrevet i meldingen at det var en positiv trend i favør av armen med UV1. Det er hovedsakelig OS data som skal presenteres på ESMO, og som jeg heretter skal fokusere på i innlegget. I fase 3 studier har som regel sekundærendepunktene en forhåndsbestemt tosidig alpha på 0.05. Jeg er usikker på om dette er tilfellet for en slik fase 2 studie som NIPU, som da ville vært tosidig alpha=0.20. Jeg tror ikke det er slik, men nivåene kan være en god retningslinje. Tosidig alpha på 0.20 tilsvarer ensidig alpha=0.1.
De tekniske detaljene med matematikken som ligger bak modellen er beskrevet i detalj i et innlegg om INITIUM som jeg skrev for et år siden. Jeg skal ikke gå like detaljert inn på det nå, så det ligger her om noen vil nerde litt ekstra: Ultimovacs Fundamentale forhold (ULTI) - #1277 av Boblegutten
Referansestudie og modellering av kontrollarm
Checkmate 743 har blitt omtalt på forumet som referanse for NIPU. Det var en fase 3 studie for Ipilimumab og Nivolumab, som utgjør kontrollarmen i NIPU, og som førte til godkjenning i brysthinnekreft med spredning. Imidlertid var dette for 1L, der pasientene i NIPU som nevnt er 2L. Jeg anser det dermed som usannsynlig at pasientene i kontrollarmen for NIPU følger KM-kurven for Checkmate 743. Det er imidlertid to andre studier for 2L, INIITATE og MAPS2. NIPU var designet basert på INITIATE. Problemet med INITIATE er at det meg bekjent ikke er publisert et KM-plot for OS, bare for PFS. Det finnes for MAPS2. Jeg har derfor benyttet MAPS2 når jeg har beregnet kontrollarmen. Det var 31% 3L i denne studien, som slikt sett er en svakhet når det brukes som referanse. Samtidig var mOS 15.9 mnd i MAPS2, mot 12.7 mnd i INITIATE som kun hadde 2L pasienter. Jeg tenker dermed MAPS2 er et fint utgangspunkt. Kilden er en slide fra en presentasjon som ble holdt for fire år siden:
Modellen min baserer seg på at jeg rekonstruerer Kaplan Meier plottet fra det jeg bruker som referansestudie, og deretter tilpasser jeg en funksjon som jeg trekker tall fra som utgjør de syntetiske pasientene i kontrollarmen. Det var ikke helt rett frem å gjøre dette for MAPS2. Problemet er at den ene kurven med risk-tabell er ganske umoden, som kan finnes her:
https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(20)32714-8/fulltext
Dette er ganske umodent, men det finnes et nyere plot fra presentasjonen nevnt ovenfor:
Det er da plottet til høyere som er av interesse. Den røde kurven er Ipilimumab + Nivolumab armen, mens de gule er konfidensintervallene. Problemet er at det ikke inneholder en risk-tabell, som man har i plottet ovenfor. Løsningen ble derfor å kombinere plottene og risk-tabellen, og delvis lese av det siste plottet manuelt i kombinasjon med rekonstruering av det som kalles Guyot metoden. Detaljer om den står i innlegget jeg lenket til øverst. Dette endte da opp med følgende kurve:
Det er påfallende hvor få vertikale streker det er underveis, altså sensurerte pasienter. Kun en ved 16 måneder. Jeg spekulerer i at det skyldes at pasientene rett og slett ikke har noen andre alternativer etter dette, og aksepterer bivirkningene uten å droppe helt ut av studien. Det er verdt å merke seg at det står at det er 13 sensurerte i det originale plottet, og jeg har antatt at det da er 12 pasienter som ligger bak de vertikale strekene etter 30 mnd.
Jeg baserte meg på delvis eksponentialfordeling i INITIUM, og har gjort det samme her. Det er imidlertid ikke helt åpenbart hvordan denne skulle tilpasses pga lavere minimum followup, og det er et lite platå fra 12-17 mnd her, som ser noe tilfeldig ut. Jeg endte med vanlig ekspontialfordeling, da dette faktisk ga det beste resultatet, da delvis eksponentialfordeling underveis førte til overfitting, dvs at modellen ikke følger den relle trenden. En vanlig hypotese bak KM-plot er at de flater gradvis mer og mer ut. Ved å tilpasse direkte på kurven ovenfor ble det følgende plot:
Den blå kurven er dermed den tilpassede funksjonen for kontrollarmen. Heretter blir den merket som «Ipi+Nivo». Jeg antar kuven flater ut ved 40 mnd. Om dette stemmer er vanskelig å si uten lengre followup, men jeg antar også denne indikasjonen vil følge et platå som er typisk for immunterapi, med noen som responderer godt og skaper et platå i kurven mot slutten. Det ender da med kurven under, der HR er satt til 0.60.
Hazard ratene er henholdsvis 0.0449 og 0.01. Dette utgjør vekstkoeffisientene før og etter 40 mnd. Førstnevnte er basert på den blå kurven i figuren «Kaplan Meier plot vs Survival function», mens sistnevnte er en personlig antagelse.
Modell og eventfordelinger
Meldingen om NIPU kom 07.06.2023. Det var basert på 69 PFS events. 69 events inntraff dermed noe tidligere, ref all vaskediskusjonen. Hvor mange events det var for OS på det tidspunktet er uvisst. Jeg har antatt OS dataene er fra 15.05.2023. Jeg spekulerer har gjort antagelsen om at OS dataene vi får presentert er fra 01.10.2023, og bruker dette som utgangspunkt. Det er da ca tre uker før ESMO. Det kan være mer, det kan være mindre. Jeg tenker det er en grei antagelse, og gidder ikke noen videre diskusjon på det. Jeg har konferert med folk som har bedre peiling enn meg på dette, blant annet @Roc. Jeg har kjørt 80000 simuleringer for begge scenariene, med utgangspunkt i HR=1.00, 0.80, 0.70 og 0.60. Det er mye spredning i simuleringene, og jeg tenker dermed dette gir et robust datasett med nok simuleringer.
Plottet nedenfor viser evenfordeling for kontrollarmen, og krever litt forklaring:
Det man ser for de lyseblå histogrammene er en sannsynlighetsfordeling for at et bestemt events kontrollarmen inntraff 15.05 basert på trekkefunksjonen jeg har benyttet. Det er rett i underkant av 10% sannsynlighet for at det akkurat var 29 eventer på denne datoen. Det samme gjelder 30 events. Dette er ikke det samme som en probability density funksjon for dem som vil nerde litt, men det er beslektet. Man kunne utledet en probability density function basert på overlevelsesfunksjonen ovenfor, men jeg ser ikke helt poenget. Uansett, grunnet dette har jeg kalt y-aksen probility density. Disse stolpene viser da sannsynligheten for hvert event. Dette leder oss over til den røde grafen.
Denne er veldig beslektet til @Ketilaaj sine flotte figurer. Denne viser den kumulative sansynligheten, der hver enkelt verdi for de blå stolpene summeres opp, som gir den trappelignende S-kurven. De blå stolpene summeres til 1. Mot slutten flater det ut, da det heldigvis er veldig liten sannsynlighet for 40 events og høyere. Den ble kalt «Cumulative prob» oppe til venstre pga plassmangel, gadd ikke knote mer med formateringen. Den passerer 50 prosent ved 29 events, og 29 og 30 er de to høyeste stolpene. Jeg har derfor gått for 29 for kurvene lengre ned.
Det er viktig å påpeke de etiske aspektene ved dette. Ledelsen og investigatorene har uttalt at dataene måtte modne mer etter 07.06.2023. Jo mer modne dataene er, altså jo flere events det er, desto lettere er det å konkludere om studien er vellykket. Om HR er lav og noenlunde konstant med tid, blir p-verdien lavere med tiden. Det jeg vil understreke med dette er at selv om jeg har tatt utgangpunkt i 29 og 35 events i kontrollarmen, håper jeg inderlig det reelle antallet er mye lavere for pasientene og de pårørende sin del, og at reelt antall events er langt til venstre i de viste kurvene.
Nå går vi over til event-kurven for 01.10.2023:
Ca 29% sannsynlighet for at det var 34-36 events i kontrollarmen 01.10.2023. 35 events er høyeste stolpe, og også der den røde grafen passerer 50%, så det er dette jeg bruker for kontrollarmen der.
Sensurering og dropout
Som nevnt mener jeg MAPS2 fungerer veldig godt som en ren eventkurve. Imidlertid har jeg lagt til en dropoutfunksjon. Denne dropoutfunksjonen retter jeg kun inn mot langtidsoverlevere. Noen av de syntetiske langtidsoverleverene som ville blitt høyresensurert pga kort followup, blir venstresensurert forde de dropper ut. Derfor blir antagelig mOS 15 mnd istedenfor 16 mnd, som vist i plottene under. I skriptet mitt har man tre kolonner. Den ene er overlevelse, og den andre er dropout, og den tredje er status. Hvis den syntetiske pasienten har overlevese=2 år ved avlesning, mens dropout=1 år, og status=alive, blir den syntetiske pasienten sensurert med overlevelse=1 år. I virkeligheten er dette ofte pga bivirkninger, der det er velkjent at Ipilimumab + Nivolumab gir en del heftige bivirkninger. Dropoutfunksjonen er basert på enkelt ekspoentialfordeling, med en dropoutrate årlig dropoutrate på 0.08. Resultatet var at 4-5 pasienter som regel ble sensurert med denne metoden.
Oppsummering av modellen
I innlegget for INITUM presenterte jeg en slags stegvis algoritme for hva som ble gjort. Det tenker jeg kan være fornuftig her også. Mye er likt, men det blir som nevnt noen forskjeller. Alt dette foregår da i en Python klasse jeg har laget:
- Hazard ratene beregnes ut i fra historiske data, i dette tilfellet OS plottene fra MAPS2. Det samme med breakpoints, altså der jeg antar kurven vil flate ut.
- Det importeres en fil med rekrutteringdatoer, som jeg har fått fra @Polygon. Våre innrulleringsdatoer for NIPU er dermed identiske.
- Pasientene randomiseres. Det gjøres med blokkranddomisering. Det er 17 grupper med 6 syntetiske pasienter, og 4 grupper med 4 pasienter. Da går det opp med 118. Trolig ikke nøyaktig slik det er gjort, men passer til formålet.
- Overlevelsestidspunktene, OS fra MAPS2, beregnes basert på overlevelsesfunksjonen for kontrollarmen. Tidspunktene for den eksperimentelle armen beregnes ved at en HR er input.
- Noen pasienter sensureres basert på metoden beskevet ovenfor.
- Simuleringene stoppes ved en gitt dato, 15.05.2023 og 01.10.2023 respektivt. 80000 simuleringer for hvert datasett.
- Dataene analyseres. I dette tilfellet har jeg laget gjennomsnittlige KM-plot. Eventkurvene ovenfor er også da et resultat av disse simuleringene.
Begrepet gjennomsnittlig KM-plot krever en ekstra forklaring. Når datasettene er generert, 80000 simuleringer i hver av dem, har jeg allerede lagt inn en sortering for overlevelsen til hver syntetiske pasient. Deretter lager jeg et nytt datasett, der jeg sorterer for et bestemt antall events i kontrollarmen. For hver simulering grupperes overlevelsen for hver syntetiske pasient, og gjennomsnittlig overlevelse beregnes. Sånn beregnes dermed gjennomsnittlig KM-kurve for de ulike eventfordelingene nedenfor.
Sammen med KM-plottene er det en tabell med relevant tilhørende informasjon for ulike effektparametere. Her er forklaring:
Events_c: OS events i kontrollarmen
Events_e: OS events i eksperimentell arm
95% CI upper: Øvre 95% konfidensintervall for HR. Alle konfidensintervall er beregnet med Greenwoods expoential formula, som virker å være vanlig basert på ulike protocoller jeg har sett på.
80% CI upper: Øvre 80% konfidensintervall for HR
HR: Hazard ratio. Beskriver effektforskjellen mellom armene. Beregnet med Cox Proportional Hazards model.
80% CI lower: Nedre 80% konfidensintervall for HR
95% CI lower: Nedre 95% konfidensintervall for HR
P-value: P-verdien beregnet med log-rank test. Beskriver hvorvidt det faktisk er en effektforskjell. Merk at det det her per definisjon er tosidig p-verdi.
Kaplan - Meier plot
Nå er det endelig tid for KM-plottene. Jeg viser først plottene fra 15.05.2023, basert på 29 events i kontrollarmen.
De vertikale strekene utgjør sensurerte pasienter. Noen f.eks pga bivirkninger, ref avsnittet ovenfor, men de fleste pga kort followup og tilhørende høyeresensurering. mOS er vist for armene med grå streker. For kontrollarmen er dette alltid rundt 15mnd, og øker med lavere HR, logisk nok. Siden det er visualisert tok jeg det ikke med i tabellen. At de ikke er nøyaktig like i dette tilfellet skyldes litt få simuleringer. Nedover vil man se at alle HR og P-verdi minker sammen med de øvre konfidensintervallene, mens det blir færre eventer i eksperimentell arm. Det er ikke særlig interessant før HR < 0.80, så de neste plottene kommenterer jeg ikke. HR=0.90 er en fail rett og slett.
Nå begynner det å bli litt interessant, HR=0.80. Bjørheim nevnte i Radium at OS var klinisk relevant, som kan tolkes til HR<0.80. P-verdien her er fortsatt veldig høy.
Nå har man en tydelig trend, men fortsatt ikke signifikant. Det er omtrent noe slik jeg tenker var tilfellet i mai/juni. Det kan nevnes at høyeste mulige HR for P-verdi < 0.20 var 0.74 basert på simuleringene. Mest sannsynlig krevdes det en høyere HR, som dette plottet indikerer.
Grensen for statistisk signifikans i forhold tosidig alpha=0.20 nås her. Dette tilsvarer en ensidig alpha på 0.073. Dette er i grunn tydelig trend. Jeg mistenker OS dataene var noe dårligere enn dette, ref kommentar ovenfor.
En observasjon er at mPFS for den eksperimentelle armen ikke flytter seg noe særlig heretter, og heller ikke sammenlignet med forrige plot. Man ser også tydelig at hver strek nedover blir større, pga færre pasienter «at risk», som
@Polygon har nevnt noen ganger.
Der ble endelig p-verdien under 0.05. Trolig ikke spesielt relevant. Kommunikasjonen 07.06.2023 indikerer at p-verdien var over 0.20, ref at dataene måtte modnes mer for at en konklusjon kunne tas.
Siste scenarioet jeg tar med, som nok er betydelig bedre enn hva som var tilfellet.
Nå er det over til simuleringene for 01.10.2023, som er mest spennende. Starter som nevnt med 35/35, og går et et nedover per plot i eksperimentell arm.
HR under 0.80, men fortsatt ikke signifikant.
Statistisk signifikant i forhold grensen på 0.20. Det er noe slikt jeg tror og håper på. Om resultatene er enda bedre vil det være helt fantastisk. Jeg fikk at maksimal HR for at p-verdien blir under 0.20, er 0.752.
Som man ser påvirkes HR og p-verdi veldig lite med et event mindre sammenlignet med tidligere. Dette går på modning av dataene.
Der havnet p-verdien under 0.05. Man kunne justert eventfordelingen med et litt annet antall i kontrollarmen. Det blir litt mye og rotete nå, kan evt komme med flere plot senere om det er ønskelig.
Scenariebe nedenfor anser jeg som helt urealistiske, men tok det uansett med.
HR=0.48 er helt vanvittig, og ikke noe jeg tror skjer. Som nevnt tror jeg HR rundt 0.70 med p-verdi under 0.20 er realistisk på ESMO. Da vil jeg også være veldig fornøyd med resultatene, og noe som kan forsvare en fase 3 studie. I et slikt tilfelle vil det alltid være eksperter som er kritiske til resultatene, siden p-verdien ikke er under 0.05, som er bransjestandard for fase 3 studier når statistisk signifikans avgjøres der.
Under har jeg lagt til to tabeller for 15.05.2023 og 01.10.2023. Det er informasjonen for de små deltabellene for hvert plot slått sammen.
Tabell for 15.05.2023:
Tabell for 01.10.2023:
For å oppsummere, er da disse resultatene basert på de historiske dataene fra MAPS2, og alle input beskrevet ovenfor i forbindelse med dette. Basert på kommunikasjonen tror jeg den ensidige p-verdien var over 0.1 i juni. Jeg tror spekulerer i at HR var rundt 0.70 på det tidspunktet. Jeg tror denne trenden har holdt seg, og at dataene nå er modne nok til å være statistisk signifikante i forhold til ensidig p-verdi < 0.10. Jeg tror ikke dataene vil vise ensidig p-verdi < 0.025, men det ville vært helt fantastisk. Om HR er på lavt 0.70 tall eller lavere antar jeg at selskapet vil få mye større oppmerksomhet fremover, både nasjonalt og ikke minst internasjonalt. Tenk det, en universell kreftvasksine vil i så fall med stor sansynlighet vise at det fungerer i en veldig vanskelig indikasjon, der kjemoterapi og sjekkpunkthemmere fungerer dårlig. Foreløpig svar kommer om tre døgn, det blir veldig spennende.