别人的例子
image.png image.png自己的例子
只是转换变量为因子
library(dplyr)
library(forcats)
library(survival)
N <- 20
df <- data.frame(
time=rexp(N),
event=as.integer(rbinom(N, 1, .5)),
treatment_=c(rep("control", N/2), rep("active", N/2)))
str(df)
df$treatment_=factor(df$treatment_,levels = c("active","control"))
#In the model summary below, exp(coef) for "treatment_control" is the hazard ratio of control:active , where active is the "reference" since it is alphabetically before "control"
cox1 <- coxph(Surv(time, event) ~ treatment_, data=df)
print(cox1)
# Call:
# coxph(formula = Surv(time, event) ~ treatment_, data = df)
#
# coef exp(coef) se(coef) z p
# treatment_control 0.3021 1.3527 0.6885 0.439 0.661
#
# Likelihood ratio test=0.19 on 1 df, p=0.6593
# n= 20, number of events= 9
## reverse
df$treatment_=factor(df$treatment_,levels = c("control","active"))
#df$treatment_ <- df$treatment_ %>% as.factor() %>% forcats::fct_rev()
cox2 <- coxph(Surv(time, event) ~ treatment_, data=df)
print(cox2)
# Call:
# coxph(formula = Surv(time, event) ~ treatment_, data = df)
#
# coef exp(coef) se(coef) z p
# treatment_active -0.3021 0.7393 0.6885 -0.439 0.661
#
# Likelihood ratio test=0.19 on 1 df, p=0.6593
# n= 20, number of events= 9
HR=exp(coef)
设置因子为0和1
## set 0,1
df$treatment_class=ifelse(df$treatment_ =="control",1,2)
## df$treatment_class=factor(df$treatment_class,levels = c(1,2)) ## not run
cox3 <- coxph(Surv(time, event) ~ treatment_class, data=df)
print(cox3)
#
# Call:
# coxph(formula = Surv(time, event) ~ treatment_class, data = df)
#
# coef exp(coef) se(coef) z p
# treatment_class2 -0.3021 0.7393 0.6885 -0.439 0.661
#
# Likelihood ratio test=0.19 on 1 df, p=0.6593
# n= 20, number of events= 9
总的对比来说,如果变量改成1和2,reference一般是1的那个,如果设置了factor,那一般是左边那个。
网友评论