grf-labs/policytree

DR scores outside of 0-1 for binary outcomes

Opened this issue · 1 comments

Thank you for the package! I'm trying to estimate double robust scores for a binary outcome variable. However, when using double_robust_scores(), I get gamma values outside of 0-1. I can reproduce this with the example in the package but a binary outcome variable.

# library(policytree)
n <- 250
p <- 10
X <- matrix(rnorm(n * p), n, p)
W <- as.factor(sample(c("A", "B", "C"), n, replace = TRUE))
Y <- sample(c(0, 1), n, replace = TRUE) # new outcome variable 
multi.forest <- grf::multi_arm_causal_forest(X, Y, W)

# Compute doubly robust reward estimates.
Gamma.matrix <- double_robust_scores(multi.forest)
summary(Gamma.matrix)

   A                 B                 C          
 Min.   :-1.2928   Min.   :-1.8635   Min.   :-1.3356  
 1st Qu.: 0.4616   1st Qu.: 0.5229   1st Qu.: 0.3900  
 Median : 0.4968   Median : 0.5512   Median : 0.4283  
 Mean   : 0.4956   Mean   : 0.5451   Mean   : 0.4237  
 3rd Qu.: 0.5376   3rd Qu.: 0.5911   3rd Qu.: 0.4581  
 Max.   : 2.4399   Max.   : 2.4520   Max.   : 2.6737  

That's right; the DR scores used with AIPW are not bounded within the range of the Y. This is simply a consequence of how DR scores are obtained; and doing something direct like thresholding DR scores into the range of the data might actually bias the algorithm.

There are other alternatives to AIPW that avoid this unboundedness issue; see, e.g., the following. However, that's not what's implemented/used here.

Tan, Zhiqiang. "Bounded, efficient and doubly robust estimation with inverse weighting." Biometrika 97.3 (2010): 661-682.