2025-01-12 00:52:51 +08:00

28 lines
629 B
R

#
# Test out the rescaling done for Surv objects
#
library(rpart)
require(survival)
set.seed(10)
aeq <- function(x,y, ...) all.equal(as.vector(x), as.vector(y), ...)
tdata <- data.frame(time=c(1,4,3,2,5,7,8,9,4), status=c(0,1,1,0,0,1,1,0,1),
x=1:9)
fit2 <- rpart.exp(Surv(tdata$time, tdata$status), NULL, wt=rep(1,9))
#
# Here is what it should be, in order
# for the intervals (0,3], (3,4], (4,7], (7,9]
deaths <- c( 1, 2, 1, 1)
pyears <- c(24, 6, 10, 3)
rate <- deaths/pyears
cumhaz <- cumsum(c(0, rate*c(3,1,3,2)))
aeq(fit2$y[,2], tdata$status)
aeq(fit2$y[,1], approx(c(0,3,4,7,9), cumhaz, tdata$time)$y)