Ваш fsmodel_exponential$res[2]
отрицателен, что вызывает ошибку. В экспоненциальной модели ковариаты по этим параметрам представляют собой модель ускоренного времени отказа (AFT). Вы получаете их, когда инвертируете уровни факторов sex
, что приводит к положительным оценкам максимальной вероятности.
library(survival)
library(flexsurv)
data <- lung
data$sex <- relevel(factor(data$sex, labels = c("M", "F")), "F")
formula <- with(data, Surv(time, status) ~ sex)
fsmodel_exponential <- flexsurvreg(formula, dist = "exp")
rmst_exp(t = 30, rate = fsmodel_exponential$res[1], start = 0)
#> [1] 29.23162
rmst_exp(t = 30, rate = fsmodel_exponential$res[2], start = 0)
#> [1] 1.998406
plot(fsmodel_exponential, col = c("blue", "red"),
lwd.obs = 2, xlab = "months", ylab = "Recurrence-free survival")
legend("topright", levels(data$sex), col=c("red", "blue"), lty=1)
Редактировать: В получить RMST, просто запустите:
summary(fsmodel_exponential, type = "rmst", t= 30 )
#> sex=M
#> time est lcl ucl
#> 1 30 28.7467 28.49528 28.94901
#>
#> sex=F
#> time est lcl ucl
#> 1 30 29.23162 28.98571 29.40346