1

一个正常的 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 包或代码?

4

2 回答 2

3

倾向得分加权法 (逆概率加权法)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 包将帮助您查看倾向得分加权之前和之后的特征平衡。

祝你好运!

于 2019-08-07T09:23:05.617 回答
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.“Variance estimation when using inverse probability of treatment weighting (IPTW) with Survival analysis.” Statistics in Medicine 35.30 (2016): 5642-5655。 )。奥斯汀建议依靠引导估计器。但是我也很累,因为我无法找到执行此类分析的方法。如果您找到任何答案,请告诉我。

于 2019-03-31T15:04:34.090 回答