Skip to content

Commit db74e05

Browse files
committed
add a warning if a learner ml_g is specified (but not needed) with score partialling out
1 parent 7dcbceb commit db74e05

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

doubleml/double_ml_pliv.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,13 @@ def __init__(self,
145145
_ = self._check_learner(ml_r, 'ml_r', regressor=True, classifier=False)
146146
self._learner = {'ml_l': ml_l, 'ml_m': ml_m, 'ml_r': ml_r}
147147
if ml_g is not None:
148-
_ = self._check_learner(ml_g, 'ml_g', regressor=True, classifier=False)
149148
if (isinstance(self.score, str) & (self.score == 'IV-type')) | callable(self.score):
149+
_ = self._check_learner(ml_g, 'ml_g', regressor=True, classifier=False)
150150
self._learner['ml_g'] = ml_g
151-
# Question: Add a warning when ml_g is set for partialling out score where it is not required / used?
151+
else:
152+
assert (isinstance(self.score, str) & (self.score == 'partialling out'))
153+
warnings.warn(('A learner ml_g has been provided for score = "partialling out" but will be ignored. "'
154+
'A learner ml_g is not required for estimation.'))
152155
elif isinstance(self.score, str) & (self.score == 'IV-type'):
153156
raise ValueError("For score = 'IV-type', learners ml_l, ml_m, ml_r and ml_g need to be specified.")
154157
self._predict_method = {'ml_l': 'predict', 'ml_m': 'predict', 'ml_r': 'predict'}

doubleml/double_ml_plr.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,13 @@ def __init__(self,
136136
self._learner = {'ml_l': ml_l, 'ml_m': ml_m}
137137

138138
if ml_g is not None:
139-
_ = self._check_learner(ml_g, 'ml_g', regressor=True, classifier=False)
140139
if (isinstance(self.score, str) & (self.score == 'IV-type')) | callable(self.score):
140+
_ = self._check_learner(ml_g, 'ml_g', regressor=True, classifier=False)
141141
self._learner['ml_g'] = ml_g
142-
# Question: Add a warning when ml_g is set for partialling out score where it is not required / used?
142+
else:
143+
assert (isinstance(self.score, str) & (self.score == 'partialling out'))
144+
warnings.warn(('A learner ml_g has been provided for score = "partialling out" but will be ignored. "'
145+
'A learner ml_g is not required for estimation.'))
143146
elif isinstance(self.score, str) & (self.score == 'IV-type'):
144147
warnings.warn(("For score = 'IV-type', learners ml_l and ml_g should be specified. "
145148
"Set ml_g = clone(ml_l)."))

0 commit comments

Comments
 (0)