反向倾向治疗加权的Cox回归

时间:2018-05-29 18:39:10

标签: r cox

正常的Cox回归如下:

  

coxph(formula = Surv(time, status) ~ v1 + v2 + v3, data = x)

我已经计算了反向倾向治疗加权(IPTW)评分以及随后的倾向评分。

倾向得分可按如下方式计算:

  

ps<-glm(treat~v1+v2+v3, family="binomial", data=x)

用于IPTW的权重计算如下:

  

weight <- ifelse (treat==1, 1/(ps), 1/(1-ps))

数据集中的每个主题都可以使用上述方法进行加权(每个主题确实得到一个特定的权重,如上所述计算),但我认为没有地方可以将权重放在“正常”中。 Cox回归公式。

是否存在Cox回归公式,其中我们可以评估每个受试者的计算权重以及用于这些计算的R包或代码?

2 个答案:

答案 0 :(得分:1)

倾向得分加权方法  (逆概率加权法) R用于以下统计分析。

  • 加载以下R包:

    library(ipw)
    library(survival)
    
  • 基于变量的数据框(基本模型)中每个ID的估算倾向得分。

    倾向得分是在给定协变量(v)存在的情况下分配治疗的概率。 如您的数据所示,

    PS estimation
    ps_model <- glm(treatment~v1+v2+v3...., family = binomial, data = base_model)
    summary(ps_model)
    
    # view propensity score values
    pscore <- ps_model$fitted.values
    dataframe$propensityScore <- predict(ps_model, type = "response")
    
  • 计算重量

          #estimate weight for each patient
          base_model$weight.ATE <- ifelse((base_model$treatment=="1"),(1/base_model$propensityScore), (1/(1-base_model$propensityScore)))
    
          base_weight <- ipwpoint(exposure = treatment, family = "binomial", link="logit", numerator = ~1,  denominator =~v1+v2+v3....vn, data = base_model, trunc=0.05) #truncation of 5% for few extreme weights if needed
    
  • 生存分析:Cox回归

          #time to event analysis with weights
          HR5 <- coxph(Surv(time, event)~as.factor(treat_group), weights = weights.trunc, data = base_model) 
          summary(HR5)
    
根据先前估计的权重添加了

weights 参数。

  • cobalt或R的tableOne软件包将帮助您查看倾向得分加权前后的特征平衡。

祝你好运!

答案 1 :(得分:0)

您可以使用iptwsurvival软件包中的DIVAT数据集来做到这一点:

##Generate ID
DIVAT$ID<- 1:nrow(DIVAT)

我们可以将IPTW计算为平均治疗效果,而不是被治疗者之间的平均治疗效果

DIVAT$p.score <- glm(retransplant ~ age + hla, data = DIVAT, 
                 family = "binomial")$fitted.values

DIVAT$ate.weights <- with(DIVAT, retransplant * 1/p.score + (1-retransplant)* 1/(1-p.score))

比我们可以执行的Cox回归

####COX without weight
coxph(Surv(times, failures)~ retransplant, data=DIVAT)->fit
summary(fit)

增加体重很容易

###COX with weight naive model
coxph(Surv(times, failures)~ retransplant, data=DIVAT, weights = ate.weights)->fit
summary(fit)
###COX with weight and robust estimation
coxph(Surv(times, failures)~ retransplant + cluster(ID), data=DIVAT, weights = ate.weights)->fit
summary(fit)

但是,以这种方式,标准误的估计是有偏差的(请参见Austin,Peter C.“在将生存权分析与治疗加权加权(IPTW)结合使用时的方差估计。”医学统计35.30(2016):5642 -5655。)。 奥斯汀建议依赖自举估计器。但是,我也被堆叠在一起,因为我无法找到一种执行这种分析的方法。如果您找到任何答案,请告诉我。

相关问题