Регрессия Кокса с взвешиванием с обращенной склонностью

Обычная регрессия Кокса выглядит следующим образом:

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))

Каждый субъект в наборе данных может быть взвешен с помощью вышеупомянутого метода (каждый субъект получает определенный вес, рассчитанный, как указано выше), но я не вижу места для того, чтобы поместить веса в "нормальную" формулу регрессии Кокса.

Возникают следующие вопросы: существует ли формула регрессии Кокса, в которой мы можем оценить рассчитанные веса для каждого субъекта и какой пакет или код R используется для этих вычислений; если у кого-то есть литература, я бы хотел ее прочитать!

0 ответов

Метод взвешивания оценки склонности (метод взвешивания обратной вероятности) R был использован для следующего статистического анализа.

  • Загрузите следующие пакеты R:

    library(ipw)
    library(survival)
    
  • Оцените оценку склонности для каждого идентификатора во фрейме данных (base_model) на основе переменных.

    Оценка предрасположенности - это вероятность назначения лечения при наличии заданных ковариат (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
    
  • Анализ выживаемости: регрессия Кокса

          #time to event analysis with weights
          HR5 <- coxph(Surv(time, event)~as.factor(treat_group), weights = weights.trunc, data = base_model) 
          summary(HR5)
    

Аргумент весов был добавлен на основе ранее оцененных весов.

  • cobalt или tableOne пакеты R помогут вам увидеть баланс характеристик до и после взвешивания оценок склонностей.

Удачи!

Вы можете сделать это, используя набор данных DIVAT из пакета iptwsurvival:

##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 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)

Тем не менее, таким образом оценка стандартной ошибки является предвзятой (см. Остин, Питер С. "Оценка отклонений при использовании обратной вероятности взвешивания лечения (IPTW) с анализом выживаемости". Статистика в медицине 35.30 (2016): 5642-5655.). Остин предложил положиться на оценщик начальной загрузки. Однако я тоже сложен, так как не могу найти способ провести такой анализ. Если вы нашли ответ, пожалуйста, дайте мне знать.

Другие вопросы по тегам