fun.csplot<-function(ds,time,entry,status,modtitle, covs=NA,strat=NA, trycov1=NA,trycov2=NA,plotscore=NA){ if(is.na(covs)) covc<-"" else covc<-paste(covs) if((!is.na(covs))&&(!is.na(strat))) pl<-"+" else pl<-"" if((is.na(covs))&&(is.na(strat))) pl<-"1" if(is.na(strat)) stratc<-"" else stratc<-paste("strata(",strat,")") ff<-as.formula(paste("Surv(",entry,",",time,",",status,")~",covc,pl,stratc)) aaa<-coxph(ff ,data=ds) resmart<-residuals(aaa,type="martingale") csresid<-aaa$y csresid[,2] <-csresid[,3]-resmart csresid[,1] <-0 plot(survfit(coxph(csresid~1),conf.type="none"),fun="cumhaz", main=modtitle, sub="Cox and Snell Residuals") abline(b=1,a=0) if(!is.na(trycov1)){ tc1<-eval(parse(text=trycov1),env=ds); plot(tc1,resmart,main=modtitle,sub="Martingale Residuals",xlab=trycov1) resdev<-residuals(aaa,type="deviance") plot(tc1,resdev,main=modtitle,sub="Deviance Residuals",xlab=trycov1) if(!is.na(trycov2)){ tc2<-eval(parse(text=trycov2),env=ds); plot(tc2,resmart,sub="Martingale Residuals",main=modtitle,xlab=trycov2) plot(tc2,resdev,sub="Deviance Residuals",main=modtitle,xlab=trycov2) } } if(!is.na(plotscore)){ plot(eval(parse(text=time),env=ds),residuals(aaa,type="score"), ylab="Score Residuals",xlab="Time", sub="Score Residuals",main=modtitle) plot(seq(aaa$n),residuals(aaa,type="dfbeta"),ylab="dfbeta",main=modtitle, xlab="Observation",sub="Response to Change in Parameters") } if(!is.na(strat)){ bbb<-survfit(aaa) uuu<-cbind(log(-log(bbb$surv)),bbb$time,rep(c(0,1),bbb$strata)) uuu<-cbind(uuu[,1],uuu) uuu<-uuu[order(uuu[,3]),] uuu[uuu[,4]==1,1]<-NA uuu[uuu[,4]==0,2]<-NA for(kk in 1:2) for(jj in 2:length(bbb$time)) if(is.na(uuu[jj,kk])) uuu[jj,kk]<-uuu[jj-1,kk] plot(uuu[,1],uuu[,2],xlab="Strata 0 log cumulative hazard", ylab="Strata>0 log cumulative hazard", main="Anderson Plot") } return(aaa) }