Skip to content

Commit ce4fec5

Browse files
committed
add routing for drscorer and tester
Signed-off-by: kgao <[email protected]>
1 parent 85324a6 commit ce4fec5

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

econml/score/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
"""
88

99
from .rscorer import RScorer
10+
from .drscorer import DRScorer
1011
from .ensemble_cate import EnsembleCateEstimator
1112

1213
__all__ = ['RScorer',
14+
'DRScorer',
1315
'EnsembleCateEstimator']

econml/score/drscorer.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -206,18 +206,21 @@ def score(self, cate_model):
206206
score : double
207207
An analogue of the DR-square loss for the causal setting.
208208
"""
209-
Ydr = self.drlearner_.model_final
209+
g, p = self.drlearner_._cached_values.nuisances
210+
Y = self.drlearner_._cached_values.Y
211+
T = self.drlearner_._cached_values.T
212+
Ydr = g + (Y - g) / p * T
210213
X = self.drlearner_._cached_values.W[:, :self.dx_]
211214
sample_weight = self.drlearner_._cached_values.sample_weight
212215
if Ydr.ndim == 1:
213216
Ydr = Ydr.reshape((-1, 1))
214-
215-
cate = cate_model.const_marginal_effect(X).reshape((-1, Ydr.shape[1]))
216217

218+
effects = cate_model.const_marginal_effect(X).reshape((-1, Ydr.shape[1]))
219+
217220
if sample_weight is not None:
218-
return 1 - np.mean(np.average((Ydr - cate)**2, weights=sample_weight, axis=0)) / self.base_score_
221+
return 1 - np.mean(np.average((Ydr - effects)**2, weights=sample_weight, axis=0)) / self.base_score_
219222
else:
220-
return 1 - np.mean((Ydr - cate) ** 2) / self.base_score_
223+
return 1 - np.mean((Ydr - effects) ** 2) / self.base_score_
221224

222225
def best_model(self, cate_models, return_scores=False):
223226
""" Chooses the best among a list of models

0 commit comments

Comments
 (0)