R 中的事件发生时间分析,以探索生物标志物对事件风险的影响
Time to event analysis in R to explore the effect of a biomarker on an event risk
在 R 中,我分析事件发生时间数据以探索生物标志物对事件风险的影响,并根据性别进行调整。为此,我使用看起来像这个玩具数据集的数据:
> head(data)
pt sex age_baseline t_event death t_stop biomarker
1 1 M 24345 3632 0 3981 0.22
2 2 F 25951 1121 0 3693 0.14
3 3 F 26900 NA 0 4437 0.04
4 4 F 27521 4896 1 5420 0.35
5 5 F 25660 NA 0 4035 0.25
列说明:
- pt: 个人ID
- 性别: 性别(M=男,F=女)
- age_baseline:研究开始时个体的年龄(以天为单位)
- t_stop:基线和死亡之间的时间(以天为单位)/最后一条消息
- 死亡:死亡(0=否,1=是)
- t_event:基线与第一次事件发生之间的时间(以天为单位)(NA = 无事件)
- 生物标志物:基线时的生物标志物水平
为了清楚起见,一个人可能会经历事件 x,然后死于不相关的原因。
为此,我想使用 coxph()
R 函数来计算 Cox 模型。
我想到了下面的代码:
coxph(
Surv(time = age_baseline, time2 = t_stop, event = death) ~ t_event + sex,
data = data.coro)
这对我最初的研究问题有意义吗?如何包含 biomarker
?
此外,Cox 模型是否处理缺失数据(t_event
中的 NA)?
当您想使用 Cox PH 模型时,您的数据集应包含一个 event time
以及是否发生 event
或是否存在审查的信息:
data <- data.frame(pt = seq(1,5), sex = c("M",rep("F",4)), age_baseline = c(24345,25951,26900,27521,25660),
t_event = c(3632,1121,NA,4896,NA), death = c(0,0,0,1,0), t_stop = c(3981,3693,4437,5420,4035),
biomarker = c(0.22,0.14,0.04,0.35,0.25))
# If there is no event, the last follow-up is the censor date
data$t_event[which(is.na(data$t_event))] <- data$t_stop[which(is.na(data$t_event))]
# Adding an event description. If no event, that means the patient gets censored
data$event <- ifelse(is.na(data$t_event),0,1)
既然您同时拥有 event time
和 event
信息(请注意,上面还处理了您的 NA
),您可以使用这两个 sex
构建您的 Cox 模型和 biomarker
作为协变量:
coxph(Surv(t_event, event) ~ sex + biomarker, data = data)
这给出:
> coxph(Surv(t_event, event) ~ sex + biomarker, data = data)
Call:
coxph(formula = Surv(t_event, event) ~ sex + biomarker, data = data)
coef exp(coef) se(coef) z p
sexM 1.38086 3.97831 1.44998 0.952 0.341
biomarker -3.34641 0.03521 4.48310 -0.746 0.455
Likelihood ratio test=1.32 on 2 df, p=0.5167
n= 5, number of events= 5
在 R 中,我分析事件发生时间数据以探索生物标志物对事件风险的影响,并根据性别进行调整。为此,我使用看起来像这个玩具数据集的数据:
> head(data)
pt sex age_baseline t_event death t_stop biomarker
1 1 M 24345 3632 0 3981 0.22
2 2 F 25951 1121 0 3693 0.14
3 3 F 26900 NA 0 4437 0.04
4 4 F 27521 4896 1 5420 0.35
5 5 F 25660 NA 0 4035 0.25
列说明:
- pt: 个人ID
- 性别: 性别(M=男,F=女)
- age_baseline:研究开始时个体的年龄(以天为单位)
- t_stop:基线和死亡之间的时间(以天为单位)/最后一条消息
- 死亡:死亡(0=否,1=是)
- t_event:基线与第一次事件发生之间的时间(以天为单位)(NA = 无事件)
- 生物标志物:基线时的生物标志物水平
为了清楚起见,一个人可能会经历事件 x,然后死于不相关的原因。
为此,我想使用 coxph()
R 函数来计算 Cox 模型。
我想到了下面的代码:
coxph(
Surv(time = age_baseline, time2 = t_stop, event = death) ~ t_event + sex,
data = data.coro)
这对我最初的研究问题有意义吗?如何包含 biomarker
?
此外,Cox 模型是否处理缺失数据(t_event
中的 NA)?
当您想使用 Cox PH 模型时,您的数据集应包含一个 event time
以及是否发生 event
或是否存在审查的信息:
data <- data.frame(pt = seq(1,5), sex = c("M",rep("F",4)), age_baseline = c(24345,25951,26900,27521,25660),
t_event = c(3632,1121,NA,4896,NA), death = c(0,0,0,1,0), t_stop = c(3981,3693,4437,5420,4035),
biomarker = c(0.22,0.14,0.04,0.35,0.25))
# If there is no event, the last follow-up is the censor date
data$t_event[which(is.na(data$t_event))] <- data$t_stop[which(is.na(data$t_event))]
# Adding an event description. If no event, that means the patient gets censored
data$event <- ifelse(is.na(data$t_event),0,1)
既然您同时拥有 event time
和 event
信息(请注意,上面还处理了您的 NA
),您可以使用这两个 sex
构建您的 Cox 模型和 biomarker
作为协变量:
coxph(Surv(t_event, event) ~ sex + biomarker, data = data)
这给出:
> coxph(Surv(t_event, event) ~ sex + biomarker, data = data)
Call:
coxph(formula = Surv(t_event, event) ~ sex + biomarker, data = data)
coef exp(coef) se(coef) z p
sexM 1.38086 3.97831 1.44998 0.952 0.341
biomarker -3.34641 0.03521 4.48310 -0.746 0.455
Likelihood ratio test=1.32 on 2 df, p=0.5167
n= 5, number of events= 5