Регрессия Кокса с взвешиванием с обращенной склонностью
Обычная регрессия Кокса выглядит следующим образом:
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.). Остин предложил положиться на оценщик начальной загрузки. Однако я тоже сложен, так как не могу найти способ провести такой анализ. Если вы нашли ответ, пожалуйста, дайте мне знать.