【问题标题】:R: Using Log Rank Test (survdiff)R:使用对数秩检验 (survdiff)
【发布时间】:2015-03-03 20:20:32
【问题描述】:

好的,所以我有一个如下所示的数据框:

head(exprs, 21)

   sample expr              ID X_OS
1     BIX high TCGA_DM_A28E_01   26
2     BIX high TCGA_AY_6197_01   88
3     BIX high TCGA_HB_KH8H_01  553
4     BIX  low TCGA_K4_6303_01  256
5     BIX  low TCGA_F4_6703_01  491
6     BIX  low TCGA_Y7_PIK2_01  177
7     BIX  low TCGA_A6_5657_01  732
8     HEF high TCGA_DM_A28E_01   26
9     HEF high TCGA_AY_6197_01   88
10    HEF high TCGA_F4_6703_01  491
11    HEF high TCGA_HB_KH8H_01  553
12    HEF  low TCGA_K4_6303_01  256
13    HEF  low TCGA_Y7_PIK2_01  177
14    HEF  low TCGA_A6_5657_01  732
15    TUR high TCGA_DM_A28E_01   26
16    TUR high TCGA_F4_6703_01  491
17    TUR high TCGA_Y7_PIK2_01  177
18    TUR  low TCGA_K4_6303_01  256
19    TUR  low TCGA_AY_6197_01   88
20    TUR  low TCGA_HB_KH8H_01  553
21    TUR  low TCGA_A6_5657_01  732

简单地说,对于每个sample,有 7 名患者,每个患者都有生存时间 (X_OS) 和表达水平 highlow (expr)。在下面的代码中,我希望获取第一个样本并通过survdiff 函数运行它,输出将转到dfx。但是,我是生存分析的新手,我不确定如何使用 survdiff 函数的参数。我希望比较每个samplehighlow 表达式组。如何编辑函数expfun 以产生我需要的survdiff 输出?此外,理想情况下,我很想从中取出 pvalues,但我可以在以后的步骤中进行处理。谢谢!

expfun = function(x) {
  survdiff(Surv(x$X_OS, x$expr))
}

dfx <- pblapply(split(exprs[c("expr", "X_OS")], exprs$sample), expfun)

【问题讨论】:

    标签: r survival-analysis


    【解决方案1】:

    试试这个。我添加了一个适当的 Surv() 调用,因为您只有时间并且没有状态参数,我将它变成了一个公式(在波浪号的另一边使用预测器),因为 Surv 函数需要状态作为它的第二个参数和 @987654322 @ 期望一个公式作为它的第一个参数。这意味着您需要使用常规的 R 回归调用约定,其中列名用作公式标记,数据框被提供给数据参数。如果你有一个审查变量,它将作为第二个 Surv 参数而不是我现在在那里的1

     expfun = function(x) {
      survdiff( Surv( X_OS, rep(1,nrow(x)) ) ~ expr, data=x)
    }
    
    dfx <- lapply(split(exprs[c("expr", "X_OS")], exprs$sample), expfun)
    

    这是 print.survdiff 的结果:

    > dfx
    $BIX
    Call:
    survdiff(formula = Surv(X_OS, rep(1, nrow(x))) ~ expr, data = x)
    
              N Observed Expected (O-E)^2/E (O-E)^2/V
    expr=high 3        3     2.05     0.446     0.708
    expr=low  4        4     4.95     0.184     0.708
    
     Chisq= 0.7  on 1 degrees of freedom, p= 0.4 
    
    $HEF
    Call:
    survdiff(formula = Surv(X_OS, rep(1, nrow(x))) ~ expr, data = x)
    
              N Observed Expected (O-E)^2/E (O-E)^2/V
    expr=high 4        4     3.14     0.237      0.51
    expr=low  3        3     3.86     0.192      0.51
    
     Chisq= 0.5  on 1 degrees of freedom, p= 0.475 
    
    $TUR
    Call:
    survdiff(formula = Surv(X_OS, rep(1, nrow(x))) ~ expr, data = x)
    
              N Observed Expected (O-E)^2/E (O-E)^2/V
    expr=high 3        3     1.75     0.902      1.41
    expr=low  4        4     5.25     0.300      1.41
    
     Chisq= 1.4  on 1 degrees of freedom, p= 0.235 
    

    请注意,您可以看到生成打印输出的代码:

    getAnywhere(print.survdiff)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 2021-05-08
      • 2015-05-07
      • 1970-01-01
      • 2013-09-19
      • 2021-02-11
      相关资源
      最近更新 更多