使用survival::tmerge()创建依赖于时间的协变量时产生NAs

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

我有一个与 R 包生存中的函数 tmerge() 相关的问题。 尝试设置具有时间相关协变量的数据集,但初始时间段的值设置为 NA(请参见下面的 reprex)。

我有一个包含基线变量、时间和事件数据的数据框,以及第二个包含基线后 3 个月测量的变量的数据框。

已使用与 Terry Therneau 和 Co. 的小插图中的 PBC 数据示例相同的方法(或至少尝试过!https://cran.r-project.org/web/packages/survival/vignettes/timedep .pdf)。上页。 11 它说: “tdc 和 cumtdc 参数可以有 1、2 或 3 个参数。第一个始终是 时间点,第二个(如果存在)是要插入的值,可选的第三个参数是初始值。如果 tdc 调用只有一个参数,则结果始终是 0/1 变量,时间点之前为 0,之后为 1。对于 2 或 3 参数形式,新变量第一次定义之前(第一个时间点之前)的起始值将是初始值。 初始值的默认值为 NA,即 tdcstart 选项的值”不确定我是否理解以粗体突出显示的最后一位。

当我复制 PBC 示例时,不会遇到同样的问题。尝试在第二个 tmerge 调用中指定 init 和/或 tdcstart 选项,但没有成功(两者都会生成错误)。协变量或结果(时间、事件)中没有缺失值。

伸出援手,因为我无法找出我做错了什么。

提前非常感谢!

PS。这是我的第一篇文章,如果我错过了什么,请道歉。希望这是有道理的。

library(tidyverse)
library(survival)

set.seed(123)

# Generate data
df_base <- tibble(
  ID = as.numeric(1:100),
  time = as.integer(runif(100, min = 100, max = 730)),
  status = as.factor(sample(x = c("0", "1"), prob = c(0.7, 0.3), size = 100, replace = T)),
  vas = as.integer(rnorm(n = 100, mean = 53, sd = 10)))

df_fu <- tibble(
  ID = as.numeric(1:100),
  fu_3mo = 91,
  vas = as.integer(rnorm(n = 100, mean = 44, sd = 15)))

# Baseline data
head(df_base)
#> # A tibble: 6 x 4
#>      ID  time status   vas
#>   <dbl> <int> <fct>  <int>
#> 1     1   281 0         45
#> 2     2   596 0         55
#> 3     3   357 0         50
#> 4     4   656 1         49
#> 5     5   692 0         43
#> 6     6   128 1         52

# Follow-up data
head(df_fu)
#> # A tibble: 6 x 3
#>      ID fu_3mo   vas
#>   <dbl>  <dbl> <int>
#> 1     1     91    76
#> 2     2     91    63
#> 3     3     91    40
#> 4     4     91    52
#> 5     5     91    37
#> 6     6     91    36

# Generate time-dependent covariates
df_tdc <- tmerge(df_base, df_base, id = ID, surgery = event(time, status))

head(df_tdc)
#>   ID time status vas tstart tstop surgery
#> 1  1  281      0  45      0   281       0
#> 2  2  596      0  55      0   596       0
#> 3  3  357      0  50      0   357       0
#> 4  4  656      1  49      0   656       1
#> 5  5  692      0  43      0   692       0
#> 6  6  128      1  52      0   128       1

df_tdc <- tmerge(df_tdc, df_fu, id = ID, vas = tdc(fu_3mo, vas))
#> Warning in tmerge(df_tdc, df_fu, id = ID, vas = tdc(fu_3mo, vas)): replacement
#> of variable 'vas'

head(df_tdc)
#>   ID time status vas tstart tstop surgery
#> 1  1  281      0  NA      0    91       0
#> 2  1  281      0  76     91   281       0
#> 3  2  596      0  NA      0    91       0
#> 4  2  596      0  63     91   596       0
#> 5  3  357      0  NA      0    91       0
#> 6  3  357      0  40     91   357       0

reprex 包于 2021 年 11 月 26 日创建(v0.3.0)

r survival-analysis survival
1个回答
0
投票

我没有答案,但还有关于同一主题的另一个问题。我也遇到了这个问题。当我对第一条时间相关协变量线 (tdc) 的 NA 执行 coxph() 时,模型无法收敛。当我将 NA 更改为 0 时,得到了一个不错的模型,但我不知道用 0 替换 NA 是否有效。我的变量是0/1。那么更换NA有效吗?

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