Search code examples
rsurveysurvival-analysisweightedcox-regression

How does svycoxph handle ties?


As far as I know, coxph handles ties by default, and there are 3 options for handling ties. I wonder how svycoxph in the survey package handles ties. Is it the same as coxph? There does not seem to be an option for this.

Nothing about ties is mentioned in CRAN and I couldn't find anything about it. Does anyone know about this?


Solution

  • For svycoxph, according to the documentation, it is possible to pass the arguments of coxph in 3 dots ...

    ... - For AIC, more models to compare the AIC of. For svycoxph, other arguments passed to coxph.

    If we look at the arguments for coxph

    args(coxph)
    function (formula, data, weights, subset, na.action, init, control, 
        ties = c("efron", "breslow", "exact"), singular.ok = TRUE, 
        robust, model = FALSE, x = FALSE, y = TRUE, tt, method = ties, 
        id, cluster, istate, statedata, nocenter = c(-1, 0, 1), ...) 
    

    where the ties (by default "efron") is also assigned in the method

    Also, by looking at the source code of one of the methods of svycoxph

    getAnywhere("svycoxph.svyrep.design")
    
    function (formula, design, subset = NULL, rescale = NULL, ..., 
        return.replicates = FALSE, na.action, multicore = getOption("survey.multicore")) 
    {
    
    ...
    ...
    if (full$method %in% c("efron", "breslow")) { ### here
            if (attr(full$y, "type") == "right") 
                fitter <- coxph.fit
            else if (attr(full$y, "type") == "counting") 
                fitter <- survival::agreg.fit
            else stop("invalid survival type")
        }
        else fitter <- survival::agexact.fit
        
    ...
    

    Using a small reproducible example from the documentation of svycoxph

    > svycoxph(Surv(time,status>0)~log(bili)+protime+albumin,design=rpbc, ties = "efron")
    Call:
    svycoxph.svyrep.design(formula = Surv(time, status > 0) ~ log(bili) + 
        protime + albumin, design = rpbc, ties = "efron")
    
                  coef exp(coef) se(coef)      z        p
    log(bili)  0.88592   2.42522  0.09838  9.005  < 2e-16
    protime    0.24487   1.27745  0.09373  2.612  0.00899
    albumin   -1.04298   0.35240  0.21966 -4.748 2.05e-06
    
    Likelihood ratio test=NA  on 3 df, p=NA
    n= 312, number of events= 144 
    > svycoxph(Surv(time,status>0)~log(bili)+protime+albumin,design=rpbc, ties = "breslow")
    Call:
    svycoxph.svyrep.design(formula = Surv(time, status > 0) ~ log(bili) + 
        protime + albumin, design = rpbc, ties = "breslow")
    
                  coef exp(coef) se(coef)      z       p
    log(bili)  0.88527   2.42363  0.09834  9.002 < 2e-16
    protime    0.24494   1.27754  0.09373  2.613 0.00897
    albumin   -1.04112   0.35306  0.21992 -4.734 2.2e-06
    
    Likelihood ratio test=NA  on 3 df, p=NA
    n= 312, number of events= 144