如何在R中创建生存对象?

时间:2013-07-20 07:45:09

标签: r survival-analysis

我在此处发布的问题与另一个question I posted two days ago about gompertz aging analysis.

密切相关

我正在尝试构建一个生存对象,参见?Surv,在R.这有望用于执行Gompertz分析以产生两个值的输出(有关详细信息,请参阅原始问题)。

我从苍蝇实验中获得了生存数据,该实验检查了各种基因型的衰老率。我可以通过多种布局获取数据,因此您可以选择最适合您的答案。

一个数据帧(wide.df)看起来像这样,其中每个基因型(Exp,其中有~640)有一行,并且日期从第4天到第98天水平顺序运行,每个新死亡数量两天。

Exp      Day4   Day6    Day8    Day10   Day12   Day14    ...
A        0      0       0       2       3       1        ...

我使用这个做例子:

wide.df2<-data.frame("A",0,0,0,2,3,1,3,4,5,3,4,7,8,2,10,1,2)
colnames(wide.df2)<-c("Exp","Day4","Day6","Day8","Day10","Day12","Day14","Day16","Day18","Day20","Day22","Day24","Day26","Day28","Day30","Day32","Day34","Day36")

另一个版本是这样的,每个“Exp”每天都有一行,并记录当天的死亡人数。

Exp     Deaths  Day     
A       0       4    
A       0       6
A       0       8
A       2       10
A       3       12
..      ..      ..

举个例子:

df2<-data.frame(c("A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A","A"),c(0,0,0,2,3,1,3,4,5,3,4,7,8,2,10,1,2),c(4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36))
    colnames(df2)<-c("Exp","Deaths","Day")

每种基因型都有大约50只苍蝇。我现在需要帮助的是如何从上述数据框之一转到工作生存对象。这个对象是什么样的?我如何顺利地从上面到生存对象?

1 个答案:

答案 0 :(得分:4)

注意到Deaths的总数是55,你说苍蝇的数量是“大约50”,我认为可能的假设是这是一个完全观察到的过程。因此,您需要复制重复的死亡,因此每次死亡都有一行,并指定事件标记为1.“长”格式显然是首选格式。然后,您可以使用“日期”和“事件”

创建Surv - 对象
?Surv
df3 <- df2[rep(rownames(df2), df2$Deaths), ]
str(df3)
#---------------------
'data.frame':   55 obs. of  3 variables:
 $ Exp   : Factor w/ 1 level "A": 1 1 1 1 1 1 1 1 1 1 ...
 $ Deaths: num  2 2 3 3 3 1 3 3 3 4 ...
 $ Day   : num  10 10 12 12 12 14 16 16 16 18 ...
#----------------------
df3$event=1
str(with(df3, Surv(Day, event) ) )
#------------------
 Surv [1:55, 1:2] 10  10  12  12  12  14  16  16  16  18  ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:2] "time" "status"
 - attr(*, "type")= chr "right"

注意:如果在coxph函数中执行此操作,则可能不需要扩展到各个日期行,因为该函数允许指定大小写权重。 (我猜测生存包中的其他回归函数也不需要这样做。)过去,Terry Therneau表达了人们在{{1}的公式界面之外创建Surv对象的困惑。 }。没有详细描述htis Surv-object的预期用途,以了解是否可以进行无扩展的加权分析。