Use the provided propensity scores to trim subjects with extreme scores or weights.
Usage
trimByPs(population, trimByPsArgs = createTrimByPsArgs(trimFraction = 0.05))Arguments
- population
A data frame with the three columns described below
- trimByPsArgs
An object of type
trimByPsArgsas created by thecreateTrimByPsArgs()function.
Details
The data frame should have the following three columns:
rowId (numeric): A unique identifier for each row (e.g. the person ID).
treatment (integer): Column indicating whether the person is in the target (1) or comparator (0) group.
propensityScore (numeric): Propensity score.
Examples
rowId <- 1:2000
treatment <- rep(0:1, each = 1000)
propensityScore <- c(runif(1000, min = 0, max = 1), runif(1000, min = 0, max = 1))
iptw <- ifelse(treatment == 1,
mean(treatment == 1) / propensityScore,
mean(treatment == 0) / (1 - propensityScore))
data <- data.frame(rowId = rowId,
treatment = treatment,
propensityScore = propensityScore,
iptw = iptw)
result1 <- trimByPs(data, createTrimByPsArgs(trimFraction = 0.05))
#> Trimming removed 113 (11.3%) rows from the target, 104 (10.4%) rows from the comparator in total.
result2 <- trimByPs(data, createTrimByPsArgs(equipoiseBounds = c(0.3, 0.7)))
#> Trimming removed 625 (62.5%) rows from the target, 618 (61.8%) rows from the comparator in total.
result3 <- trimByPs(data, createTrimByPsArgs(maxWeight = 10))
#> Trimming removed 62 (6.2%) rows from the target, 53 (5.3%) rows from the comparator in total.