0

我的原始帖子目前尚未得到答复且有些开放式,可以在这里找到

我一直在尝试弄清楚如何使用它,并将一些示例数据关联起来,我已经到达了哪里以及我当前的问题是什么。

因此,我的数据,或者更确切地说是我的数据的简短示例,如下所示:

zipcode xcoord        ycoord    age_age6574 age_age75plus   sex_female  stage_late  death_death access  TruncTime
 51062  211253.4259 4733174.483     0           1               0             0         1           40      121
 51011  212255.621  4757938.874     0           1               0             0         0           43      121
 51109  215303.4471 4721047.303     0           1               1             1         0           21      121

该数据已经过预处理,因此存在虚拟/二进制变量代替实际类别age_age6574- 并age_age75plus构成一个类别,sex_female另一个,stage_late另一个,death_death另一个。 Access是一个连续变量。TruncTime将被视为离散时间变量。将用作审查变量的变量将是death_death.

调用函数:

因此,要导入我执行以下操作的所有内容:

 from rpy2 import robjects
 from rpy2.robjects.packages import importr
 from rpy2.robjects.vectors import DataFrame
 survival = importr('survival')
 coxph = survival.coxph
 Surv = survival.Surv
 theData = DataFrame.from_csvfile(newDataFile, header=True, sep=',')

所以一切都准备好了考克斯比例危害 - 我想!

在 RI 内可以:

 coxph(formula = Surv(TruncTime, death_death) ~ age_age6574 + 
 age_age75plus + sex_female + stage_late + access, method = "breslow")

一切正常。

当我在 Python 中做同样的事情时,使用我所描述的一切,我得到一个错误,内容如下:

这是函数调用:

  coxph(Surv('TruncTime', 'death_death'), 'age_age6574'+'age_age75plus'+'sex_female'+'stage_late'+'access', data = theData, method = 'breslow')

这是返回的错误:

  Error in (function (time, time2, event, type = c("right", "left", "interval",  : 
  Time variable is not numeric

所以,我想知道我在函数调用中做错了什么(为什么它会返回这个错误)以及我如何正确调用它?此外,我还想知道是否有办法将censoring'0' 更改为 '1'(反转审查变量的工作方式)?

::::更新::::

所以我发现我的部分问题是指定使用哪些列/属性。显然, rpy2 需要列的数字索引来调用函数。所以:

 Surv(theData[9], theData[7])

为生存部分coxph。该Surv部分有效。

现在,我仍在尝试弄清楚如何指定其他所有内容。即:

-如何指定要在构建模型中使用的其他变量。使用+in 将这些变量链接在一起存在问题。也~不能像在常规 R 中那样工作。以下不工作

  coxph(Surv(theData[9], theData[7])~theData[3]+theData[4]+theData[5]+theData[6]+theData[8], data = theData, method = 'breslow')

我还尝试用“,”替换“~”,例如:

  coxph(Surv(theData[9], theData[7]), theData[3]+theData[4]+theData[5]+theData[6]+theData[8], data = theData, method = 'breslow')

- 这些肯定有问题,+我不确定用~a替换它,是否真的有效。

4

1 回答 1

1

最好使用Formula.

这行得通吗?

from rpy2.robjects import Formula 
coxph(Formula("Surv(TruncTime, death_death) ~ " \
              "age_age6574 + age_age75plus + sex_female + stage_late + access"),
      data = theData, method = 'breslow')
于 2013-07-23T21:48:07.000 回答