Capítulo 2 - Técnicas não-paramétricas

 require(survival)
 tempos<- c(1,2,3,3,3,5,5,16,16,16,16,16,16,16,16,1,1,1,1,4,5,7,8,10,10,12,16,16,16)
 cens<-c(0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0)
 grupos<-c(rep(1,15),rep(2,14))
 ekm<- survfit(Surv(tempos,cens)~grupos)
 summary(ekm)
 plot(ekm, lty=c(2,1), xlab="Tempo (semanas)",ylab="S(t) estimada")
 legend(1, 0.3, lty=c(2,1), c("Controle","Esteróide"),lwd=1, bty="n")

 ekm<- survfit(Surv(tempos,cens)~grupos, conf.type="plain")
 summary(ekm)

 ekm<- survfit(Surv(tempos,cens)~grupos, conf.type="log-log")
 summary(ekm)

 ekm<- survfit(Surv(tempos,cens)~grupos, conf.type="log")
 summary(ekm)
 ekm<- survfit(Surv(tempos,cens)~grupos)
 summary(ekm)


 require(survival)
 tempos<- c(1,2,3,3,3,5,5,16,16,16,16,16,16,16,16,1,1,1,1,4,5,7,8,10,10,12,16,16,16)
 cens<-c(0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0)
 grupos<-c(rep(1,15),rep(2,14))
 ss<- survfit(coxph(Surv(tempos[grupos==2],cens[grupos==2])~1, method = "breslow"))
 summary(ss)
 racum<- -log(ss$surv)
 cbind(ss$time, racum)


 require(survival)
 tempos<- c(3,4,5.7,6.5,6.5,8.4,10,10,12,15)
 cens<- c(1,0,0,1,1,0,1,0,1,1)
 ekm<- survfit(Surv(tempos,cens)~1, conf.type="plain")
 summary(ekm)

 plot(ekm, conf.int=T,  xlab="Tempo (em meses)", ylab="S(t) estimada", bty="n")

 t<- tempos[cens==1]
 tj<-c(0,as.numeric(levels(as.factor(t))))
 surv<-c(1,as.numeric(levels(as.factor(ekm$surv))))
 surv<-sort(surv, decreasing=T)
 k<-length(tj)-1
 prod<-matrix(0,k,1)
    for(j in 1:k){
      prod[j]<-(tj[j+1]-tj[j])*surv[j]
    }
 tm<-sum(prod)
 tm


Função para obtenção da variância do tempo médio. Autora: Vanessa F. Sehaber. Clique para ver a função var_tm

** Utilizando a função var_tm aos dados de reincidência de tumor sólido 

 source("https://docs.ufpr.br/~giolo/Livro/var_tm.txt")   # carregando var_tm
 ekm<- survfit(Surv(tempos,cens)~1, conf.type="plain")
 var.tmedio <- var_tm(ekm)
 var.tmedio


 require(survival)
 tempos<- c(1,2,3,3,3,5,5,16,16,16,16,16,16,16,16,1,1,1,1,4,5,7,8,10,10,12,16,16,16)
 cens<-c(0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0)
 grupos<-c(rep(1,15), rep(2,14))
 survdiff(Surv(tempos,cens)~grupos, rho=0)


 tempos<-c(7,8,8,8,8,12,12,17,18,22,30,30,30,30,30,30,8,8,9,10,10,14,
          15,15,18,19,21,22,22,23,25,8,8,8,8,8,8,9,10,10,10,11,17,19)
 cens<-c(rep(1,10), rep(0,6), rep(1,15), rep(1,13))
 grupo<-c(rep(1,16), rep(2,15), rep(3,13))
 
 require(survival)
 ekm<-survfit(Surv(tempos,cens)~grupo)
 summary(ekm)
 plot(ekm, lty=c(1,4,2), xlab="Tempo",ylab="S(t) estimada")
 legend(1, 0.3, lty=c(1,4,2), c("Grupo 1","Grupo 2","Grupo 3"), lwd=1, bty="n", cex=0.8)
 survdiff(Surv(tempos,cens)~grupo, rho=0)
 survdiff(Surv(tempos[1:31],cens[1:31])~grupo[1:31], rho=0)
 survdiff(Surv(tempos[17:44],cens[17:44])~grupo[17:44], rho=0)
 survdiff(Surv(c(tempos[1:16],tempos[32:44]),c(cens[1:16],cens[32:44]))~c(grupo[1:16],grupo[32:44]), rho=0)
 
 # pode-se, alternativamente, usar a opção "subset"
 
 data<-as.data.frame(cbind(tempos, cens, grupo))
 dat1<-subset(data, subset = grupo %in% c(1,2))       # grupos 1 e 2
 survdiff(Surv(tempos,cens) ~ grupo, rho=0, dat1)
 dat2<-subset(data, subset = grupo %in% c(2,3))       # grupos 2 e 3
 survdiff(Surv(tempos,cens) ~ grupo, rho=0, dat2)
 dat3<-subset(data, subset = grupo %in% c(1,3))       # grupos 1 e 3
 survdiff(Surv(tempos,cens) ~ grupo, rho=0, dat3)

Capítulo 3 - Modelos Probabilísticos

 require(survival)
 tempos<-c(3,5,6,7,8,9,10,10,12,15,15,18,19,20,22,25,28,30,40,45)
 cens<-c(1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,0)
 ajust1<-survreg(Surv(tempos,cens)~1, dist='exponential')
 ajust1
 alpha<-exp(ajust1$coefficients[1])
 alpha
 ajust2<-survreg(Surv(tempos,cens)~1, dist='weibull')
 ajust2
 alpha<-exp(ajust2$coefficients[1])
 gama<-1/ajust2$scale
 cbind(gama, alpha)
 ajust3<-survreg(Surv(tempos,cens)~1, dist='lognorm')
 ajust3

 ekm<-survfit(Surv(tempos,cens)~1)
 time<-ekm$time
 st<-ekm$surv
 ste<- exp(-time/20.41)
 stw<- exp(-(time/21.34)^1.54)
 stln<- pnorm((-log(time)+ 2.72)/0.76)
 cbind(time,st,ste,stw,stln)

 par(mfrow=c(1,3))
 plot(st, ste, pch=16, ylim=range(c(0.0,1)), xlim=range(c(0,1)), xlab = "S(t): Kaplan-Meier",
      ylab="S(t): exponencial")
 lines(c(0,1), c(0,1), type="l", lty=1)
 plot(st, stw, pch=16, ylim=range(c(0.0,1)), xlim=range(c(0,1)), xlab = "S(t): Kaplan-Meier",
      ylab="S(t): Weibull")
 lines(c(0,1), c(0,1), type="l", lty=1)
 plot(st, stln, pch=16, ylim=range(c(0.0,1)), xlim=range(c(0,1)), xlab = "S(t): Kaplan-Meier",
      ylab="S(t): log-normal")
 lines(c(0,1), c(0,1), type="l", lty=1)

 par(mfrow=c(1,3))
 invst<-qnorm(st)
 plot(time, -log(st), pch=16, xlab="tempos", ylab="-log(S(t))")
 plot(log(time), log(-log(st)), pch=16, xlab="log(tempos)", ylab="log(-log(S(t)))")
 plot(log(time), invst, pch=16, xlab="log(tempos)", ylab=expression(Phi^-1*(S(t))))

 ajust1$loglik[2]
 ajust2$loglik[2]
 ajust3$loglik[2]

 par(mfrow=c(1,2))
 plot(ekm, conf.int=F, xlab="Tempos", ylab="S(t)")
 lines(c(0,time), c(1,stw), lty=2)
 legend(25, 0.8, lty=c(1,2), c("Kaplan-Meier", "Weibull"), bty="n", cex=0.8)
 plot(ekm, conf.int=F, xlab="Tempos", ylab="S(t)")
 lines(c(0,time), c(1,stln), lty=2)
 legend(25, 0.8, lty=c(1,2), c("Kaplan-Meier", "Log-normal"), bty="n", cex=0.8)


Ajuste do modelo gama generalizado no R, via o pacote “flexsurv”. Veja a seguir.

 tempos<-c(3,5,6,7,8,9,10,10,12,15,15,18,19,20,22,25,28,30,40,45)
 cens<-c(1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,0)
 
 require(flexsurv)        # instalar previamente o pacote 
 ajust4<-flexsurvreg(Surv(tempos,cens)~1, dist='gengamma')
 ajust4$loglik
 ajust4
 summary(ajust4)
 
 ekm<-survfit(Surv(tempos,cens)~1)
 time<-ekm$time
 st<-ekm$surv
 gg<-as.data.frame(summary(ajust4))
 stgg<-gg$est 
   
 par(mfrow=c(1,2))
 plot(st, stgg, pch=16, ylim=range(c(0.0,1)), xlim=range(c(0,1)), xlab = "S(t): Kaplan-Meier",
      ylab="S(t): gama generalizada")
 lines(c(0,1), c(0,1), type="l", lty=1)
 
 plot(ekm, conf.int=F, xlab="Tempos", ylab="S(t)")
 lines(c(0,gg$time), c(1,stgg), lty=2)
 legend(25, 0.8, lty=c(1,2), c("Kaplan-Meier", "Gama generalizada"), bty="n", cex=0.8) 

Capítulo 4 - Modelos de Regressão Paramétricos

 temp<-c(65,156,100,134,16,108,121,4,39,143,56,26,22,1,1,5,65)
 cens<-rep(1,17)
 lwbc<-c(3.36,2.88,3.63,3.41,3.78,4.02,4.00,4.23,3.73,3.85,3.97,4.51,4.54,5.00,5.00,4.72,5.00)
 dados<-cbind(temp,cens,lwbc)
 
 require(survival)
 dados<-as.data.frame(dados)
 i<-order(dados$temp)
 dados<-dados[i,]
 ekm<- survfit(Surv(dados$temp,dados$cens)~1)
 summary(ekm)
 st<-ekm$surv
 temp<-ekm$time
 invst<-qnorm(st)
 par(mfrow=c(1,3))
 plot(temp, -log(st), pch=16, xlab="Tempos", ylab="-log(S(t))")
 plot(log(temp), log(-log(st)), pch=16, xlab="log(tempos)", ylab="log(-log(S(t))")
 plot(log(temp), invst, pch=16, xlab="log(tempos)", ylab=expression(Phi^-1*(S(t))))

 ajust1<-survreg(Surv(dados$temp, dados$cens)~dados$lwbc, dist='exponential')
 ajust1
 ajust1$loglik
 ajust2<-survreg(Surv(dados$temp, dados$cens)~dados$lwbc, dist='weibull')
 ajust2
 ajust2$loglik
 gama<-1/ajust2$scale
 gama


 rm(list=ls(all=TRUE))    
 
 desmame<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/desmame.txt",h=T)  
 attach(desmame)
 require(survival)
 ekm<- survfit(Surv(tempo,cens)~V4)
 summary(ekm)
 survdiff(Surv(tempo,cens)~V4, rho=0)
 plot(ekm, lty=c(1,4), mark.time=F, xlab="Tempo até o desmame (meses)", ylab="S(t)")
 text(18.5, 0.93, c("Dificuldades para Amamentar"), bty="n", cex=0.85)
 legend(15.5, 0.9, lty=c(4), c("Sim"), bty="n", cex=0.8)
 legend(18.5, 0.9, lty=c(1), c("Não"), bty="n", cex=0.8)

 ajust1<-survreg(Surv(tempo,cens)~V1+V3+V4+V6, dist='lognorm')
 ajust1
 summary(ajust1)

 xb<-ajust1$coefficients[1] + ajust1$coefficients[2]*V1 + ajust1$coefficients[3]*V3 +
     ajust1$coefficients[4]*V4 + ajust1$coefficients[5]*V6
 sigma<-ajust1$scale
 res<-(log(tempo)-(xb))/sigma                   # resíduos padronizados
 resid<-exp(res)                                # exponencial dos resíduos padronizados
 ekm<- survfit(Surv(resid,cens)~1)
 resid<-ekm$time
 sln<-pnorm(-log(resid))
 par(mfrow=c(1,2))
 plot(ekm$surv,sln, xlab="S(ei*): Kaplan-Meier", ylab="S(ei*): Log-normal padrão", pch=16)
 plot(ekm, conf.int=F, mark.time=F, xlab="Resíduos (ei*)", ylab="Sobrevivência estimada", pch=16)
 lines(resid, sln, lty=2)
 legend(1.3,0.8, lty=c(1,2), c("Kaplan-Meier","Log-normal padrão"), cex=0.8, bty="n")

 ei<- -log(1-pnorm(res))                          # resíduos de Cox-Snell
 ekm1<-survfit(Surv(ei,cens)~1)
 t<-ekm1$time
 st<-ekm1$surv
 sexp<-exp(-t)
 par(mfrow=c(1,2))
 plot(st, sexp, xlab="S(ei): Kaplan-Meier", ylab="S(ei): Exponencial padrão", pch=16)
 plot(ekm1, conf.int=F, mark.time=F, xlab="Resíduos de Cox-Snell", ylab="Sobrevivência estimada")
 lines(t, sexp, lty=4)
 legend(1.0, 0.8, lty=c(1,4), c("Kaplan-Meier","Exponencial padrão"), cex=0.8, bty="n")

Capítulo 5 - Modelo de Regressão de Cox

 laringe<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/laringe.txt", h=T)  
 attach(laringe)
 require(survival)
 fit2<-coxph(Surv(tempos,cens)~factor(estagio), data=laringe, x = T, method="breslow")
 summary(fit2)
 fit2$loglik
 fit3<- coxph(Surv(tempos,cens)~factor(estagio) + idade, data=laringe, x = T, method="breslow")
 summary(fit3)
 fit3$loglik
 fit4<-coxph(Surv(tempos,cens) ~ factor(estagio) + idade + factor(estagio)*idade, data=laringe, 
             x = T, method="breslow")
 summary(fit4)
 fit4$loglik

 resid(fit4, type="scaledsch")
 cox.zph(fit4, transform="identity")   # g(t) = t
 par(mfrow=c(2,4))
 plot(cox.zph(fit4))

 resid(fit3, type="scaledsch")
 cox.zph(fit3, transform="identity")    # g(t) = t
 par(mfrow=c(1,4))
 plot(cox.zph(fit3))

 Ht<-basehaz(fit4, centered=F)
 tempos<-Ht$time
 H0<-Ht$hazard
 S0<- exp(-H0)
 round(cbind(tempos, S0, H0), digits=5)


Análise gráfica dos resíduos de Cox-Snell do modelo ajustado aos dados de laringe.

 resm<-resid(fit4,type="martingale")
 res<-cens - resm                      # resíduos de Cox-Snell
 ekm <- survfit(Surv(res, cens)~1)
 summary(ekm)
 
 par(mfrow=c(1,2))
 plot(ekm, mark.time=F, conf.int=F, xlab="resíduos", ylab="S(e) estimada")
 res<-sort(res)
 exp1<-exp(-res)
 lines(res, exp1, lty=3)
 legend(1, 0.8, lty=c(1,3), c("Kaplan Meier","Exponencial(1)"), lwd=1, bty="n", cex=0.7)

 st<-ekm$surv
 t<-ekm$time
 sexp1<-exp(-t)
 plot(st, sexp1, xlab="S(e): Kaplan-Meier", ylab= "S(e): Exponencial(1)", pch=16)


 require(survival)
 desmame<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/desmame.txt",h=T)   
 attach(desmame)
 fit<-coxph(Surv(tempo,cens)~V1+V3+V4+V6, data=desmame, x = T, method="breslow")
 summary(fit)
 fit$loglik

 resid(fit, type="scaledsch")
 cox.zph(fit, transform="identity")     # g(t) = t
 par(mfrow=c(2,2))
 plot(cox.zph(fit))


Análise gráfica dos resíduos de Cox-Snell do modelo ajustado aos dados de aleitamento materno.

 resm<-resid(fit,type="martingale")
 res<-cens - resm                      # resíduos de Cox-Snell
 ekm <- survfit(Surv(res, cens)~1)
 summary(ekm)
 
 par(mfrow=c(1,2))
 plot(ekm, mark.time=F, conf.int=F, xlab="resíduos", ylab="S(e) estimada")
 res<-sort(res)
 exp1<-exp(-res)
 lines(res, exp1, lty=3)
 legend(1, 0.8, lty=c(1,3), c("Kaplan Meier","Exponencial(1)"), lwd=1, bty="n", cex=0.7)

 st<-ekm$surv
 t<-ekm$time
 sexp1<-exp(-t)
 plot(st, sexp1, xlab="S(e): Kaplan-Meier", ylab= "S(e): Exponencial(1)", pch=16)


 rm(list=ls())
 
 leuc<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/leucemia.txt", h=T)      
 attach(leuc)
 idadec<-ifelse(idade>96,1,0)
 leuinic<-ifelse(leuini>75,1,0)
 zpesoc<-ifelse(zpeso>-2,1,0)
 zestc<-ifelse(zest>-2,1,0)
 vacc<-ifelse(vac>15,1,0)
 pasc<-ifelse(pas>5,1,0)
 riskc<-ifelse(risk>1.7,1,0)
 r6c<-r6
 leucc<-as.data.frame(cbind(leuinic,tempos,cens,idadec,zpesoc,zestc,pasc,vacc,riskc,r6c))
 detach(leuc)
 attach(leucc)
 require(survival)
 fit<-coxph(Surv(tempos,cens)~leuinic + idadec + zpesoc + zestc + pasc + vacc + riskc + r6c, data=leucc, 
            x = T, method="breslow")
 summary(fit)

 fit3<-coxph(Surv(tempos,cens)~leuinic + idadec + zpesoc + pasc + vacc, data=leucc, x = T, method="breslow")
 summary(fit3)
 -2*fit3$loglik[2]

 resid(fit3, type="scaledsch")
 cox.zph(fit3, transform="identity")   # g(t) = t
 par(mfrow=c(2,3))
 plot(cox.zph(fit3))

 par(mfrow=c(1,2))
 rd<-resid(fit3, type="deviance")       # resíduos deviance
 rm<-resid(fit3, type="martingale")     # resíduos martingal
 pl<-fit3$linear.predictors
 plot(pl, rm, xlab="Preditor linear", ylab="Resíduo martingal", pch=16)
 plot(pl, rd, xlab="Preditor linear", ylab="Resíduo deviance" , pch=16)

 par(mfrow=c(2,3))
 dfbetas<-resid(fit3, type="dfbeta")
 plot(leuinic,dfbetas[,1], xlab="Leuini", ylab="Influência para Leuini")
 plot(idadec, dfbetas[,2], xlab="Idade",  ylab="Influência para Idade")
 plot(zpesoc, dfbetas[,3], xlab="Zpeso",  ylab="Influência para Zpeso")
 plot(pasc,   dfbetas[,4], xlab="Pas",    ylab="Influência para Pas")
 plot(vacc,   dfbetas[,5], xlab="Vac",    ylab="Influência para Vac")


Análise gráfica dos resíduos de Cox-Snell do modelo ajustado aos dados de leucemia.

 resm<-resid(fit3,type="martingale")
 res<-leucc$cens - resm                      # resíduos de Cox-Snell
 ekm <- survfit(Surv(res, leucc$cens)~1)
 summary(ekm)
 par(mfrow=c(1,2))
 plot(ekm, mark.time=F, conf.int=F, xlab="resíduos", ylab="S(e) estimada")
 res<-sort(res)
 exp1<-exp(-res)
 lines(res, exp1, lty=3)
 legend(1, 0.8, lty=c(1,3), c("Kaplan Meier","Exponencial(1)"), lwd=1, bty="n", cex=0.7)

 st<-ekm$surv
 t<-ekm$time
 sexp1<-exp(-t)
 plot(st, sexp1, xlab="S(e): Kaplan-Meier", ylab= "S(e): Exponencial(1)", pch=16)

Capítulo 6 - Extensões do Modelo de Cox

 aids<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/aids.txt", h=T)  
 attach(aids)
 require(survival)
 fit1<-coxph(Surv(ti[ti<tf], tf[ti<tf], cens[ti<tf])~id[ti<tf] + factor(grp)[ti<tf], method="breslow")
 summary(fit1)
 NOTA: Alternativamente, pode-se usar subset()
 aids1<-subset(aids, ti < tf) 
 fit2<-coxph(Surv(ti, tf, cens)~id + factor(grp), method="breslow", data=aids1)
 summary(fit2)


Análise gráfica dos resíduos de Cox-Snell do modelo ajustado aos dados de HIV.

 aids2<-na.omit(aids1[, 1:7])
 fit2<- coxph(Surv(ti, tf, cens)~id + factor(grp), method="breslow", data=aids2)
 resm<-resid(fit2, type="martingale")
 res<-aids2$cens - resm                  # resíduos de Cox-Snell
 ekm <- survfit(Surv(res, aids2$cens)~1)
 summary(ekm)
 par(mfrow=c(1,2))
 plot(ekm, mark.time=F, conf.int=F, xlab="resíduos de Cox-Snell", ylab="S(e) estimada")
 res<-sort(res)
 exp1<-exp(-res)
 lines(res, exp1, lty=3)
 legend(1, 0.8, lty=c(1,3), c("Kaplan-Meier","Exponencial(1)"), lwd=1, bty="n", cex=0.7)
 st<-ekm$surv
 t<-ekm$time
 sexp1<-exp(-t)
 plot(st, sexp1, xlab="S(e): Kaplan-Meier", ylab= "S(e): Exponencial(1)", pch=16)


 leuc<-read.table("http://www.ufpr.br/~giolo/Livro/ApendiceA/leucemia.txt", h=T)  
 attach(leuc)
 idadec<-ifelse(idade>96,1,0)
 leuinic<-ifelse(leuini>75,1,0)
 zpesoc<-ifelse(zpeso>-2,1,0)
 zestc<-ifelse(zest>-2,1,0)
 vacc<-ifelse(vac>15,1,0)
 pasc<-ifelse(pas>5,1,0)
 riskc<-ifelse(risk>1.7,1,0)
 r6c<-r6
 leucc<-as.data.frame(cbind(leuinic,tempos,cens,idadec,zpesoc,zestc,pasc,vacc,riskc,r6c))
 detach(leuc)
 attach(leucc)
 require(survival)
 fit1<-coxph(Surv(tempos,cens)~idadec + zpesoc + pasc + vacc + strata(leuinic), data=leucc,
       x = T,method="breslow")
 summary(fit1)

 leucc1<-as.data.frame(cbind(tempos[leuinic==0],cens[leuinic==0],idadec[leuinic==0],  
         zpesoc[leuinic==0],pasc[leuinic==0],vacc[leuinic==0]))
 leucc2<-as.data.frame(cbind(tempos[leuinic==1],cens[leuinic==1],idadec[leuinic==1],
         zpesoc[leuinic==1],pasc[leuinic==1],vacc[leuinic==1]))
 fit2<-coxph(Surv(V1,V2)~V3+V4+V5+V6, data=leucc1, x = T, method="breslow")
 summary(fit2)
 fit3<-coxph(Surv(V1,V2)~V3+V4+V5+V6, data=leucc2, x = T, method="breslow")
 summary(fit3)
 trv<-2*(-fit1$loglik[2] + fit2$loglik[2] + fit3$loglik[2])
 trv
 1-pchisq(trv,4)

 cox.zph(fit1, transform="identity")   # g(t) = t
 par(mfrow=c(1,4))
 plot(cox.zph(fit1))

 H0<-basehaz(fit1, centered=F)          # risco acumulado de base
 H0
 H01<-as.matrix(H0[1:81,1])             # risco acumulado de base do estrato 1 (leuinic=0)
 H02<-as.matrix(H0[82:101,1])           # risco acumulado de base do estrato 2 (leuinic=1)
 tempo1<- H0$time[1:81]                 # tempos do estrato 1
 S01<-exp(-H01)                         # sobrevivência de base estrato 1
 round(cbind(tempo1,S01,H01),digits=5)  # funções de base estrato 1
 tempo2<- H0$time[82:101]               # tempos do estrato 2
 S02<-exp(-H02)                         # sobrevivência de base estrato 2
 round(cbind(tempo2,S02,H02),digits=5)  # funções de base estrato 2

 par(mfrow=c(1,2))
 plot(tempo2, H02, lty=4, type="s", xlab="Tempos", xlim=range(c(0,4)), ylab=expression(Lambda[0]* (t)))
 lines(tempo1, H01, type="s", lty=1)
 legend(0.0, 9, lty=c(1,4), c("Leuini < 75000","Leuini > 75000"), lwd=1, bty="n", cex=0.8)
 plot(c(0, tempo1), c(1,S01), lty=1, type="s", xlab="Tempos", xlim=range(c(0,4)), ylab="So(t)")
 lines(c(0, tempo2), c(1,S02), lty=4, type="s")
 legend(2.2, 0.9, lty=c(1,4), c("Leuini < 75000","Leuini > 75000"), lwd=1,bty="n", cex=0.8)


 hg2<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/hg2.txt", h=T)    
 attach(hg2)
 require(survival)
 fit1<-coxph(Surv(tempos,cens)~factor(raca) + factor(trauma) + factor(recemnas) + factor(renda) + ialtura +
             factor(trauma)*factor(recemnas), data=hg2, method="breslow")
 summary(fit1)
 rendac<-ifelse(renda < 4, 1, 2)
 fit2<-coxph(Surv(tempos,cens)~factor(raca) + factor(trauma) + factor(recemnas) + factor(rendac) + ialtura +
             factor(trauma)*factor(recemnas), data=hg2, method="breslow")
 summary(fit2)
 cox.zph(fit2, transform="identity")
 par(mfrow=c(2,3))
 plot(cox.zph(fit2))


Análise gráfica dos resíduos de Cox-Snell do modelo ajustado aos dados de hormônio de crescimento.

 hg2a<-na.omit(hg2)
 rendac<-ifelse(hg2a$renda < 4, 1, 2)
 fit2<-coxph(Surv(tempos,cens)~factor(raca) + factor(trauma) + factor(recemnas) + factor(rendac) + ialtura +
             factor(trauma)*factor(recemnas), data=hg2a, method="breslow")

 resm<-resid(fit2,type="martingale")
 res<-hg2a$cens - resm                            # resíduos de Cox-Snell
 ekm <- survfit(Surv(res,hg2a$cens)~1)
 summary(ekm)
 
 par(mfrow=c(1,2))
 plot(ekm, mark.time=F, conf.int=F, xlab="resíduos", ylab="S(e) estimada")
 res<-sort(res)
 exp1<-exp(-res)
 lines(res,exp1,lty=3)
 legend(1, 0.8, lty=c(1,3), c("Kaplan Meier","Exponencial(1)"), lwd=1, bty="n", cex=0.7)
 st<-ekm$surv
 t<-ekm$time
 sexp1<-exp(-t)
 plot(st, sexp1, xlab="S(e): Kaplan-Meier", ylab= "S(e): Exponencial(1)", pch=16)

Capítulo 7 - Modelo Aditivo de Aalen

 laringe<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/laringe.txt", h=T) 
 attach(laringe)
 require(survival)
 source("https://docs.ufpr.br/~giolo/Livro/ApendiceA/Addreg.r")  
 idadec<-idade - mean(idade)
 fit1<- addreg(Surv(tempos,cens)~factor(estagio) + idadec, laringe)
 summary(fit1)
 fit2<- addreg(Surv(tempos,cens)~factor(estagio), laringe)
 summary(fit2)

 i<-order(tempos)
 laringe<-laringe[i,]                 # dados ordenados pelos tempos
 laringe1<-laringe[1:51,]             # obs: como tau = 4.3 deve-se usar somente as linhas em que t <= 4.3
 xo<-rep(1,51)
 x1<-ifelse(laringe1$estagio==2,1,0)
 x2<-ifelse(laringe1$estagio==3,1,0)
 x3<-ifelse(laringe1$estagio==4,1,0)
 x <-as.matrix(cbind(xo,x1,x2,x3))
 t<-fit2$times
 coef<-fit2$increments
 xt<-t(x)
 Bt<-coef%*%xt
 riscoacum<-diag(Bt)
 for(i in 1:50){
   riscoacum[i+1]<-riscoacum[i+1]+riscoacum[i]
 }
 riscoacum
 par(mfrow=c(1,1))
 plot(t,riscoacum,xlab="Tempos", ylab = expression(Lambda*(t)), pch=16)

 plot(fit2,xlab="Tempo",ylab="FRA",labelofvariable=c("Estadio I","Estadio II em relação ao I",
      "Estadio III em relação ao I","Estadio IV em relação ao I"))


 rm(list=ls())
 
 source("https://docs.ufpr.br/~giolo/Livro/ApendiceA/Addreg.r")                 # lendo função Addreg.r
 aids<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/aids.txt", h=T)  # lendo os dados
 
 attach(aids)
 require(survival)
 idade<-id - mean(id[!is.na(id)])
 fit1<-addreg( Surv(ti[ti<tf],tf[ti<tf],cens[ti<tf])~idade[ti<tf]+sex[ti<tf]+factor(grp)[ti<tf], data=aids)
 summary(fit1)
 fit2<-addreg( Surv(ti[ti<tf],tf[ti<tf],cens[ti<tf])~idade[ti<tf]+factor(grp)[ti<tf], data=aids)
 summary(fit2)
 
 aids<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/aids.txt", h=T)            
 attach(aids)
 aids1<-as.data.frame(cbind(tf,id,grp))
 aids1<-na.omit(aids1)                   # eliminando valores missing = NA
 attach(aids1)
 i<-order(aids1$tf)
 aids1<-aids1[i,]                        # dados ordenados por tf e sem NA nas covariaveis
 aids2<-aids1[10:121,]                   # tau = 617 -> foram mantidas as linhas em que 0 < tf <= 617
 n<-nrow(aids2)
 xo<-rep(1,n)
 x1<-(aids2$id) - mean(aids2$id)
 x2<-ifelse(aids2$grp==2,1,0)
 x3<-ifelse(aids2$grp==3,1,0)
 x4<-ifelse(aids2$grp==4,1,0)
 x <-as.matrix(cbind(xo,x1,x2,x3,x4))
 t<-fit2$times
 coef<-fit2$increments
 xt<-t(x)
 Bt<-coef%*%xt
 riscoacum<-diag(Bt)
 for(i in 1:(n-1)){
   riscoacum[i+1]<-riscoacum[i+1]+riscoacum[i]
 }
 riscoacum
 plot(t, riscoacum, xlab="Tempos", ylab = expression(Lambda*(t)), pch=16)

 plot(fit2, xlab="Tempo", ylab="FRA",label=c("(a) Constante","(b) Idade","(c) Assintomático em relação HIV-",
                                             "(d) ARC em  relação HIV-", "(e) AIDS em relação HIV-"))

Capítulo 8 - Censura Intervalar e Dados Grupados

  require(survival)
  source("http://docs.ufpr.br/~giolo/Livro/ApendiceE/Turnbull.R")    # lendo a função Turnbull.R 
  left<-c(0,1,4,5,5)
  right<-c(5,8,9,8,9)
  dat<-as.data.frame(cbind(left,right))
  attach(dat)
  right[is.na(right)] <- Inf
  tau <- cria.tau(dat)
  p <- S.ini(tau=tau)
  A <- cria.A(data=dat,tau=tau)
  tb <- Turnbull(p,A,dat)
  tb


 rm(list=ls())
 require(survival)
 source("https://docs.ufpr.br/~giolo/Livro/ApendiceE/Turnbull.R")                    # lendo Turnbull.R 
 dat <- read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/breast.txt", h=T)    # lendo os dados
 dat1 <- dat[dat$ther==1,]
 dat1$right[is.na(dat1$right)] <- Inf
 tau <- cria.tau(dat1)
 p <- S.ini(tau=tau)
 A <- cria.A(data=dat1,tau=tau)
 tb1 <- Turnbull(p,A,dat1)
 tb1
 dat1 <- dat[dat$ther==0,]
 dat1$right[is.na(dat1$right)] <- Inf
 tau <- cria.tau(dat1)
 p <- S.ini(tau=tau)
 A <- cria.A(data=dat1,tau=tau)
 tb2 <- Turnbull(p,A,dat1)
 tb2
 plot(tb1$time, tb1$surv, lty=1, type = "s", ylim=c(0,1), xlim=c(0,50), xlab="Tempos (meses)", ylab="S(t)")
 lines(tb2$time, tb2$surv, lty=4, type="s")
 legend(1, 0.3, lty=c(1,4), c("Radioterapia","Radioterapia + Quimioterapia"), bty="n", cex=0.8)

 p <-dat$left+((dat$right-dat$left)/2)
 pm <-ifelse(is.finite(p),p,dat$left)
 cens <- ifelse(is.finite(p),1,0)
 ekm<-survfit(Surv(pm,cens)~ther, type=c("kaplan-meier"), data=dat)
 plot(tb1$time, tb1$surv, lty=1, type="s", ylim=c(0,1), xlim=c(0,50), xlab="Tempos (meses)", ylab="S(t)")
 lines(tb2$time, tb2$surv, lty=2, type="s")
 lines(ekm[1]$time, ekm[1]$surv, type="s", lty=3)
 lines(ekm[2]$time, ekm[2]$surv, type="s", lty=3)
 legend(1, 0.3, lty=c(1,2), c("Radioterapia","Radioterapia + Quimioterapia"), bty="n", cex=0.8)
 legend(1, 0.21, lty=3, "Usando Ponto Médio dos Intervalos", bty="n", cex=0.8)


 breast<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/breast.txt", h=T)   
 attach(breast)
 cens1<-ifelse(cens==1,3,0)
 require(survival)
 fit1<-survreg(Surv(left,right,type="interval2")~ther, breast, dist="logistic")
 summary(fit1)
 fit2<-survreg(Surv(left,right,type="interval2")~ther, breast, dist="gaussian")
 summary(fit2)

 t1<-0:50
 b0<-fit1$coefficients[1]
 b1<-fit1$coefficients[2]
 s<- fit1$scale
 a1<- t1-(b0+b1)
 e1<- exp(a1/s)
 st1<-1/(1+e1)
 t2<-0:50
 a2<- t2-(b0)
 e2<- exp(a2/s)
 st2<-1/(1+e2)
 plot(t1, st1, type="l", lty=3, ylim=range(c(0,1)), xlab="Tempos", ylab="S(t) estimada")
 lines(t2, st2, type="l", lty=3)
 t1<-0:45
 b0<-fit2$coefficients[1]
 b1<-fit2$coefficients[2]
 s<- fit2$scale
 a1<- t1-(b0+b1)
 st11<- 1-pnorm(a1/s)
 t2<-0:60
 a2<-t2-(b0)
 st22<- 1 -pnorm(a2/s)
 lines(t2, st22, type="l", lty=2)
 lines(t1, st11, type="l", lty=2)
 legend(1,0.2, lty=c(3,2), c("Logística","Gaussiana"), lwd=1, bty="n", cex=0.8) 


A análise a seguir usa o pacote “icenReg”, tendo em vista o pacote “intcox” não estar mais disponível no R.

 breast<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/breast.txt", h=T) 
 attach(breast)
 require(icenReg)    # instalar previamente o pacote 
 fit1<- ic_sp(cbind(left, right) ~ ther, model = 'ph', bs_samples = 100, data = breast)
 summary(fit1)


 mang<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/mang.txt", h=T)  
 attach(mang)
 require(survival)
 ekm<-survfit(Surv(ti,cens)~1, conf.type="none")
 summary(ekm)

 mang1<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/dadmang.txt", h=T)  # ver Apêndice A5
 attach(mang1)
 require(survival)
 
 fit1<-glm(y~ -1 + int1 + int2 + int3 + int4 + int5 + int6 + int7 + int8 + int9 + int10 + int11 + int12 +
           factor(bloco,levels=5:1) + factor(copa)+ factor(cavalo) + factor(copa)*factor(cavalo),
           family=binomial(link="cloglog"))
 anova(fit1)
 fit2 <-glm(y~ -1 + int1 + int2 + int3 + int4 + int5 + int6 + int7 + int8 + int9 + int10 + int11 + int12 +
            factor(bloco,levels=5:1) + factor(copa)+ factor(cavalo) + factor(copa)*factor(cavalo),
            family=binomial(link="logit"))
 anova(fit2)

 fit1<-glm(y~ -1 + int1 + int2 + int3 + int4 + int5 + int6 + int7 + int8 + int9 + int10 +
           int11 + int12 + factor(bloco,levels=5:1) + factor(copa), family=binomial(link="cloglog"))
 summary(fit1)
 fit2<-glm(y~ -1 + int1 + int2 + int3 + int4 + int5 + int6 + int7 + int8 + int9 + int10 +
           int11 + int12 + factor(bloco,levels=5:1) + factor(copa), family=binomial(link="logit"))
 summary(fit2)

Capítulo 9 - Análise de Sobrevivência Multivariada

 leucc<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/leucc.txt", h=T)  # dados dicotomizados
 attach(leucc)
 require(survival)
 id<-1:103
 fit3a<-coxph(Surv(tempos,cens)~leuinic+idadec+zpesoc+pasc+vacc+frailty(id,dist="gamma"), data=leucc, 
              x = T, method="breslow")
 summary(fit3a)
 wi<-fit3a$frail
 zi<-exp(wi)
 plot(id,zi, xlab="Crianças (1 a 103)", ylab="zi estimados", pch=16)
 abline(h=1,lty=2)


 cattle<-read.table("https://docs.ufpr.br/~giolo/Livro/ApendiceA/cattle.txt",h=T) 
 attach(cattle)
 require(survival)
 fit1<-coxph(Surv(tempo,censura)~factor(sex) + agedam + frailty(sire,dist="gamma"), data=cattle)
 summary(fit1)
 fit2<-coxph(Surv(tempo,censura)~factor(sex) + frailty(sire,dist="gamma"), data=cattle)
 summary(fit2)

 H0<-basehaz(fit2, centered=F)
 S0<-exp(-H0$hazard)
 S3m<-S0^(1.798*exp(0.797))    # machos touro 3
 S3f<-S0^(1.798)               # fêmeas touro 3
 S1m<-S0^(0.767*exp(0.797))    # machos touro 1
 S1f<-S0^(0.767)               # fêmeas touro 1
 par(mfrow=c(1,2))
 t<-H0$time
 plot(t, S1m, type="s", ylim=range(c(0,1)), xlab="Tempo (dias)", ylab="Sobrevivência Estimada")
 lines(t, S1f, type="s",lty=4)
 legend(142, 0.25, lty=c(1,4),c("Machos","Fêmeas"), bty="n", cex=0.8)
 title("Touro 1")
 plot(t, S3m, type="s", ylim=range(c(0,1)), xlab="Tempo (dias)", ylab="Sobrevivência Estimada")
 lines(t, S3f, type="s", lty=4)
 legend(142, 0.25, lty=c(1,4), c("Machos","Fêmeas"), bty="n", cex=0.8)
 title("Touro 3")