R中生存统计的基础是图书馆生存。这是您想要做的基础知识示例:使用 Cox 回归或对数秩检验比较两条生存曲线(Kaplan Meyer 曲线)。
library(survival)
library(Hmisc)
dummyex <- data.table(treatment_duration = sample(c(1:10), 50, replace = T),
stopany = sample(c(0,1),50,replace = T),
ID = 1:50)
dummyex[,seropositive := sample(c(0,1),1),by = ID]
这里的变量 seropositive 给了我两条不同的曲线:一条是 seropositive = 1,一条是 seropositive = 0。它相当于你的类别。此处的 stopany 变量是表示您正在研究的事件是否发生的变量。这取决于您的数据中是否丢失了跟进。如果你这样做:
stopanydummy <- survfit(Surv(treatment_duration,stopany)~seropositive,data= dummyex)
它将为血清阳性的 2 个值构建两个生存图。
plot(stopanydummy[1], col = 1,main = "survival plot", xlab = "time",ylab = "proportion of patient still alive")
lines(stopanydummy[2],col = 2)
如果你想比较不同的生存曲线,你没有失去跟进,你将使用函数中实现的对数秩检验
survdiff
。如果您失去跟进,您将使用 Cox 回归来获得风险比:
coxfitsimple <- coxph(Surv(treatment_duration,stopany) ~ seropositive, data=dummyex)
Call:
coxph(formula = Surv(treatment_duration, stopany) ~ seropositive,
data = dummyex)
n= 50, number of events= 28
coef exp(coef) se(coef) z Pr(>|z|)
seropositive -0.3750 0.6873 0.4074 -0.921 0.357
exp(coef) exp(-coef) lower .95 upper .95
seropositive 0.6873 1.455 0.3093 1.527
Concordance= 0.567 (se = 0.056 )
Rsquare= 0.017 (max possible= 0.976 )
Likelihood ratio test= 0.88 on 1 df, p=0.348
Wald test = 0.85 on 1 df, p=0.3573
Score (logrank) test = 0.86 on 1 df, p=0.3546
这里说血清阳性 = 1 具有保护作用(危险比 = 0.69),但 ap 值低(两条曲线之间没有统计学差异)