I am trying to understand why the imbalance command produces a univariate L1 measurement
of 0 on a variable (readscore6) that has significant imbalance (ctl mean = 83.9, trt mean
= 76.0, ttest p<.001, standardized mean difference from MatchIt = -1.5385). I figure
this must be because of the automatic breakpoints, so I examine how the univariate L1
measure changes using the L1.profile command (dropping all other variables). The L1
reportedly varies from 0 to 0.59 in the sets of cutpoints examined. I replicate 3 of these
L1 measurements precisely "by hand" and they seem correct. But when I add breaks
to the imbalance command, I cannot replicate the L1 values produced in L1.profile. Any
idea what is going on here? Thanks in advance for any insights.
Additional details follow:
Univariate L1 is 0, even though multivariate L1 is 0.563 and imbalance test is restricted
to single variable "readscore6":
imbalance(group=kids$trt,data=kids,drop=c("trt","readscore7","female","aptitude"))
Multivariate Imbalance Measure: L1=0.563
Percentage of local common support: LCS=57.1%
Univariate Imbalance Measures:
statistic type L1 min 25% 50% 75% max
readscore6 -16.45865 (diff) 0 -21 -18 -19 -21 -11
L1 varies between 0 and 0.59 in a small sample of sets of cutpoints:
a<-L1.profile(group=kids$trt,data=kids,drop=c("trt","readscore7","female","aptitude"),M=5)
a$L1
rnd(4) rnd(3) rnd(5) rnd(1)
rnd(2)
0.0000000 0.4601504 0.4969925 0.5631579 0.5872180
a$CP
$`rnd(4)`
$`rnd(4)`$readscore6
[1] 38 97
$`rnd(3)`
$`rnd(3)`$readscore6
[1] 38.00 52.75 67.50 82.25 97.00
$`rnd(5)`
$`rnd(5)`$readscore6
[1] 38.00000 57.66667 77.33333 97.00000
$`rnd(1)`
$`rnd(1)`$readscore6
[1] 38.00000 44.55556 51.11111 57.66667 64.22222 70.77778 77.33333 83.88889 90.44444
97.00000
$`rnd(2)`
$`rnd(2)`$readscore6
[1] 38.000 45.375 52.750 60.125 67.500 74.875 82.250 89.625 97.000
Cannot seem to replicate these L1 values in the imbalance command, specifying the same
cutpoints:
E.g. specifying 2 cutpoints (1 bin) produces L1 of 0.563 (should be 0 according to
L1.profile as well as my understanding of how L1 is calculated)
imbalance(group=kids$trt,data=kids,drop=c("trt","readscore7","female","aptitude"),breaks=list((readscore6=c(38,97))))
Multivariate Imbalance Measure: L1=0.563
Percentage of local common support: LCS=57.1%
Univariate Imbalance Measures:
statistic type L1 min 25% 50% 75% max
readscore6 -16.45865 (diff) 0.5631579 -21 -18 -19 -21 -11
E.g. specifying 5 cutpoints (4 bins) produces L1 of 0.563 (should be 0.46 according to
L1.profile)
imbalance(group=kids$trt,data=kids,drop=c("trt","readscore7","female","aptitude"),breaks=list((readscore6=c(38.00,52.75,67.50,82.25,97.00))))
Multivariate Imbalance Measure: L1=0.563
Percentage of local common support: LCS=57.1%
Univariate Imbalance Measures:
statistic type L1 min 25% 50% 75% max
readscore6 -16.45865 (diff) 0.5631579 -21 -18 -19 -21 -11
Bridget Lavelle, Ph.D.
Senior Research Manager
Program Research and Evaluation Section
Research and Data Analysis Division
Department of Social and Health Services
PO Box 45204 Olympia, WA 98504-5204
Fax: (360) 902-0705
Email: Bridget.Lavelle@dshs.wa.gov<mailto:Bridget.Lavelle@dshs.wa.gov>
Telephone: (360) 902-0741