我正在使用经过审查的临床数据(即事件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)