Influence test [Experimental!!]
Compare two estimates using their influence function
influenceTest(object, ...) ## S3 method for class 'list' influenceTest( object, newdata, times, type, cause, keep.newdata = TRUE, keep.strata = FALSE, ... ) ## Default S3 method: influenceTest(object, object2, band = TRUE, ...)
object |
either a list of models or an object of class predictCox or predictCSC. |
... |
additional arguments to be passed to lower level functions. |
newdata |
[data.frame or data.table] Contain the values of the predictor variables defining subject specific predictions. |
times |
[numeric vector] Time points at which to return the estimated absolute risk. |
type |
[character]the type of predicted value. |
cause |
[integer/character] Identifies the cause of interest among the competing events. |
keep.newdata |
[logical] If |
keep.strata |
[logical] If |
object2 |
same as predict1 but for another model. |
band |
[logical] If |
library(lava) library(survival) library(prodlim) library(data.table) n <- 100 #### Under H1 set.seed(1) newdata <- data.frame(X1=0:1) ## simulate non proportional hazard using lava m <- lvm() regression(m) <- y ~ 1 regression(m) <- s ~ exp(-2*X1) distribution(m,~X1) <- binomial.lvm() distribution(m,~cens) <- coxWeibull.lvm(scale=1) distribution(m,~y) <- coxWeibull.lvm(scale=1,shape=~s) eventTime(m) <- eventtime ~ min(y=1,cens=0) d <- as.data.table(sim(m,n)) setkey(d, eventtime) ## fit cox models m.cox <- coxph(Surv(eventtime, status) ~ X1, data = d, y = TRUE, x = TRUE) mStrata.cox <- coxph(Surv(eventtime, status) ~ strata(X1), data = d, y = TRUE, x = TRUE) ## compare models # one time point outIF <- influenceTest(list(m.cox, mStrata.cox), type = "survival", newdata = newdata, times = 0.5) confint(outIF) # several timepoints outIF <- influenceTest(list(m.cox, mStrata.cox), type = "survival", newdata = newdata, times = c(0.5,1,1.5)) confint(outIF) #### Under H0 (Cox) #### set.seed(1) ## simulate proportional hazard using lava m <- lvm() regression(m) <- y ~ 1 distribution(m,~X1) <- binomial.lvm() distribution(m,~cens) <- coxWeibull.lvm() distribution(m,~y) <- coxWeibull.lvm() eventTime(m) <- eventtime ~ min(y=1,cens=0) d <- as.data.table(sim(m,n)) setkey(d, eventtime) ## fit cox models Utime <- sort(unique(d$eventtime)) m.cox <- coxph(Surv(eventtime, status) ~ X1, data = d, y = TRUE, x = TRUE) mStrata.cox <- coxph(Surv(eventtime, status) ~ strata(X1), data = d, y = TRUE, x = TRUE) p.cox <- predictCox(m.cox, newdata = newdata, time = Utime, type = "survival") p.coxStrata <- predictCox(mStrata.cox, newdata = newdata, time = Utime, type = "survival") ## display library(ggplot2) autoplot(p.cox) autoplot(p.coxStrata) ## compare models outIF <- influenceTest(list(m.cox, mStrata.cox), type = "survival", newdata = newdata, times = Utime[1:6]) confint(outIF) #### Under H0 (CSC) #### set.seed(1) ff <- ~ f(X1,2) + f(X2,-0.033) ff <- update(ff, ~ .+ f(X3,0) + f(X4,0) + f(X5,0)) ff <- update(ff, ~ .+ f(X6,0) + f(X7,0) + f(X8,0) + f(X9,0)) d <- sampleData(n, outcome = "competing.risk", formula = ff) d[,X1:=as.numeric(as.character(X1))] d[,X2:=as.numeric(as.character(X2))] d[,X3:=as.numeric(as.character(X3))] d[,X4:=as.numeric(as.character(X4))] d[,X5:=as.numeric(as.character(X5))] setkey(d, time) Utime <- sort(unique(d$time)) ## fit cox models m.CSC <- CSC(Hist(time, event) ~ X1 + X2, data = d) mStrata.CSC <- CSC(Hist(time, event) ~ strata(X1) + X2 + X3, data = d) ## compare models outIF <- influenceTest(list(m.CSC, mStrata.CSC), cause = 1, newdata = unique(d[,.(X1,X2,X3)]), times = Utime[1:5]) confint(outIF)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.