【问题标题】:Explanation of the formula object used in the coxph function in RR中coxph函数中使用的公式对象的解释
【发布时间】:2013-07-22 15:57:32
【问题描述】:

在生存分析方面,我完全是新手。我正在做一个需要在“survival”包中使用 coxph 函数的项目,但我遇到了麻烦,因为我不明白公式对象需要什么。

我能找到的关于该功能的大部分描述如下:

"一个公式对象,响应在 ~ 运算符的左侧,术语在右侧。响应必须是 Surv 函数返回的生存对象。"

我知道运算符左侧需要什么,问题是该函数对右侧的期望是什么。

这是我的数据的链接(实际数据集要大得多,为简洁起见,我只显示前 20 个数据点):

数据简要说明:

-Row 1 is the header

-Each row after that is a separate patient

-The first column is the age of the patient at the time of the study

-columns 2 through 14 (headed by x2-x13), and 19 (x18) and 20 (x19) are covariates such as race, relationship status, medical conditions that take on either true (1) or false (0) values. 

-columns 15 (x14) through 18 (x17) are covariates such as tumor size, which take on whole number values greater than 0.

-The second to last column "sur" is the number of months survived, and "index" is whether or not that is a right-censored time (1 for true, 0 for false). 

鉴于此数据,我需要绘制 Cox 比例风险曲线,但由于公式对象的右侧错误,我最终得到了不正确的图。

这是我的代码,“temp4”是我给数据表起的名字:

library("survival")
temp4 <- read.table("~/data.txt", header=TRUE)
seerCox <- coxph(Surv(sur, index)~ temp4$x1 + temp4$x2 + temp4$x3 + temp4$x4 + temp4$x5 + temp4$x6 + temp4$x7 + temp4$x8 + temp4$x9 + temp4$x10 + temp4$x11 + temp4$x12 + temp4$x13 + temp4$x14 + temp4$x15 + temp4$x16 + temp4$x17 + temp4$x18 + temp4$x19, data=temp4, singular.ok=TRUE)
plot(survfit(seerCox), main= "Cox Estimate", mark.time=FALSE, ylab="Probability", xlab="Survival Time in Months", col=c("blue", "red", "green"))

我还应该注意,我已尝试将您看到的右侧替换为数字 1,一个句点,将其留空。这些方法产生卡普兰-迈尔曲线。

以下是控制台输出:

每一新行都是一个错误示例,具体取决于我过滤数据的方式。 (即如果我只包括年龄大于 85 岁的患者等)

如果有人能解释它是如何工作的,将不胜感激。

PS- 我已经搜索了一个多星期的解决方案,作为最后的手段,我在这里寻求帮助。

【问题讨论】:

  • 您需要编辑您的问题以包含正在使用的代码以及任何错误或警告消息。目前只是说“公式对象的右手边是错误的”不是很有帮助。
  • 好的,我已经添加了基本代码,并产生了各种警告消息。

标签: r package formula


【解决方案1】:

如果您还使用数据参数,则不应使用前缀 temp$。提供数据参数的全部目的是允许在公式中删除这些参数。

seerCox <- coxph( Surv(sur, index) ~ . , data=temp4, singular.ok=TRUE)

以上将使用temp data.frame 中的所有 x 变量。这将只使用前 3 个:

seerCox <- coxph( Surv(sur, index) ~ x1+x2+x3 , data=temp4)

警告的确切含义取决于数据(从某种意义上说,您已经通过使用不同的子集产生不同类型的共线性来举例说明。)如果您有共线列,那么您会在模型矩阵的反演中得到奇点,并且该软件将尝试删除别名列并发出警告。这实际上是在告诉您,您没有足够的数据来构建您正在尝试的大型模型。通过table 调用来探索这种可能性通常会提供很多信息。

底线:这不是您的公式构造的问题,而是不了解所选方法对您组装的数据集的限制的问题。你需要更加小心地定义你的目标。这项研究的最高优先级是什么?你真的需要每个变量吗?是否可以将这些匿名变量中的一些聚合成具有临床意义的类别,例如诊断类别或合并症?

【讨论】:

  • 我可以在通过 coxph 函数运行表格之前手动更改表格的格式以防止出现任何奇点吗?如果是这样,什么是更好的格式?如果我替换“。”会发生什么。是 1 还是 0?
  • 没有。我解释了这个问题。您没有足够的数据。替换“。” 1 给出组平均值。用 0 替换可能会得到相同的结果,并且可能会引发错误。谈论无截距生存函数实际上没有任何意义,因为截距实际上是始终需要估计的基线生存。
  • 好的,谢谢。抱歉,我在看到您对原始帖子的修改之前发表了评论。
猜你喜欢
  • 2021-08-10
  • 2021-04-19
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多