具有审查和 Tidy 模型的多状态生存模型

问题描述 投票:0回答:1

我正在尝试使用 tidymodels 的新审查功能来创建多状态生存模型,但遇到了问题。当我尝试拟合我的模型时,我看到以下错误。通常这可以通过在 coxph() 函数中设置 id 变量来解决,但我无法让它与 tidymodels 一起使用。

生存错误::coxph(公式 = x ~ ., data = data, x = TRUE, model = TRUE) : 多状态模型需要 id 声明

下面的可重现示例

library(tidyverse)
library(tidymodels)
library(censored)


df <- tibble(
  
  id = seq(1:1000),
  sex = sample(c("Male","Female"), 1000, replace = T),
  duration = rnorm(1000, mean = 75, sd = 7),
  outcome = sample(c("censor","Lost","Won"), 1000, replace = T)
  
) %>%
  mutate(
    outcome = factor(outcome)
  )



mod_df <- df %>%
   mutate(
     sale_surv = Surv(duration, outcome),
     .keep = "unused"
   )


set.seed(1988)

mod_split <- initial_split(mod_df)
mod_train <- training(mod_split)
mod_test <- testing(mod_split)

mod_rec <- recipe(sale_surv ~ sex, data = mod_train, id = id) 

mod_spec <- proportional_hazards() %>%
  set_mode("censored regression") %>%
  set_engine("survival") 

mod_wflow <- workflow() %>%
  add_recipe(mod_rec) %>%
  add_model(mod_spec)


mod_fit <- fit(mod_wflow, data = mod_train)

r tidymodels
1个回答
0
投票

我可以告诉您如何执行此操作,但我遇到了此特定功能的错误。

为此,您需要为

add_model()
选项指定一个值。当调用
formula
时,这会在最后一刻将其直接提供给模型公式。它不进行任何预处理(让模型来处理它)。
问题是 dplyr 认为我们的意思是 

fit()

(但我们不是)。在这里,

dplyr::id()
在配方方面是一个
特殊
。实际上没有 id 函数(在生存中),但这是生存添加到公式方法中的关键字(老式公式 ́\
(ツ)
/́. 我已提交问题:

https://github.com/tidymodels/workflows/issues/268

这是显示失败的表示:

id()

	
© www.soinside.com 2019 - 2024. All rights reserved.