我有一个 Cox 回归模型如下:
library(dplyr)
library(survival)
library(eha)
df <- data.frame(id = c("a", "a", "a", "b", "b", "c", "c", "c"),
sex = c("0", "0", "0", "1", "1", "0", "0", "0"),
start = c(0, 1, 5, 0, 7, 0, 2, 10),
stop = c(1, 5, 10, 7, 18, 2, 10, 19),
status = c(1, 1, 0, 1, 0, 1, 1, 0))
id sex start stop status
1 a 0 0 1 1
2 a 0 1 5 1
3 a 0 5 10 0
4 b 1 0 7 1
5 b 1 7 18 0
6 c 0 0 2 1
7 c 0 2 10 1
8 c 0 10 19 0
# Sex violates proportional hazards
logrank(Surv(start, stop, status), group = sex, data = df)
# Regression
fit <- coxph(Surv(start, stop, status) ~ strata(sex) + cluster(id), data = df)
cluster(id)
代表针对重复事件的 Anderson-Gill 模型 的实现。我想据此估计(非累积)风险函数。
我知道我可以使用以下方法获得累积基线危险:
# Cumulative hazard
basehaz(fit)
但是如何获得非累积风险呢?如有任何帮助,我们将不胜感激。
basehaz
函数将返回分层模型的结果。本质上,它将分析分解为特定阶层的危害:
df <- data.frame(id = c("a", "a", "a", "b", "b", "c", "c", "c"),
sex = c("0", "0", "0", "1", "1", "0", "0", "0"),
start = c(0, 1, 5, 0, 7, 0, 2, 10),
stop = c(1, 5, 10, 7, 18, 2, 10, 19),
status = c(1, 1, 0, 1, 0, 1, 1, 0))
fit <- coxph(Surv(start, stop, status) ~ strata(sex) + cluster(id), data = df)
basehaz(fit)
#------
hazard time strata
1 0.5 1 0
2 1.0 2 0
3 1.5 5 0
4 2.0 10 0
5 2.0 19 0
6 1.0 7 1
7 1.0 18 1