i dataset del corso studentiannoscorso.txt vaevt.txt swelling.txt tubi.txt |
::biodata:: | ::didattica:: | ::in regalo:: | ::utilità:: | ||
Facoltà di Medicina e Chirurgia a.a. 2009-2010 Corso di Laurea Magistrale in Biotecnologie Mediche Corso Integrato di Innovazione Biotecnologica Analisi Multivariata dei Dati Sperimentali L'analisi di sopravvivenza scegliere un modello per spiegare i dati "time to event"
esito1 <- numeric(1000) esito2 <- numeric(1000) esito3 <- numeric(1000) for ( j in 1:1000) { dado <- sample(1:6, 100, replace = T) esito1[j] <- min(which(dado == "1")) esito2[j] <- min(which(dado < "3")) esito3[j] <- min(which(dado < "4")) } boxplot(esito1, esito2, esito3) # rm (list = ls() ) www <- "http://www.dmi.units.it/~borelli/biotec/tubi.txt" tubi <- read.table( www , header = TRUE ) attach(tubi) tubi[1:10,] Vediamo (in maniera rozza) al variare del type varia il tempo di percolazione boxplot(time ~ type) Non dobbiamo però trascurare i dati censurati: time status table(status, time) library(survival) Surv(time, status) calcoliamo lo stimatore di Kaplan e Meier kaplan_meier <- survfit(Surv(time, status) ~ type) kaplan_meier summary(kaplan_meier) rappresentiamo le curve di sopravvivenza e raffrontiamole con i boxplot par(mfrow = c(1,2)) plot(kaplan_meier, lty=c(5,3), xlab="Leakage time (hours)") boxplot(time ~ type) par(mfrow = c(1,1)) Test statistico "Log-rank": non vi è differenza tra le due curve di sopravvivenza? logrank <- survdiff( Surv(time, status) ~ type) logrank Spesso si ipotizza che il rischio tra due curve sia proporzionale. In tal caso, si suppone che la funzione di rischio baseline sia del tipo h0(t) = \lambda \rho t ^ ( \rho - 1) , essendo \lambda il parametro di scala e \rho il parametro di forma. ? pweibull Abbiamo quindi a disposizione la descrizione loglineare del modello di sopravvivenza: log ( Ti
) = \mu + xi \alpha + \sigma Ei
dove \mu è l'intercetta e \sigma rappresenta la scala: modellologlineare <- survreg( Surv(time, status) ~ type, dist="weibull") summary(modellologlineare)
Deduciamo dunque che \lambda = exp( - \mu / \sigma) e che \rho = 1 / \sigma: summary(modellologlineare) mu <- as.table(summary(modellologlineare)[[7]])[[1]] mu sigma <- summary(modellologlineare)[6][[1]] sigma lambda <- exp ( - mu / sigma ) lambda rho <- 1 / sigma rho La diagnostica del modello richiede di verificare la proporzionalità del rischio: plot(survfit(Surv(time, status) ~ type), lty=1:2, fun="cumhaz", main = "Diagnostica") Scopriamo ("approssimativamente") se la PEEP ha avuto un ruolo: summary(survreg( Surv(time, status) ~ type + peep , dist="weibull") ) Teniamo presente che però la covariata PEEP cambia nel tempo (stimatore di Breslow Aalen, library timereg)
library("HSAUR") library("survival") library("coin") data("glioma", package = "coin") glioma[1:10,] glioma[30:37,]
glioma$event Surv(glioma$time, glioma$event)
g4 <- subset(glioma, histology = "GBM")
surv_test(Surv(time, event) ~ group, data = g4, distribution = "exact")
survdiff(Surv(time, event) ~ group, data = g3) survdiff(Surv(time, event) ~ group, data = g4)
data(GBSG2, package ="ipred")
cox1 summary(cox1)
exp(cbind(coef (cox1) , ci) ) ["horThyes" , ]
regcoefftempo
library("party") albero1 <- ctree (Surv(time, cens) ~ . , data = GBSG2) plot (albero1)
www <- "http://www.dmi.units.it/~borelli/biotec/bewick.txt" bewick <- read.table( www , header = TRUE ) attach(bewick) plot(survfit(Surv(giorni, stato) ~ trattamento), main ="Figure 2", xlab="Survival time(days)", ylab="Probability of survival", lty= c(2,1)) plot(survfit(Surv(log(giorni), stato) ~ trattamento), lty=1:2, fun="cumhaz", main = "Figure 3 - Diagnostica") summary(coxph(Surv(giorni, stato) ~ trattamento + eta)) summary(survreg(Surv(giorni, stato) ~ trattamento + eta)) |