### CHANCE OF REMISSION FOLLOWING A BREAKTHROUGH SEIZURE ### library(cmprsk) library(MASS) # load dataset # sdat2 <- read.csv("Outcomes following Breakthrough.csv") # Kaplan-Meier curve # library(prodlim) tiff(file="Fig 4.tiff",width=2250,heigh=2625,units="px",res=300) ttime <- sdat2$rembreak.remtime/365 fit <- prodlim(Surv(ttime,rembreak.rcens)~1,data=sdat2) plot(fit,type="cuminc",percent=FALSE,background=FALSE,lwd=0.7,atRisk.dist=1,xlab="Time from 1st Breakthrough Seizure (years)",ylab="Probability of 12 month remission",confint=FALSE,legend.x=0,legend.y=1,atrisk.labels="No. at risk:",atRisk.times=c(0,1,2,3,4,5),atRisk.adjust.labels=FALSE) dev.off() # Risk of a seizure 2 years following breakthrough # summary(fit,times=2) # Number of people with seizure recurrences # sum(sdat2$rembreak.rcens) # Time to seizure recurrence # rempeeps <- subset(sdat2,rembreak.rcens==1) summary(rempeeps$rembreak.remtime/365) # Duration of follow-up after acheiving 12 month remission # summary((sdat2$lastfup.dlfu-sdat2$ttss.mdfsez)/365) ## Univariable analysis ## # Gender # sind <- function(data) { sind <- rep(1/2,nrow(data)) for(i in 1:nrow(data)){ if(data$all.sex[i]=="F") sind[i] <- -1/2 } return(sind) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~sind(sdat2)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # Febrile Seizure History # fsh <- function(data) { fsh <- rep(-1/2,nrow(data)) for(i in 1:nrow(data)){ if(data$all.feb[i]=="Y") fsh[i] <- 1/2 } return(fsh) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~fsh(sdat2)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # First degree relative with epilepsy # fdr <- function(data) { fdr <- rep(-1/2,nrow(data)) for(i in 1:nrow(data)){ if(data$all.rels[i]=="Y") fdr[i] <- 1/2 } return(fdr) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~fdr(sdat2)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # Neurological Signs # neuro <- function(data) { neuro <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$all.neur[i]=="Y") neuro[i] <- 1 } return(neuro) } neuroa <- neuro(sdat2) learn <- function(data) { learn <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$all.learn[i]=="Y") learn[i] <- 1 } return(learn) } learna <- learn(sdat2) nsigna <- neuroa + learna nsign <- function(data) { nsign <- rep(-1/2,length(data)) for(i in 1:length(data)){ if(data[i]>0) nsign[i] <- 1/2 } return(nsign) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~nsign(nsigna)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # Seizure Type # stype <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.sp)[i]) data$all.sp[i]<-0 if(is.na(data$all.cp)[i]) data$all.cp[i]<-0 if(is.na(data$all.scgtc)[i]) data$all.scgtc[i]<-0 if(is.na(data$all.tc)[i]) data$all.tc[i] <- 0 if(is.na(data$all.ta)[i]) data$all.ta[i] <- 0 if(is.na(data$all.aa)[i]) data$all.aa[i] <- 0 if(is.na(data$all.m)[i]) data$all.m[i] <- 0 if(is.na(data$all.otc)[i]) data$all.otc[i] <- 0 if(is.na(data$all.o)[i]) data$all.o[i] <- 0 } stype <- rep(7,nrow(data)) for(i in 1:nrow(data)){ if(data$all.sp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- 2 if(data$all.cp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- 2 if(data$all.sp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- 1 if(data$all.cp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- 1 if(data$all.scgtc[i]>=1) stype[i] <- 1 if(data$all.tc[i]>=1 && data$all.aa[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 3 if(data$all.aa[i]>=1 && data$all.tc[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 4 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 4 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]>=1 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 4 if(data$all.m[i]>=1 && data$all.ta[i]>=1) stype[i] <- 4 if(data$all.m[i]>=1 && data$all.aa[i]>=1) stype[i] <- 4 if(data$all.aa[i]>=1 && data$all.tc[i]>=1) stype[i] <- 5 if(data$all.m[i]>=1 && data$all.tc[i]>=1) stype[i] <- 5 if(data$all.ta[i]>=1 && data$all.tc[i]>=1) stype[i] <- 5 if(data$all.otc[i]>=1) stype[i] <- 6 if(data$all.o[i]>=1) stype[i] <- 7 } return(stype) } stype1 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.sp)[i]) data$all.sp[i]<-0 if(is.na(data$all.cp)[i]) data$all.cp[i]<-0 if(is.na(data$all.scgtc)[i]) data$all.scgtc[i]<-0 if(is.na(data$all.tc)[i]) data$all.tc[i] <- 0 if(is.na(data$all.ta)[i]) data$all.ta[i] <- 0 if(is.na(data$all.aa)[i]) data$all.aa[i] <- 0 if(is.na(data$all.m)[i]) data$all.m[i] <- 0 if(is.na(data$all.otc)[i]) data$all.otc[i] <- 0 if(is.na(data$all.o)[i]) data$all.o[i] <- 0 } stype <- rep(-1/7,nrow(data)) for(i in 1:nrow(data)){ if(data$all.sp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- 6/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- 6/7 if(data$all.sp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.tc[i]>=1 && data$all.aa[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]>=1 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.ta[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.aa[i]>=1) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.otc[i]>=1) stype[i] <- -1/7 if(data$all.o[i]>=1) stype[i] <- -1/7 } return(stype) } stype2 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.sp)[i]) data$all.sp[i]<-0 if(is.na(data$all.cp)[i]) data$all.cp[i]<-0 if(is.na(data$all.scgtc)[i]) data$all.scgtc[i]<-0 if(is.na(data$all.tc)[i]) data$all.tc[i] <- 0 if(is.na(data$all.ta)[i]) data$all.ta[i] <- 0 if(is.na(data$all.aa)[i]) data$all.aa[i] <- 0 if(is.na(data$all.m)[i]) data$all.m[i] <- 0 if(is.na(data$all.otc)[i]) data$all.otc[i] <- 0 if(is.na(data$all.o)[i]) data$all.o[i] <- 0 } stype <- rep(-1/7,nrow(data)) for(i in 1:nrow(data)){ if(data$all.sp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.sp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.tc[i]>=1 && data$all.aa[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 6/7 if(data$all.aa[i]>=1 && data$all.tc[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]>=1 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.ta[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.aa[i]>=1) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.otc[i]>=1) stype[i] <- -1/7 if(data$all.o[i]>=1) stype[i] <- -1/7 } return(stype) } stype3 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.sp)[i]) data$all.sp[i]<-0 if(is.na(data$all.cp)[i]) data$all.cp[i]<-0 if(is.na(data$all.scgtc)[i]) data$all.scgtc[i]<-0 if(is.na(data$all.tc)[i]) data$all.tc[i] <- 0 if(is.na(data$all.ta)[i]) data$all.ta[i] <- 0 if(is.na(data$all.aa)[i]) data$all.aa[i] <- 0 if(is.na(data$all.m)[i]) data$all.m[i] <- 0 if(is.na(data$all.otc)[i]) data$all.otc[i] <- 0 if(is.na(data$all.o)[i]) data$all.o[i] <- 0 } stype <- rep(-1/7,nrow(data)) for(i in 1:nrow(data)){ if(data$all.sp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.sp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.tc[i]>=1 && data$all.aa[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 6/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 6/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]>=1 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 6/7 if(data$all.m[i]>=1 && data$all.ta[i]>=1) stype[i] <- 6/7 if(data$all.m[i]>=1 && data$all.aa[i]>=1) stype[i] <- 6/7 if(data$all.aa[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.otc[i]>=1) stype[i] <- -1/7 if(data$all.o[i]>=1) stype[i] <- -1/7 } return(stype) } stype4 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.sp)[i]) data$all.sp[i]<-0 if(is.na(data$all.cp)[i]) data$all.cp[i]<-0 if(is.na(data$all.scgtc)[i]) data$all.scgtc[i]<-0 if(is.na(data$all.tc)[i]) data$all.tc[i] <- 0 if(is.na(data$all.ta)[i]) data$all.ta[i] <- 0 if(is.na(data$all.aa)[i]) data$all.aa[i] <- 0 if(is.na(data$all.m)[i]) data$all.m[i] <- 0 if(is.na(data$all.otc)[i]) data$all.otc[i] <- 0 if(is.na(data$all.o)[i]) data$all.o[i] <- 0 } stype <- rep(-1/7,nrow(data)) for(i in 1:nrow(data)){ if(data$all.sp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.sp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.tc[i]>=1 && data$all.aa[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]>=1 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.ta[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.aa[i]>=1) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]>=1) stype[i] <- 6/7 if(data$all.m[i]>=1 && data$all.tc[i]>=1) stype[i] <- 6/7 if(data$all.ta[i]>=1 && data$all.tc[i]>=1) stype[i] <- 6/7 if(data$all.otc[i]>=1) stype[i] <- -1/7 if(data$all.o[i]>=1) stype[i] <- -1/7 } return(stype) } stype5 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.sp)[i]) data$all.sp[i]<-0 if(is.na(data$all.cp)[i]) data$all.cp[i]<-0 if(is.na(data$all.scgtc)[i]) data$all.scgtc[i]<-0 if(is.na(data$all.tc)[i]) data$all.tc[i] <- 0 if(is.na(data$all.ta)[i]) data$all.ta[i] <- 0 if(is.na(data$all.aa)[i]) data$all.aa[i] <- 0 if(is.na(data$all.m)[i]) data$all.m[i] <- 0 if(is.na(data$all.otc)[i]) data$all.otc[i] <- 0 if(is.na(data$all.o)[i]) data$all.o[i] <- 0 } stype <- rep(-1/7,nrow(data)) for(i in 1:nrow(data)){ if(data$all.sp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.sp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.tc[i]>=1 && data$all.aa[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]>=1 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.ta[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.aa[i]>=1) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.otc[i]>=1) stype[i] <- 6/7 if(data$all.o[i]>=1) stype[i] <- -1/7 } return(stype) } stype6 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.sp)[i]) data$all.sp[i]<-0 if(is.na(data$all.cp)[i]) data$all.cp[i]<-0 if(is.na(data$all.scgtc)[i]) data$all.scgtc[i]<-0 if(is.na(data$all.tc)[i]) data$all.tc[i] <- 0 if(is.na(data$all.ta)[i]) data$all.ta[i] <- 0 if(is.na(data$all.aa)[i]) data$all.aa[i] <- 0 if(is.na(data$all.m)[i]) data$all.m[i] <- 0 if(is.na(data$all.otc)[i]) data$all.otc[i] <- 0 if(is.na(data$all.o)[i]) data$all.o[i] <- 0 } stype <- rep(6/7,nrow(data)) for(i in 1:nrow(data)){ if(data$all.sp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- -1/7 if(data$all.sp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.cp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.scgtc[i]>=1) stype[i] <- -1/7 if(data$all.tc[i]>=1 && data$all.aa[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]>=1 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.ta[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.aa[i]>=1) stype[i] <- -1/7 if(data$all.aa[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.m[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.ta[i]>=1 && data$all.tc[i]>=1) stype[i] <- -1/7 if(data$all.otc[i]>=1) stype[i] <- -1/7 if(data$all.o[i]>=1) stype[i] <- 6/7 } return(stype) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~stype1(sdat2)+stype2(sdat2)+stype3(sdat2)+stype4(sdat2)+stype5(sdat2)+stype6(sdat2)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # Epilepsy type analysis # pgu1 <- function(data) { x1 <- rep(-1/3,nrow(data)) for(i in 1:nrow(data)){ if(is.na(data$all.type)[i]) data$all.type[i]<-"U" } for(i in 1:nrow(data)){ if(data$all.type[i]=="P") x1[i] <- -1/3 if(data$all.type[i]=="G") x1[i] <- 2/3 if(data$all.type[i]=="U") x1[i] <- -1/3 } return(x1) } pgu2 <- function(data) { x2 <- rep(-1/3,nrow(data)) for(i in 1:nrow(data)){ if(is.na(data$all.type)[i]) data$all.type[i]<-"U" } for(i in 1:nrow(data)){ if(data$all.type[i]=="P") x2[i]<- -1/3 if(data$all.type[i]=="G") x2[i]<- -1/3 if(data$all.type[i]=="U") x2[i]<- 2/3 } return(x2) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~pgu1(sdat2)+pgu2(sdat2)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # EEG Results # eegfour <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.nonspecab)[i]) data$all.nonspecab[i]<-"N" } eegfour <- rep(3,nrow(data)) for(i in 1:nrow(data)){ if(data$all.eegabnormal[i]=="NR") eegfour[i]<-1 if(data$all.eegabnormal[i]=="N") eegfour[i]<-0 if(data$all.eegabnormal[i]=="Y" && data$all.nonspecab[i]=="Y") eegfour[i]<-2 } return(eegfour) } eeg1 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.nonspecab)[i]) data$all.nonspecab[i]<-"N" } eegfour <- rep(-1/4,nrow(data)) for(i in 1:nrow(data)){ if(data$all.eegabnormal[i]=="NR") eegfour[i]<-3/4 if(data$all.eegabnormal[i]=="N") eegfour[i]<--1/4 if(data$all.eegabnormal[i]=="Y" && data$all.nonspecab[i]=="Y") eegfour[i]<--1/4 } return(eegfour) } eeg2 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.nonspecab)[i]) data$all.nonspecab[i]<-"N" } eegfour <- rep(-1/4,nrow(data)) for(i in 1:nrow(data)){ if(data$all.eegabnormal[i]=="NR") eegfour[i]<--1/4 if(data$all.eegabnormal[i]=="N") eegfour[i]<--1/4 if(data$all.eegabnormal[i]=="Y" && data$all.nonspecab[i]=="Y") eegfour[i]<-3/4 } return(eegfour) } eeg3 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.nonspecab)[i]) data$all.nonspecab[i]<-"N" } eegfour <- rep(3/4,nrow(data)) for(i in 1:nrow(data)){ if(data$all.eegabnormal[i]=="NR") eegfour[i]<--1/4 if(data$all.eegabnormal[i]=="N") eegfour[i]<--1/4 if(data$all.eegabnormal[i]=="Y" && data$all.nonspecab[i]=="Y") eegfour[i]<--1/4 } return(eegfour) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~eeg1(sdat2)+eeg2(sdat2)+eeg3(sdat2)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # CT/MR Results # ctmr1 <- function(data) { ctmr <- rep(-1/3,nrow(data)) for(i in 1:nrow(data)){ if(data$all.ctabnormal[i]=="Y") ctmr[i] <- 2/3 if(data$all.ctabnormal[i]=="NR") ctmr[i] <- -1/3 } return(ctmr) } ctmr2 <- function(data) { ctmr <- rep(-1/3,nrow(data)) for(i in 1:nrow(data)){ if(data$all.ctabnormal[i]=="Y") ctmr[i] <- -1/3 if(data$all.ctabnormal[i]=="NR") ctmr[i] <- 2/3 } return(ctmr) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~ctmr1(sdat2)+ctmr2(sdat2)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # Treatment # treat <- function(data) { treat <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$with.Treat[i]=="CBZ") treat[i] <- 1 if(data$with.Treat[i]=="GBP") treat[i] <- 2 if(data$with.Treat[i]=="LTG") treat[i] <- 3 if(data$with.Treat[i]=="OXC") treat[i] <- 4 if(data$with.Treat[i]=="TPM") treat[i] <- 5 if(data$with.Treat[i]=="VPS") treat[i] <- 6 } return(treat) } treat1 <- function(data) { treat <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$with.Treat[i]=="CBZ") treat[i] <- -1/6 if(data$with.Treat[i]=="GBP") treat[i] <- 5/6 if(data$with.Treat[i]=="LTG") treat[i] <- -1/6 if(data$with.Treat[i]=="OXC") treat[i] <- -1/6 if(data$with.Treat[i]=="TPM") treat[i] <- -1/6 if(data$with.Treat[i]=="VPS") treat[i] <- -1/6 } return(treat) } treat2 <- function(data) { treat <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$with.Treat[i]=="CBZ") treat[i] <- -1/6 if(data$with.Treat[i]=="GBP") treat[i] <- -1/6 if(data$with.Treat[i]=="LTG") treat[i] <- 5/6 if(data$with.Treat[i]=="OXC") treat[i] <- -1/6 if(data$with.Treat[i]=="TPM") treat[i] <- -1/6 if(data$with.Treat[i]=="VPS") treat[i] <- -1/6 } return(treat) } treat3 <- function(data) { treat <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$with.Treat[i]=="CBZ") treat[i] <- -1/6 if(data$with.Treat[i]=="GBP") treat[i] <- -1/6 if(data$with.Treat[i]=="LTG") treat[i] <- -1/6 if(data$with.Treat[i]=="OXC") treat[i] <- 5/6 if(data$with.Treat[i]=="TPM") treat[i] <- -1/6 if(data$with.Treat[i]=="VPS") treat[i] <- -1/6 } return(treat) } treat4 <- function(data) { treat <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$with.Treat[i]=="CBZ") treat[i] <- -1/6 if(data$with.Treat[i]=="GBP") treat[i] <- -1/6 if(data$with.Treat[i]=="LTG") treat[i] <- -1/6 if(data$with.Treat[i]=="OXC") treat[i] <- -1/6 if(data$with.Treat[i]=="TPM") treat[i] <- 5/6 if(data$with.Treat[i]=="VPS") treat[i] <- -1/6 } return(treat) } treat5 <- function(data) { treat <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$with.Treat[i]=="CBZ") treat[i] <- -1/6 if(data$with.Treat[i]=="GBP") treat[i] <- -1/6 if(data$with.Treat[i]=="LTG") treat[i] <- -1/6 if(data$with.Treat[i]=="OXC") treat[i] <- -1/6 if(data$with.Treat[i]=="TPM") treat[i] <- -1/6 if(data$with.Treat[i]=="VPS") treat[i] <- 5/6 } return(treat) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~treat1(sdat2)+treat2(sdat2)+treat3(sdat2)+treat4(sdat2)+treat5(sdat2)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # Monotherapy to achieve remission # mono <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$drugs.nodrugs)[i]) data$drugs.nodrugs[i]<-0 } mono <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$drugs.nodrugs[i]<=1) mono[i] <- 0 if(data$drugs.nodrugs[i]>=2) mono[i] <- 1 } return(mono) } monodat <- mono(sdat2) mntp <- function(data) { mntp <- rep(-1/2,length(data)) for(i in 1:length(data)){ if(data[i]==1) mntp[i] <- 1/2 } return(mntp) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~mntp(monodat)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # Post-seizure treatment decision # post1 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$ttss.postdec)[i]) data$ttss.postdec[i]<-4 } post1 <- rep(-1/3,nrow(data)) for(i in 1:nrow(data)){ if(data$ttss.postdec[i]==1) post1[i] <- -1/3 if(data$ttss.postdec[i]==2) post1[i] <- 2/3 if(data$ttss.postdec[i]==3) post1[i] <- -1/3 if(data$ttss.postdec[i]==4) post1[i] <- -1/3 } return(post1) } post2 <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$ttss.postdec)[i]) data$ttss.postdec[i]<-4 } post2 <- rep(-1/3,nrow(data)) for(i in 1:nrow(data)){ if(data$ttss.postdec[i]==1) post2[i] <- -1/3 if(data$ttss.postdec[i]==2) post2[i] <- -1/3 if(data$ttss.postdec[i]==3) post2[i] <- 2/3 if(data$ttss.postdec[i]==4) post2[i] <- 2/3 } return(post2) } coxfita=coxph(Surv(rembreak.remtime,rembreak.rcens)~post1(sdat2)+post2(sdat2)+strata(with.Arm),data=sdat2) coxfita exp(coxfita$coefficients) exp(confint(coxfita)) # Number of tonic-clonic seizures # library(mfp) library(Hmisc) fit1 <- coxph(Surv(rembreak.remtime,rembreak.rcens)~newtc+strata(with.Arm),data=sdat2) extractAIC(fit1) fit2 <- coxph(Surv(rembreak.remtime,rembreak.rcens)~log(newtc+1)+strata(with.Arm),data=sdat2) extractAIC(fit2) fit3 <- mfp(Surv(rembreak.remtime,rembreak.rcens)~fp(newtc)+strata(with.Arm),family=cox,data=sdat2,select=0.05,verbose=TRUE) extractAIC(fit3) summary(fit2) summary(sdat2$newtc) # Age at first breakthrough # fit1 <- coxph(Surv(rembreak.remtime,rembreak.rcens)~newage+strata(with.Arm),data=sdat2) extractAIC(fit1) fit2 <- coxph(Surv(rembreak.remtime,rembreak.rcens)~log(newage)+strata(with.Arm),data=sdat2) extractAIC(fit2) coxfitf1 <- mfp(Surv(rembreak.remtime,rembreak.rcens)~fp(newage)+strata(with.Arm),family=cox,data=sdat2,select=0.05,verbose=TRUE) extractAIC(coxfitf1) summary(fit2) summary(sdat2$newage) # Time to achieve first period of 12 month remission # fit1 <- coxph(Surv(rembreak.remtime,rembreak.rcens)~rem.Remtime+strata(with.Arm),data=sdat2) extractAIC(fit1) fit2 <- coxph(Surv(rembreak.remtime,rembreak.rcens)~log(rem.Remtime)+strata(with.Arm),data=sdat2) extractAIC(fit2) coxfitf1 <- mfp(Surv(rembreak.remtime,rembreak.rcens)~fp(rem.Remtime)+strata(with.Arm),family=cox,data=sdat2,select=0.05,verbose=TRUE) extractAIC(coxfitf1) summary(fit1) summary(sdat2$rem.Remtime) # Time on randomised treatment # fit1 <- coxph(Surv(rembreak.remtime,rembreak.rcens)~with.Withtime+strata(with.Arm),data=sdat2) extractAIC(fit1) fit2 <- coxph(Surv(rembreak.remtime,rembreak.rcens)~log(with.Withtime)+strata(with.Arm),data=sdat2) extractAIC(fit2) coxfitf1 <- mfp(Surv(rembreak.remtime,rembreak.rcens)~fp(with.Withtime)+strata(with.Arm),family=cox,data=sdat2,select=0.05,verbose=TRUE) extractAIC(coxfitf1) summary(fit1) summary(sdat2$with.Withtime) ### Multivariable Model ### neuro <- function(data) { neuro <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$all.neur[i]=="Y") neuro[i] <- 1 } return(neuro) } neuroa <- neuro(sdat2) learn <- function(data) { learn <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$all.learn[i]=="Y") learn[i] <- 1 } return(learn) } learna <- learn(sdat2) nsigna <- neuroa + learna nsign <- function(data) { nsign <- rep(0,length(data)) for(i in 1:length(data)){ if(data[i]>0) nsign[i] <- 1 } return(nsign) } stype <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.sp)[i]) data$all.sp[i]<-0 if(is.na(data$all.cp)[i]) data$all.cp[i]<-0 if(is.na(data$all.scgtc)[i]) data$all.scgtc[i]<-0 if(is.na(data$all.tc)[i]) data$all.tc[i] <- 0 if(is.na(data$all.ta)[i]) data$all.ta[i] <- 0 if(is.na(data$all.aa)[i]) data$all.aa[i] <- 0 if(is.na(data$all.m)[i]) data$all.m[i] <- 0 if(is.na(data$all.otc)[i]) data$all.otc[i] <- 0 if(is.na(data$all.o)[i]) data$all.o[i] <- 0 } stype <- rep(7,nrow(data)) for(i in 1:nrow(data)){ if(data$all.sp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- 2 if(data$all.cp[i]>=1 && data$all.scgtc[i]==0) stype[i] <- 2 if(data$all.sp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- 1 if(data$all.cp[i]>=1 && data$all.scgtc[i]>=1) stype[i] <- 1 if(data$all.scgtc[i]>=1) stype[i] <- 1 if(data$all.tc[i]>=1 && data$all.aa[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 3 if(data$all.aa[i]>=1 && data$all.tc[i]==0 && data$all.ta[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 4 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]==0 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 4 if(data$all.ta[i]>=1 && data$all.tc[i]==0 && data$all.aa[i]>=1 && data$all.m[i]==0 && data$all.otc[i]==0 && data$all.o[i]==0) stype[i] <- 4 if(data$all.m[i]>=1 && data$all.ta[i]>=1) stype[i] <- 4 if(data$all.m[i]>=1 && data$all.aa[i]>=1) stype[i] <- 4 if(data$all.aa[i]>=1 && data$all.tc[i]>=1) stype[i] <- 5 if(data$all.m[i]>=1 && data$all.tc[i]>=1) stype[i] <- 5 if(data$all.ta[i]>=1 && data$all.tc[i]>=1) stype[i] <- 5 if(data$all.otc[i]>=1) stype[i] <- 6 if(data$all.o[i]>=1) stype[i] <- 7 } return(stype) } eegfour <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$all.nonspecab)[i]) data$all.nonspecab[i]<-"N" } eegfour <- rep(3,nrow(data)) for(i in 1:nrow(data)){ if(data$all.eegabnormal[i]=="NR") eegfour[i]<-1 if(data$all.eegabnormal[i]=="N") eegfour[i]<-0 if(data$all.eegabnormal[i]=="Y" && data$all.nonspecab[i]=="Y") eegfour[i]<-2 } return(eegfour) } post1a <- function(data) { for(i in 1:nrow(data)){ if(is.na(data$ttss.postdec)[i]) data$ttss.postdec[i] <- 4 } post1a <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(data$ttss.postdec[i]==1) post1a[i] <- 1 if(data$ttss.postdec[i]==2) post1a[i] <- 2 if(data$ttss.postdec[i]==3) post1a[i] <- 3 if(data$ttss.postdec[i]==4) post1a[i] <- 3 } return(post1a) } aeds1a <- function(data) { aeda <- rep(0,nrow(data)) for(i in 1:nrow(data)){ if(is.na(data$drugs.nodrugs)[i]) data$drugs.nodrugs[i]<-0 } for(i in 1:nrow(data)){ if(data$drugs.nodrugs[i]==2) aeda[i] <- 1 if(data$drugs.nodrugs[i]==3) aeda[i] <- 1 } return(aeda) } coxfitb=coxph(Surv(rembreak.remtime,rembreak.rcens)~all.sex+all.feb+all.rels+nsign(nsigna)+factor(stype(sdat2))+factor(eegfour(sdat2))+factor(all.ctabnormal)+aeds1a(sdat2)+log(newtc+1)+log(newage)+rem.Remtime+factor(post1a(sdat2))+strata(with.Arm),data=sdat2) rema.step=stepAIC(coxfitb,scope=list(upper=~all.sex+all.feb+all.rels+nsign(nsigna)+factor(stype(sdat2))+factor(eegfour(sdat2))+factor(all.ctabnormal)+aeds1a(sdat2)+log(newtc+1)+log(newage)+rem.Remtime+factor(post1a(sdat2))+strata(with.Arm)),direction="backward",trace=FALSE) rema.step remb.step=stepAIC(coxfitb,scope=list(upper=~all.sex+all.feb+all.rels+nsign(nsigna)+factor(stype(sdat2))+factor(eegfour(sdat2))+factor(all.ctabnormal)+aeds1a(sdat2)+log(newtc+1)+log(newage)+rem.Remtime+factor(post1a(sdat2))+strata(with.Arm)),direction="both",trace=FALSE) remb.step remamod = coxph(Surv(rembreak.remtime,rembreak.rcens)~all.sex+log(newage)+rem.Remtime+factor(post1a(sdat2))+strata(with.Arm),data=sdat2) summary(remamod) exp(remamod$coef) exp(confint(remamod)) ## Forest Plot # library(grid) # read in relevant dataset # rem <- read.table("Risk Factor Combos - Remission.txt",header=TRUE) Ys=seq(from=1,to=nrow(rem),by=1) par(mfrow=c(1,3),mar=c(5,1,1,1)) plot(0,0,xlim=c(0,100),ylim=c(0,nrow(rem)+3),type="n",axes=F,xlab="",ylab="",main="") text(10,Ys,rev(rem$sexn),cex=0.7) text(37.5,Ys,rev(rem$pdec),cex=0.7) text(62.5,Ys,rev(rem$newage2),cex=0.7) text(90,Ys,rev(rem$remtime),cex=0.7) text(10,nrow(rem)+3,"Gender",font=2,cex=0.7) text(37.5,nrow(rem)+3,"Treatment",font=2,cex=0.7) text(37.5,nrow(rem)+2,"decision",font=2,cex=0.7) text(62.5,nrow(rem)+3,"Age",font=2,cex=0.7) text(62.5,nrow(rem)+2,"(years)",font=2,cex=0.7) text(90,nrow(rem)+3,"Time to",font=2,cex=0.7) text(90,nrow(rem)+2,"remission",font=2,cex=0.7) text(90,nrow(rem)+1,"(years)",font=2,cex=0.7) abline(h=18.5) abline(h=9.5,lty=2) abline(h=27.5,lty=2) plot(0,0,xlim=c(0,100),ylim=c(0,nrow(rem)+3),type="n",axes=F,xlab="Chance of 12 Month Remission 1 year after Breakthrough (%)",ylab="",main="",cex.lab=0.7) estimate1y <- rev(rem$HR1)*100 lower1y <- rev(rem$Lower1)*100 upper1y <- rev(rem$Upper1)*100 points(estimate1y,Ys,pch=15,cex=1.5,) for(i in 1:length(Ys)){ lines(c(lower1y[i],upper1y[i]),rep(Ys[i],2),lwd=1.0) } axis(1,at=c(0,10,20,30,40,50,60,70,80,90,100),c(0,10,20,30,40,50,60,70,80,90,100),cex.axis=0.7) abline(h=18.5) abline(h=9.5,lty=2) abline(h=27.5,lty=2) plot(0,0,xlim=c(0,100),ylim=c(0,nrow(rem)+3),type="n",axes=F,xlab="Chance of 12 Month Remission 2 years after Breakthrough (%)",ylab="",main="",cex.lab=0.7) estimate2y <- rev(rem$HR2)*100 lower2y <- rev(rem$Lower2)*100 upper2y <- rev(rem$Upper2)*100 points(estimate2y,Ys,pch=15,cex=1.5,) for(i in 1:length(Ys)){ lines(c(lower2y[i],upper2y[i]),rep(Ys[i],2),lwd=1.0) } axis(1,at=c(0,10,20,30,40,50,60,70,80,90,100),c(0,10,20,30,40,50,60,70,80,90,100),cex.axis=0.7) abline(h=18.5) abline(h=9.5,lty=2) abline(h=27.5,lty=2)