使用审查数据进行快速处理,对数据进行错误重采样

时间:2020-04-02 09:37:08

标签: r cox-regression statistics-bootstrap

我正在使用经过审查的临床数据(即事件0/1和事件发生时间)进行增强的Cox回归(逐步向前)。我遇到以下错误...

Error in coxph.wtest(fit$var[nabeta, nabeta], temp, control$toler.chol) : 
  NA/NaN/Inf in foreign function call (arg 3)

...我猜(基于此other question)是因为在一个(或几个)自举步骤中,重采样随机地仅取等于1或0的值,因此内部coxph转换为创建NA/NaN/Inf值。我使用了以下代码:

multicox.fwd.boot <- function(data, d){
  aux_data <- data[d,]

  fit_null_pfs <- coxph(Surv(time, event) ~ 1, data = aux_data) 
  fit_full_pfs <- coxph(Surv(time, event) ~ ., data = aux_data)

  fit_fw_pfs <- step(fit_null_pfs, direction = "forward", k = qchisq(0.05, 1, lower.tail = F),
                     scope = list(lower = formula(fit_null_pfs), upper = formula(fit_full_pfs)))
  cf <- coef(fit_fw_pfs)

  # bootstraping is failing because not all variables are being introduced in each step (bit.ly/2UwQCay)
  df <- setdiff(colnames(aux_data), names(cf))[-c(1,2)] #to not consider event/time
  ad <- rep(0, length(df))
  names(ad) <- df
  return(c(cf, ad))
}

cb <- censboot(data = gexclin, R = 10, statistic = multicox.fwd.boot)

有什么想法可以保持“ 0/1”事件的“平衡”分配吗?还是另一种更有用的方法?

编辑 我已经在每个引导程序的迭代中测试了事件的分布,并且似乎错误可能是另一个错误……所以,我不明白这个问题:===(

multicox.fwd.boot <- function(...){
    ...
    cat(">>>Boot iteration,\n\t", table(aux_data$event), "\n")
    ...
}

>>>Boot iteration,
     64 35 
>>>Boot iteration,
     62 37 
>>>Boot iteration,
     64 35 
>>>Boot iteration,
     57 42 
>>>Boot iteration,
     71 28 
>>>Boot iteration,
     63 36 
Error in coxph.wtest(fit$var[nabeta, nabeta], temp, control$toler.chol) : 
  NA/NaN/Inf in foreign function call (arg 3)

0 个答案:

没有答案