首页 > 解决方案 > 具有逆倾向治疗加权的 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 包或代码?

标签: rcox

解决方案


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

  • 加载以下 R 包:

    library(ipw)
    library(survival)
    
  • 根据变量估计数据框 (base_model) 中每个 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参数是根据之前的估计权重添加的。

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

祝你好运!


推荐阅读