I’m hoping to get a bootstrapped confidence interval for the c-index using validate(). I’ve used the method here that Frank suggests, though it is very slow because the model needs to be fit B x reps times. Is there a faster way to do this?
This is how I’m doing it currently:
require(rms)
DxyCI <- function (f, data, B, reps){
n <- nrow(data)
dxy <- numeric(reps)
for(i in 1:reps) {
g <- update(f, subset=sample(1:n, n, replace=TRUE))
v <- validate(g, B=B)
dxy[i] <- v['Dxy', 'index.corrected']
}
quantile(dxy, c(.025, .975))
}
N <- 100
reps <- 100
B <- 100
data <- data.frame(Y = rep(c(0,1), N/2),
X1 = rnorm(N),
X2 = rnorm(N))
f <- lrm(Y ~ X1 + X2, data = data, x = T, y = T)
DxyCI(f, data, B, reps)
I’m wondering if it’s possible to replace the v <- validate(g, B=B) line with something like: Predict(g, data = data) and then extract just a single optimism corrected Dxy for each reps, and take the quantiles of those. I have done something like that using other packages, but would like to stick to RMS if possible. The problem is that I don’t think Predict() has an option to change the data on which the predictions are being made.
If this question would be better off in a different thread I can move it.