多因素cox回归分析reference的问题

2023-03-28  本文已影响0人  xiaosine

别人的例子

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,那一般是左边那个。

上一篇下一篇

猜你喜欢

热点阅读