如何使用R估计Cox模型中的基线危害函数


13

我需要估计基线风险函数以时间依赖性Cox模型λ0(t)

λ(t)=λ0(t)exp(Z(t)β)

在我学习生存过程时,我记得累积危险函数的直接导数()并不是一个好的估计器,因为Breslow估计器提供了阶跃函数。λ0(t)dt=dΛ0(t)

那么,R中是否可以直接使用任何函数?或对此主题有任何参考吗?

我不确定是否值得提出另一个问题,所以我只添加一些背景,为什么基线危害功能对我很重要。下面的公式估算一个受试者的生存时间大于另一个受试者的生存时间的概率。在Cox模型设置下,需要基线危险函数。 λ0(t)

P(T1>T2)=0S1(t)dS2(t)=0S1(t)S2(t)λ2(t)dt




本文的公式(4)给出了一个估计。jstor.org/stable/2530904
艺龙

Answers:


20

明确设计了Cox模型,以能够估计危险比,不必估计基线危险函数。这是一个优点和缺点。优点是您无法在未估计的函数中出错。这是真正的优势,也是人们将其称为“半参数”的原因,并且很大程度上是其受欢迎程度的原因。但是,这也是一个真正的弱点,因为一旦您想知道除危险比以外的其他内容,您通常将需要基线危险函数,而这违背了Cox模型的初衷。

因此,仅当我对危险比感兴趣时,我才倾向于使用Cox模型。如果我想知道其他事情,我通常会转到其他模型,例如此处讨论的模型:http : //www.stata.com/bookstore/flexible-parametric-survival-analysis-stata/


2
+1这是对基准危害数据
wws509 / notes /

3

基线危害函数可以使用“ basehaz”函数在R中进行估算。“帮助”文件指出它是“预测生存”功能,显然不是。如果检查代码,则很明显是survfit对象的累积危害函数。为了进一步提高灵活性,默认设置是centered=TRUEa)不是基线危险函数(顾名思义),并且b)使用实时预测,在任何实际意义上均被公认为有效。

到您之前的要点:是的,此函数使用了step函数。您可以使用平滑将该输出转换为危险函数。最糟糕的是,该预测的不确定性间隔是多少?如果可以获得的话,您可能会获得菲尔兹奖章。我不认为我们甚至不知道引导程序是否有效。

举个例子:

set.seed(1234)
x <- rweibull(1000, 2, 3)
coxfit <- coxph(Surv(x) ~ 1)
bhest <- basehaz(coxfit)
haz <- exp(diff(bhest[, 1])*diff(bhest[, 2]))
time <- (bhest[-1,2] + bhest[-1000, 2])/2
b <- 2^-3

curve(3*b*x, from=0, to=max(x), xlab='Survival time', ylab='Weibull hazard')
points(t <- bhest[-1,2], h <- diff(bhest[, 1])/diff(bhest[, 2]), col='grey')
smooth <- loess.smooth(t, h)
lines(smooth$x, smooth$y, col='red')
legend('topright', lty=c(1,1,0), col=c('black', 'red', 'grey'), pch=c(NA,NA,1), c('Actual hazard fun', 'Smoothed hazard fun', 'Stepped discrete-time hazards'), bg='white')

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.