【问题标题】:Kaplan-Meier survival estimates for multiple variables in RR中多个变量的Kaplan-Meier生存估计
【发布时间】:2018-11-08 11:51:31
【问题描述】:

我正在尝试找到多个变量的 Kaplan-Meier 估计值。

我有一个如下所示的 data.set:

      fw_year steroid_dos status     current_dos
1   6.3271732       0.0      0        7.5-14.9 mg
24  4.5530457       0.0      0             no-use
29  0.9137577       0.0      0             no-use
33  7.3675566     367.5      0       15.0-24.9 mg
42  3.3127995       0.0      0             no-use
51  9.8288841       0.0      0          >0-4.9 mg
53  8.3696098       0.0      0          >0-4.9 mg

我使用了代码 fit1<-survfit(Surv_df ~ current_dos, data = df1) 获取每个类别的以下结果。

                current_dos=no-use 
 time n.risk n.event survival std.err lower 95% CI upper 95% CI
   21    480       1    0.998 0.00208        0.994        1.000
  189    447       1    0.996 0.00305        0.990        1.000
  203    444       1    0.993 0.00378        0.986        1.000
  208    443       1    0.991 0.00438        0.983        1.000

我的问题是如何执行此操作以获得药物类别的 kaplan-meier 估计值,以在年份列中显示每 1、5 和 10 年的结果?

【问题讨论】:

  • summary(fit1, times =c(1,5,10))
  • 我正在尝试分别显示 1、5、10 年的答案,你知道我可以如何更改代码来显示这个吗?
  • 您想要 1、5 和 10 年的信息放在单独的数据框中,还是想要在一个数据框中的列中显示这些信息?
  • 我想要相同数据框中的结果

标签: r survival-analysis


【解决方案1】:

以后请以人们可以复制并粘贴到控制台的格式发布您的数据。通常人们为此使用dput。 如果您希望每列按组进行生存估计,请先进行拟合,然后将结果放入 data.frame。然后传播结果。如果您将time ~strata 切换为strata ~ time,那么您的药物将出现在列中,而不是列名中。

library(survival)
library(data.table)
library(dplyr)

fit1 <- survfit(Surv(time,status)~sex,data = lung)
#get time point estimates
#just example time points for my data
#replace times with times = c(1,5,10)
sum_fit1 <- summary(fit1, times = c(150,365,800))
#put into dataframe and pull out relevant information
fit1_df <- data.frame(sum_fit1[c(2:6,8:11)],stringsAsFactors = FALSE) %>% 
    #change the strata column to make it more readable      
    mutate(strata = ifelse(strata == "sex=1", "Male","Females"))
#transpose data and columns you want in summary table
fit1_df2 <- dcast(
  setDT(fit1_df)
  , time ~ strata
  , value.var = c("n.risk"
                  ,"n.event", "surv","std.err","lower","upper")) 

【讨论】:

  • 在这部分代码中: mutate(strata = ifelse(strata == "sex=1", "Male","Females")) ,我应该输入我的药物剂量吗?
  • 是的,我会把它放在那里只是为了清理分层变量
  • fit1_df % mutate(strata = ifelse(strata == "no-use" ,">0-4.9 mg","5.0-7.4 mg","7.5-14.9 mg","15.0-24.9 mg",">=25 mg" )) 这是我放入我的 R 工作室的东西出现评估错误:未使用的参数(“7.5-14.9 mg”、“15.0-24.9 mg”、“>=25 mg”)。我不明白我是否正确地完成了代码?
  • 你必须嵌套你的ifelse 语句,看这里怎么做:stackoverflow.com/questions/18012222/nested-ifelse-statement 你也可以发布运行这个并发布数据dput(data.frame(sum_fit1[c(2:6,8:11)],stringsAsFactors = FALSE) )
猜你喜欢
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多