使用 for 循环进行事件的 R 生存分析中的错误

MD93

我对 R 有中等经验。我正在尝试使用生存包运行带有 for 循环的 Cox 回归。我的数据框 (df1) 包含多个健康结果作为“事件”。我想在健康结果和时间上回归“FA_low”,添加年龄性别和 pc1-pc10 作为协变量。

这是我使用dput(df1[1:2, -c(3,4)]以下方法生成的数据帧 (df1) 的子集

structure(list(id = c("1000016", "1000028"), FA_low = c("1", 
"1"), sex = c("F", "F"), age = c(56L, 66L), pc1 = c(125.117, 
-9.61593), pc2 = c(-67.8548, 5.7494), pc3 = c(57.7852, -1.71108
), pc4 = c(7.68796, -4.73091), pc5 = c(0.445619, -3.22911), pc6 = c(2.93785, 
-0.0760323), pc7 = c(7.02217, 2.93723), pc8 = c(4.40888, 0.982279
), pc9 = c(-0.704416, -0.161818), pc10 = c(5.46248, -0.579022
), time = c(5, 5), '250' = c(FALSE, FALSE), '250.2' = c(FALSE, 
FALSE), '250.23' = c(FALSE, FALSE), '272' = c(NA, FALSE), '272.1' = c(NA, 
FALSE), '272.11' = c(NA, FALSE), '274.1' = c(FALSE, FALSE), '278' = c(FALSE, 
FALSE), '278.1' = c(FALSE, FALSE), '351' = c(FALSE, FALSE), `'401' = c(NA, 
FALSE), '401.1' = c(NA, FALSE), '411' = c(NA, FALSE), '411.4' = c(NA, 
FALSE), '411.8' = c(NA, FALSE), '454' = c(FALSE, FALSE), '454.1' = c(FALSE, 
FALSE), '512.7' = c(FALSE, FALSE), '550' = c(NA, FALSE), '550.2' = c(NA, 
FALSE), '550.4' = c(NA, FALSE), '740' = c(NA, FALSE), '740.1' = c(NA, 
FALSE), '907' = c(FALSE, FALSE)), row.names = 1:2, class = "data.frame")

结构:

'data.frame':   426295 obs. of  41 variables:
 $ id             : chr  "1000016" "1000028" "1000033" "1000042" ...
 $ FA_low         : chr  "1" "1" "0" "0" ...
 $ sex            : chr  "F" "F" "F" "F" ...
 $ age            : int  56 66 64 50 69 63 42 41 62 64 ...
 $ pc1            : num  125.12 -9.62 -12.53 -12.29 -11.33
 $ time           : num  5 5 5 5 5 5 5 5 5 5 ...
 $ 250            : logi  FALSE FALSE FALSE NA FALSE FALSE ..

.

当我对每个健康结果单独运行没有循环的分析时,它工作正常。当我尝试使用健康结果作为迭代创建一个 for 循环时,如下所示:

for(i in 1:24){ df.model<-na.omit(df1[c(1:17,17+i)])

cox.mod <- coxph( Surv(time, i) ~ FA_low + age + sex + pc1 + pc2 + pc3 + pc4 + pc5 + pc6 + pc7 + pc8 + pc9 + pc10, data = df.model)

cox1 <- summary(cox.mod)

我收到以下错误: Error in Surv(time, i) : Time and status are different lengths

这些列中的观察数相同。我倾向于认为我的 for 循环与 Surv() 函数的工作方式不匹配。我浏览了 Surv() 包的文档,但我仍然无法解决这个问题。我已经看到了关于“时间”而不是事件的 for 循环的问题和答案。我如何创建一个 for 循环来处理此生存分析中的事件迭代?

裂缝

我认为您看到的错误与Surv()期望其参数在coxph(). 它期望列名作为变量而不是它们的位置(即您对 的使用i)。一种解决方案是status直接调用每个值看一下这个:

library(survival)
#> Warning: package 'survival' was built under R version 4.0.5

test1 <- list(time=c(4,3,1,1,2,2,3), 
              status=c(1,1,1,0,1,1,0), 
              x=c(0,2,1,1,1,0,0), 
              sex=c(0,0,0,0,1,1,1),
              status2=c(TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE)) 

## This works

coxph(Surv(time, status) ~ x + strata(sex), test1)
#> Call:
#> coxph(formula = Surv(time, status) ~ x + strata(sex), data = test1)
#> 
#>     coef exp(coef) se(coef)     z     p
#> x 0.8023    2.2307   0.8224 0.976 0.329
#> 
#> Likelihood ratio test=1.09  on 1 df, p=0.2971
#> n= 7, number of events= 5

## This doesn't work

coxph(Surv(time, 2) ~ x + strata(sex), test1)
#> Error in Surv(time, 2): Time and status are different lengths

## This works

coxph(Surv(time, test1[[2]]) ~ x + strata(sex), test1)
#> Call:
#> coxph(formula = Surv(time, test1[[2]]) ~ x + strata(sex), data = test1)
#> 
#>     coef exp(coef) se(coef)     z     p
#> x 0.8023    2.2307   0.8224 0.976 0.329
#> 
#> Likelihood ratio test=1.09  on 1 df, p=0.2971
#> n= 7, number of events= 5
Created on 2021-09-01 by the reprex package (v2.0.1)

请注意,在我的示例中(来自生存文档),test1是一个列表。您可能需要使用df.model[,i]或转换df.model为列表。同时,应iSurv()始终18,在18列包含在每次迭代活动资料df.model

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用R包“ Erer”中的EvReturn函数进行事件研究的循环

如何循环使用 R 中的多个模型进行生存分析?

R生存分析:使用Weibull的survreg中的错误

转换纵向数据以在R中进行事件分析

使用for循环对多个公司和多个日期进行事件研究

使用OOP进行事件冒泡

如何使用SynchronizingObject进行事件调用

如何使用 JournaledGrain 进行事件溯源

使用 Pandas 进行事件搜索

在自己的线程中运行事件循环

使用插入符号进行生存分析(随机生存林)

使用 Tornado 发出同步请求。运行时错误:在另一个循环正在运行时无法运行事件循环

在Shiny R中绘制图形;使用重复循环绘制数据以进行自动分析

使用R进行回归分析时下标越界错误

使用 C# 任务进行事件异步操作

使用输入长度值运行事件并进行验证

使用Jython和Swing进行事件处理

使用{{#event}}块在EmberJS组件中进行事件处理

使用solve_ivp同时进行事件检测

使用 kafka 和 cassandra 进行事件溯源的类别预测

使用analytics.js进行事件跟踪

如何使用决策树进行生存分析?

R中的数据表错误,准备进行回归分析

R中的格式用于生存分析的点预测

使用R中的循环回归的Difftime错误

使用R中的数据帧名称进行循环

即使在 R 中满足条件,也使用 WHILE 进行无限循环

尝试使用 R 中的 for 循环进行简单的迭代计算

使用Python中的递归进行事后遍历