Search code examples
rmodelingsurvival-analysis

differences between sampleSurv, getFitEsts and getSCurves in icenReg


I would like to

  • obtain the predicted time of the event, given a set of covariates
  • obtain the time at which the risk is equal to my specified threshold,
  • given covariates obtain the risk, given time and covariates

All this using ic_par (parametric) or ic_npar (non-parametric) or ic_sp (semi-parametric) models (not bayesian models) from icenReg

There are 3 functions in icenReg (https://cran.r-project.org/web/packages/icenReg/icenReg.pdf) that I believe do at least two of those things:

sampleSurv

enter image description here

getFitEsts

enter image description here enter image description here

getSCurves

enter image description here enter image description here

Can someone explain what those three functions do? Especially the difference between sampleSurv and getFitEsts?


Solution

  • From what I understand, the time to the event is modelled as a probability curve. So you do not obtain a defined predicted time to the event, but rather a probability of this event occuring through time. Thus, you can obtain the probability of the event to occur after X days, or you can obtain the time at which the event has a probability of X % to have occured.

    getFitEsts() will provide these 2 estimates from an object previously fitted by ic_sp(), ic_par() or ic_bayes()

    Here is an example of how to obtain these estimates, with an example from icenReg package :

    data("IR_diabetes")
    flatPrior_fit <- ic_bayes(cbind(left, right) ~ gender, data = IR_diabetes, model = "po", dist = "gamma")
    
    newdata <- data.frame(gender = c(unique(IR_diabetes$gender))) 
    rownames(newdata) <- c(as.character(unique(IR_diabetes$gender)))
    
    # plot the survival probability curve 
    plot(flatPrior_fit) 
    # plot the same curve according to each factor
    plot(flatPrior_fit,newdata) 
    
    maleCovs <- data.frame(gender = c("male")) 
    femaleCovs <- data.frame(gender = c("female")) 
    
    # median survival time as calculated by the model if males and females are considered together
    # = 50 % probability of the event occurring
    getFitEsts(flatPrior_fit , p = 0.5) 
    # median survival time for males
    getFitEsts(flatPrior_fit, newdata = maleCovs, p = 0.5) 
    # median survival time for females
    getFitEsts(flatPrior_fit, newdata = femaleCovs, p = 0.5)
    # Probability that males died at day 15 ( = 1 - probability that they survived )
    getFitEsts(flatPrior_fit, newdata = maleCovs, q = 15) 
    # Probability that males died at day 15 ( = 1 - probability that they survived )
    getFitEsts(flatPrior_fit, newdata = femaleCovs, q = 15) 
    

    getScurves() work only for semi parametric models. It allows to obtain the interval of the survival probability for each time step, as plotted on the curve :

    data("IR_diabetes")
    # fit a semi parametric model (proportional odds)
    sp_fit <- ic_sp(cbind(left, right) ~ gender, data = IR_diabetes, model = "po")
    # plot the survival curve
    plot(sp_fit,  newdata)
    # obtain the intervals and associated survival probability of this survival curve for each time step
    getSCurves(sp_fit,newdata)
    

    Finally, sampleSurv() draw samples from the probability curve you fitted, contained between the intervals computed, according to the quantile you need. These results are variable because there is multiple possibilities between these intervals.

    I hope it helped a bit to understand these functions