library("JM") library("lattice") Jointmodelpred<-function(Source="D",filename,var1="CA125",var2=0,var3=0,var4=0,cutpoint=2,predictsurvtime=36){ unkpath<-"X:\\predictSurv\\Y.csv" unkpath.id<-"X:\\predictSurv\\Y.id.csv" path <- sub("X",Source,unkpath) path.id <- sub("X",Source,unkpath.id) name<- sub("Y",filename,path) name.id<- sub("Y",filename,path.id) a <- read.csv(name) b <- read.csv(name.id) numbvar1<-which(names(a)==var1) variable1<-a[,numbvar1] add1<-dim(a)[2]+1 a[,add1]<-variable1 names(a)[add1]<-"variable1" add2<-dim(a)[2]+1 a[,add2]<-rep(cutpoint,length(variable1)) names(a)[add2]<-"cutpoint" fitLME<-lme((variable1)^0.5 ~ I((obstime=cutpoint)*cutpoint)+I((obstime-cutpoint)*(obstime>cutpoint)) , random = ~ I((obstime=cutpoint)*cutpoint) | patient , data=a ,control=lmeControl(returnObject=TRUE, msMaxIter=100,maxIter=100)) numbvar2<-which(names(b)==var2) numbvar3<-which(names(b)==var3) numbvar4<-which(names(b)==var4) if(length(numbvar2)==0 && length(numbvar3)==0 && length(numbvar4)==0) { fitSURV <- coxph(Surv(Survivaltime, death) ~ 1, data = b, x = TRUE) }else if (length(numbvar2)==1 && length(numbvar3)==0) { variable2<-b[,numbvar2] fitSURV <- coxph(Surv(Survivaltime, death) ~ variable2, data = b, x = TRUE) }else if (length(numbvar2)==1 && length(numbvar3)==1 && length(numbvar4)==0) { variable2<-b[,numbvar2] variable3<-b[,numbvar3] fitSURV <- coxph(Surv(Survivaltime, death) ~ variable2+variable3, data = b, x = TRUE) }else if (length(numbvar2)==1 && length(numbvar3)==1 && length(numbvar4)==1) { variable2<-b[,numbvar2] variable3<-b[,numbvar3] variable4<-b[,numbvar4] fitSURV <- coxph(Surv(Survivaltime, death) ~ variable2+variable3+variable4, data = b, x = TRUE) }else { stop("Please enter the variables from var2") } fit.JM<- jointModel(fitLME, fitSURV, timeVar = "obstime", method = "piecewise-PH-GH") numbvar5<-which(names(b)==var1) variable5<-b[,numbvar5] j<-matrix(,(length(variable5)),1) for(i in 1:(length(variable5))){ ND2 <- subset(a,patient==i) predSurv <- survfitJM(fit.JM, newdata = ND2, idVar = "patient", survTimes= predictsurvtime) j[i]<-predSurv[[1]][[1]][1,2] } print(j) }