source("http://192.38.117.59/~linearpredictors/datafiles/readPbc3.R") library(survival) model1 <- coxph(Surv(followup, status != 0) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age, data = pbc3) pbc3$event <- ifelse(pbc3$status != 0, 1, 0) eventtimes <- survfit(model1)$time ## we need to record the status for each patient at each event time, ## such that the covariate which includes time, has an observation for ## each patient and is used for the estimation of the effect. pbc3.split <- survSplit(pbc3, cut = eventtimes, start = "start", end = "followup", event = "event", id = "ptno") pbc3.split$end <- pbc3.split$followup ## note that the extended data set still fits model1 correctly coxph(Surv(start, end, event) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age, data = pbc3.split) ## now including interactions with functions of time. coxph(Surv(start, end, event) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age + ifelse(tment == "1", log(end), 0), data = pbc3.split) coxph(Surv(start, end, event) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age + ifelse(tment == "1", end, 0), data = pbc3.split) coxph(Surv(start, end, event) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age + I(log(alb)*log(end)), data = pbc3.split) coxph(Surv(start, end, event) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age + I(log(bili)*log(end)), data = pbc3.split) coxph(Surv(start, end, event) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age + I(log(bili)*end), data = pbc3.split) coxph(Surv(start, end, event) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age + I(log(alkph)*log(end)), data = pbc3.split) coxph(Surv(start, end, event) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age + I(log(asptr)*log(end)), data = pbc3.split) coxph(Surv(start, end, event) ~ tment + alb + log(bili) + log(alkph) + log(asptr) + age + I(age*log(end)), data = pbc3.split)