I have some doubts about how to recognize if there are extreme weights after balancing my population with inverse probability treatment weighting.
For instance, let's look at these results [code at the end of the post] - I know that age is not perfectly balanced but it doesn't matter as it is just an example:
M.0.Adj = Weighted mean-weighted rate for the non-treated population / SD.0.Adj = Standard Deviation in non-treated / M.1.Adj = Weighted mean-weighted rate for the treated population / SD.1.Adj = Standard Deviation in treated / Diff.adj = Standardized Mean Difference / V.Ratio.Adj = The ratio of the variances of the two groups after adjusting
Moreover, these are a density plot with the propensity scores and a histogram with weights I made:
This is an example of the balance achieved (I don't know if it is useful in this context):
What to I have to look at in order to know if there are extreme weights? Do I have to look at the plots? How can I know if I balanced correctly and there are no problems caused by extreme weights so that I don't have to take further action to correct them (e.g. trimming ...)? I don't know how to "recognize" the extreme weights.
For those who prefer to have the code:
library(cobalt)
library(WeightIt)
library(dplyr)
data("lalonde", package = "cobalt")
W.out <- weightit(treat ~ age + educ + race + married + nodegree + re74 + re75,
data = lalonde, estimand = "ATT", method = "ps")
lalonde <- lalonde %>% mutate(weights = W.out$weights)
lalonde <- lalonde %>% mutate(ps = W.out$ps)
summary(W.out)
bal.tab(W.out, stats = c("m", "v"), thresholds = c(m = .10), disp=c("means", "sds"))
library(ggplot2)
ggplot(lalonde, aes(x = ps, fill = as.factor(treat))) +
geom_density(alpha = 0.5, colour = "grey50") +
geom_rug() +
scale_x_log10(breaks = c(1, 5, 10, 20, 40)) +
ggtitle("Distribution of propensity scores")
library(weights)
wtd.hist(W.out$weights)