Regressione di Cox con una covariata tempo-dipendente (una caratteristica cambia nel tempo)
In breve
Alcune caratteristiche cambiano durante l’osservazione: inizia una terapia, avviene un trapianto, un valore di laboratorio viene misurato di nuovo. Trattare una caratteristica simile come un gruppo fisso «è passato prima o poi» crea il bias del tempo immortale (immortal time bias). La regressione di Cox con una covariata tempo-dipendente lo evita: ogni persona porta il valore 0 fino al passaggio e il valore 1 dal passaggio in poi. La si sceglie nella domanda «Quanto tempo passa fino a un evento?» sotto «Altre opzioni» → «Una caratteristica cambia nel tempo».
Il bias del tempo immortale
Chi passa più tardi doveva sopravvivere fino ad allora. Se una persona simile viene contata nel gruppo di chi è passato fin dall’inizio, quel gruppo sembra vivere più a lungo solo per questo errore. Misurato in una simulazione con un vero hazard ratio di 1: il gruppo fisso «è passato prima o poi» dà in media un HR di 0,49 ed è significativo in ogni esecuzione; la covariata tempo-dipendente dà 0,99 e un risultato significativo nel 4% delle esecuzioni. Nei dati del cuore di Stanford (trapianto) il gruppo fisso scende a un HR di 0,27, la covariata tempo-dipendente a 1,04. Per questo la covariata può avere in ogni momento solo valori già noti in quel momento.
I dati: forma a intervalli
Statable richiede la tabella in forma a intervalli (processo di conteggio): una riga per persona e intervallo con identificativo, inizio, fine, evento e il valore che valeva in quell’intervallo. Gli intervalli sono aperti a sinistra e chiusi a destra: (inizio, fine]. Il valore vale dall’inizio, l’evento avviene alla fine. L’evento (1) è solo nell’ultima riga della persona. Nella scheda si scelgono l’identificativo, l’inizio e la covariata tempo-dipendente; il tempo qui sopra è la fine. Prima di calcolare, Statable controlla: inizio minore della fine, nessuna sovrapposizione, nessun buco, al massimo un evento per persona e solo nell’ultima riga.
L’assistente «Punti temporali per persona → intervalli»
Se la tabella ha una sola riga per persona con la fine, l’evento e il momento di un passaggio (vuoto = mai), l’assistente sotto Dati > Ristruttura costruisce la tabella in forma a intervalli: valore 0 prima del passaggio, 1 dal passaggio in poi, le colonne scelte della persona confluiscono in ogni riga. Dice quante persone sono passate, a quante il passaggio cade all’inizio o dopo la fine dell’osservazione (errore di input? o già il bias del tempo immortale (immortal time bias) nei dati grezzi) e a quante nel giorno dell’evento. La nuova tabella non porta con sé il peso del caso.
Passaggio nel giorno dell’evento
Se il passaggio cade nel giorno dell’evento, decide la regola. Rigorosa (predefinita): il passaggio vale solo da lì in poi, l’evento appartiene ancora al vecchio valore. «Conta già»: il passaggio viene anticipato della metà del più piccolo intervallo di tempo nei dati (0,5 per i giorni, una frazione per gli anni), come fa anche survival per fissare l’ordine; Statable nomina l’importo. Nei dati del cuore di Stanford questo riguarda un solo paziente e sposta l’hazard ratio del trapianto da 0,90 (rigorosa) a 0,99 (conta già). Statable nomina sempre la regola e il numero di persone interessate.
Leggere il risultato
- L’hazard ratio della covariata tempo-dipendente confronta il rischio istantaneo dopo il passaggio con quello di prima, a parità delle altre caratteristiche. HR = 1 significa: nessuna differenza. Non è un rischio relativo.
- Il risultato descrive una relazione con il rischio dopo il passaggio, non la prova di un effetto. Se la covariata è essa stessa una conseguenza della malattia (per esempio un valore di laboratorio), dice già qualcosa sull’evento (covariata interna).
- Statable tratta i tempi di evento pari secondo Efron. Statable verifica l’assunzione di rischi proporzionali con cox.zph; con covariate tempo-dipendenti il test è solo un’indicazione. In questa forma non c’è concordanza.
- Regola empirica: almeno 10 eventi per coefficiente, eventi in entrambi gli stati (prima e dopo il passaggio) e almeno 5 persone con un passaggio; altrimenti Statable avvisa.
Un’altra cosa: l’effetto tempo-dipendente
Una covariata tempo-dipendente non è la stessa cosa di un effetto tempo-dipendente (tt() in R): lì la caratteristica resta fissa (per esempio l’età) e il suo effetto cambia con il tempo, quindi viola la proporzionalità. Statable non offre questa possibilità.
Riportare il risultato
Regressione di Cox con una covariata tempo-dipendente: test LR χ²(4) = 15,11, p = ,004; HR = 0,99, IC al 95% [0,53; 1,82], p = ,967 (trapianto); 103 persone in 170 righe, 75 eventi
Per specialisti
survival::coxph con Surv(start, stop, event), ties = «efron», test di Wald e intervallo di Wald con qnorm(.975); più righe per persona vanno bene per una covariata tempo-dipendente senza varianza robusta (gli intervalli non si sovrappongono). La ristrutturazione gira in JavaScript e concorda riga per riga con survival::tmerge; il modello della vignetta di survival (Kalbfleisch e Prentice 1980, tabella 6.1, modello 6) è riprodotto fino all’ultima cifra stampata.
library(survival)
m <- coxph(Surv(start, stop, event) ~ transplant + age + surgery + year, data = heart_long, ties = "efron")
summary(m)
Fonti
Therneau, T. M. & Grambsch, P. M. (2000). Modeling survival data: extending the Cox model. Springer. Kalbfleisch, J. D. & Prentice, R. L. (1980). The statistical analysis of failure time data. Wiley. Crowley, J. & Hu, M. (1977). Covariance analysis of heart transplant survival data. Journal of the American Statistical Association, 72, 27-36. Vignetta di survival «Using time dependent covariates and time dependent coefficients in the Cox model».