@@ -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