ipw
написано так, что очень трудно ввести формулу динамически. Это было одной из причин, по которой мне пришлось написать пакет WeightIt
, который имеет такую же функциональность (во всех, кроме нескольких редких случаев). Кроме того, в моем пакете cobalt
есть функция f.build()
, которая создает формулу из своих входных данных.
Вы можете заменить несколько последних строк кода следующим:
f1 <- f.build("group", covars)
w.out <- weightit(f1, data = df, estimand = "ATE")
w.out2 <- trim(w.out, .01, lower = TRUE)
Здесь f1
- ваша формула, созданная f.build
. Таким образом, вы можете переключаться между несколькими переменными обработки в первом аргументе. Вторым аргументом может быть либо вектор имен ковариат, либо data.frame самих ковариат. w.out
- это weightit
объект, содержащий веса, оцененные как weightit()
. По умолчанию используется логистическая регрессия, но это можно изменить. (Я заметил, что истинные предрасположенности к лечению были получены с использованием пробит-модели, которую можно запросить в weightit
с link = "probit"
.)
Похоже, вы хотели урезать веса на первом и 99-м процентилях, что и делает trim
. По умолчанию он обрезает только самые высокие веса, поэтому я установил lower = TRUE
, чтобы также обрезать более низкие веса. В общем, вы должны проверять ковариатный баланс и изменчивость ваших весов перед обрезкой, если не обрезанных весов достаточно. cobalt
предназначен для оценки баланса и совместим с WeightIt
. Ниже описано, как вы можете оценить баланс на weightit
объекте:
bal.tab(w.out, un = TRUE)
Вы также можете сравнить урезанные и не урезанные веса:
bal.tab(f1, data = df, un = TRUE,
weights = list(untrimmed = w.out$weights,
trimmed = w.out2$weights))
Когда вы будете готовы оценить свой лечебный эффект, вы можете просто извлечь веса из объекта weightit
. Я использую пакет jtools
, чтобы получить надежные стандартные ошибки, которые необходимы для взвешивания PS:
w1 <- w.out$weights
jtools::summ(lm(metric ~ group, data = df, weights = w1),
robust = TRUE, confint = TRUE)
Существует множество документации по WeightIt
и cobalt
. Я надеюсь, что вы найдете их полезными!