Я выполняю усиленную регрессию Кокса (пошагово вперед) с цензурированными клиническими данными (т. Е. Событие 0/1 и время до события). У меня следующая ошибка ...
Error in coxph.wtest(fit$var[nabeta, nabeta], temp, control$toler.chol) :
NA/NaN/Inf in foreign function call (arg 3)
... Я предполагаю (основываясь на этом другом вопросе ), потому что в одном (или нескольких) шагах начальной загрузки повторная выборка случайным образом принимает только значения, равные 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? Или другой подход более полезный?
EDIT Я протестировал распределение событий в каждой итерации bootstrap, и кажется, что ошибка может быть другой, другой ... так что, Я не понимаю эту проблему: === (
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)