区间删失,但不是正确的审查,认为X矩阵对于考克斯的时间变量是奇异的

时间:2018-04-17 23:03:22

标签: r survival-analysis cox-regression

背景

我正在使用Cox比例风险模型来研究每年记录的几种时变协变量对树木死亡率的影响。时变协变量是年度气候变量,意味着它们在每个主题t时是相同的,但每个主题的时间不同。我想知道干旱如何导致树木死亡率的危害,但是当数据以计数过程格式排列时,每个受试者的干旱值相同t(即每行为一年,受试者有多行data setup显示的数据,直到最后一行表示死亡年份。

根据Surv()文档列出的说明,即使我的时间间隔仅相隔1步,也必须考虑计数过程样式数据的开始和结束时间(1:2,2: 3,3:4等)。

fit1 <- coxph(Surv(tstart,tstop,status) ~ x1 + x2, data = datt)

这会产生所讨论的问题here,并显示错误消息:&#39; X矩阵被视为单数&#39;。在这个链接上,Therneau博士解释说&#34; Cox模型比较了协变量的值 每个受试者死于那些没有死亡的人的价值,使用 此时的当前协变量值。既然你的价值是&#34; t&#34;总是一个 该集合中的常量不包含用于区分的信息 来自非事件的事件。零信息 - &gt;系数为NA。 &#34;

在这里找到真正的问题

我可以简单地通过假设正确审查而不是间隔审查的编码技巧来解决这个奇点问题,我认为考虑到我的间隔每个只包含一个时间步,我觉得有点好。

因为数据仍处于计数过程风格,但每个主题都有多行数据;我通过在公式中添加cluster(id)参数来解释这一点(尽管不需要聚类参数来解决奇点问题)。

fit2 <- coxph(Surv(tstop,status) ~ x1 + x2 + cluster(id), data = datt)

换句话说,简单地通过将时间视为点而不是间隔来确定错误消息所指示的显然perfect classification。因此,似乎Surv()查看当时的协变量值&#39;当时间是一个间隔,但不是时间是一个点。

虽然这种方法产生了直观的结果(例如,干旱变量的风险比> 1),但是相互作用的假设被违反了,我仍然感觉我没有被欺骗过#39 ; Surv(),但我创造了一些虚假的结果(尽管非常直观的结果)。

我的问题如下

1)Surv()如何处理这两种情况,结果不同?我的印象是基于Therneau博士的小插图陈述,以及随时可能性方程 point只使用任何主题的一个副本,程序会在每个主题中选出正确的数据行 时间&#34;正如here所描述的那样,但如果是这种情况,我是否应该为这两种情况得到相同的错误?

2)正在考虑对我的数据进行权利审查,并考虑对这个问题采取可接受的解决方案来解决这个问题,或者代码是否在意外做某事?

3)如果我对此的看法完全错误,是否有更好的方法来包含这些年度气候变量,以便我可以解决我的研究问题?

4)如果我对此的想法并非完全错误,并按照描述继续使用fit2,我是否需要为包含我的非比例的所有变量交互添加tt()个参数危害诱导变量,干旱?

fit3 <- coxph(Surv(tstop,status) ~
     x1 + x2 + tt(x2) + x1*x2 + tt(x1*x2) + cluster(id), 
   data = datt, tt = function(x,t,...) x*log(t))

非常感谢您的时间,如果这个问题更适合Cross Validated,请原谅我(毕竟这是我的第一个问题)。

0 个答案:

没有答案