Регрессия Кокса с взвешиванием с обращенной склонностью - PullRequest
0 голосов
/ 29 мая 2018

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

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 используется для этих вычислений?

Ответы [ 2 ]

0 голосов
/ 07 августа 2019

Метод взвешивания оценки склонности (метод взвешивания обратной вероятности) 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)
    

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

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

Удачи!

0 голосов
/ 31 марта 2019

Вы можете сделать это, используя набор данных 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)

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

...